diff --git a/.eggs/README.txt b/.eggs/README.txt
deleted file mode 100644
index 5d016688..00000000
--- a/.eggs/README.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-This directory contains eggs that were downloaded by setuptools to build, test, and run plug-ins.
-
-This directory caches those eggs to prevent repeated downloads.
-
-However, it is safe to delete this directory.
-
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/EGG-INFO/PKG-INFO b/.eggs/boto3-1.7.75-py2.7.egg/EGG-INFO/PKG-INFO
deleted file mode 100644
index d497e1e4..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/EGG-INFO/PKG-INFO
+++ /dev/null
@@ -1,153 +0,0 @@
-Metadata-Version: 1.1
-Name: boto3
-Version: 1.7.75
-Summary: The AWS SDK for Python
-Home-page: https://github.com/boto/boto3
-Author: Amazon Web Services
-Author-email: UNKNOWN
-License: Apache License 2.0
-Description: ===============================
- Boto 3 - The AWS SDK for Python
- ===============================
-
- |Build Status| |Docs| |Version| |Gitter|
-
- Boto3 is the Amazon Web Services (AWS) Software Development Kit (SDK) for
- Python, which allows Python developers to write software that makes use
- of services like Amazon S3 and Amazon EC2. You can find the latest, most
- up to date, documentation at `Read the Docs`_, including a list of
- services that are supported. To see only those features which have been
- released, check out the `stable docs`_.
-
-
- .. _boto: https://docs.pythonboto.org/
- .. _`stable docs`: https://boto3.readthedocs.io/en/stable/
- .. _`Read the Docs`: https://boto3.readthedocs.io/en/latest/
- .. |Build Status| image:: http://img.shields.io/travis/boto/boto3/develop.svg?style=flat
- :target: https://travis-ci.org/boto/boto3
- :alt: Build Status
- .. |Gitter| image:: https://badges.gitter.im/boto/boto3.svg
- :target: https://gitter.im/boto/boto3
- :alt: Gitter
- .. |Docs| image:: https://readthedocs.org/projects/boto3/badge/?version=latest&style=flat
- :target: https://boto3.readthedocs.io/en/latest/
- :alt: Read the docs
- .. |Downloads| image:: http://img.shields.io/pypi/dm/boto3.svg?style=flat
- :target: https://pypi.python.org/pypi/boto3/
- :alt: Downloads
- .. |Version| image:: http://img.shields.io/pypi/v/boto3.svg?style=flat
- :target: https://pypi.python.org/pypi/boto3/
- :alt: Version
- .. |License| image:: http://img.shields.io/pypi/l/boto3.svg?style=flat
- :target: https://github.com/boto/boto3/blob/develop/LICENSE
- :alt: License
-
- Quick Start
- -----------
- First, install the library and set a default region:
-
- .. code-block:: sh
-
- $ pip install boto3
-
- Next, set up credentials (in e.g. ``~/.aws/credentials``):
-
- .. code-block:: ini
-
- [default]
- aws_access_key_id = YOUR_KEY
- aws_secret_access_key = YOUR_SECRET
-
- Then, set up a default region (in e.g. ``~/.aws/config``):
-
- .. code-block:: ini
-
- [default]
- region=us-east-1
-
- Then, from a Python interpreter:
-
- .. code-block:: python
-
- >>> import boto3
- >>> s3 = boto3.resource('s3')
- >>> for bucket in s3.buckets.all():
- print(bucket.name)
-
- Development
- -----------
-
- Getting Started
- ~~~~~~~~~~~~~~~
- Assuming that you have Python and ``virtualenv`` installed, set up your
- environment and install the required dependencies like this instead of
- the ``pip install boto3`` defined above:
-
- .. code-block:: sh
-
- $ git clone https://github.com/boto/boto3.git
- $ cd boto3
- $ virtualenv venv
- ...
- $ . venv/bin/activate
- $ pip install -r requirements.txt
- $ pip install -e .
-
- Running Tests
- ~~~~~~~~~~~~~
- You can run tests in all supported Python versions using ``tox``. By default,
- it will run all of the unit and functional tests, but you can also specify your own
- ``nosetests`` options. Note that this requires that you have all supported
- versions of Python installed, otherwise you must pass ``-e`` or run the
- ``nosetests`` command directly:
-
- .. code-block:: sh
-
- $ tox
- $ tox -- unit/test_session.py
- $ tox -e py26,py33 -- integration/
-
- You can also run individual tests with your default Python version:
-
- .. code-block:: sh
-
- $ nosetests tests/unit
-
- Generating Documentation
- ~~~~~~~~~~~~~~~~~~~~~~~~
- Sphinx is used for documentation. You can generate HTML locally with the
- following:
-
- .. code-block:: sh
-
- $ pip install -r requirements-docs.txt
- $ cd docs
- $ make html
-
-
- Getting Help
- ------------
-
- We use GitHub issues for tracking bugs and feature requests and have limited
- bandwidth to address them. Please use these community resources for getting
- help:
-
- * Ask a question on `Stack Overflow `__ and tag it with `boto3 `__
- * Come join the AWS Python community chat on `gitter `__
- * Open a support ticket with `AWS Support `__
- * If it turns out that you may have found a bug, please `open an issue `__
-
-Platform: UNKNOWN
-Classifier: Development Status :: 5 - Production/Stable
-Classifier: Intended Audience :: Developers
-Classifier: Natural Language :: English
-Classifier: License :: OSI Approved :: Apache Software License
-Classifier: Programming Language :: Python
-Classifier: Programming Language :: Python :: 2.6
-Classifier: Programming Language :: Python :: 2.7
-Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.3
-Classifier: Programming Language :: Python :: 3.4
-Classifier: Programming Language :: Python :: 3.5
-Classifier: Programming Language :: Python :: 3.6
-Classifier: Programming Language :: Python :: 3.7
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/EGG-INFO/SOURCES.txt b/.eggs/boto3-1.7.75-py2.7.egg/EGG-INFO/SOURCES.txt
deleted file mode 100644
index e28b09f2..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/EGG-INFO/SOURCES.txt
+++ /dev/null
@@ -1,65 +0,0 @@
-CONTRIBUTING.rst
-LICENSE
-MANIFEST.in
-README.rst
-requirements.txt
-setup.cfg
-setup.py
-boto3/__init__.py
-boto3/compat.py
-boto3/exceptions.py
-boto3/session.py
-boto3/utils.py
-boto3.egg-info/PKG-INFO
-boto3.egg-info/SOURCES.txt
-boto3.egg-info/dependency_links.txt
-boto3.egg-info/requires.txt
-boto3.egg-info/top_level.txt
-boto3/data/cloudformation/2010-05-15/resources-1.json
-boto3/data/cloudwatch/2010-08-01/resources-1.json
-boto3/data/dynamodb/2012-08-10/resources-1.json
-boto3/data/ec2/2014-10-01/resources-1.json
-boto3/data/ec2/2015-03-01/resources-1.json
-boto3/data/ec2/2015-04-15/resources-1.json
-boto3/data/ec2/2015-10-01/resources-1.json
-boto3/data/ec2/2016-04-01/resources-1.json
-boto3/data/ec2/2016-09-15/resources-1.json
-boto3/data/ec2/2016-11-15/resources-1.json
-boto3/data/glacier/2012-06-01/resources-1.json
-boto3/data/iam/2010-05-08/resources-1.json
-boto3/data/opsworks/2013-02-18/resources-1.json
-boto3/data/s3/2006-03-01/resources-1.json
-boto3/data/sns/2010-03-31/resources-1.json
-boto3/data/sqs/2012-11-05/resources-1.json
-boto3/docs/__init__.py
-boto3/docs/action.py
-boto3/docs/attr.py
-boto3/docs/base.py
-boto3/docs/client.py
-boto3/docs/collection.py
-boto3/docs/docstring.py
-boto3/docs/method.py
-boto3/docs/resource.py
-boto3/docs/service.py
-boto3/docs/subresource.py
-boto3/docs/utils.py
-boto3/docs/waiter.py
-boto3/dynamodb/__init__.py
-boto3/dynamodb/conditions.py
-boto3/dynamodb/table.py
-boto3/dynamodb/transform.py
-boto3/dynamodb/types.py
-boto3/ec2/__init__.py
-boto3/ec2/createtags.py
-boto3/ec2/deletetags.py
-boto3/resources/__init__.py
-boto3/resources/action.py
-boto3/resources/base.py
-boto3/resources/collection.py
-boto3/resources/factory.py
-boto3/resources/model.py
-boto3/resources/params.py
-boto3/resources/response.py
-boto3/s3/__init__.py
-boto3/s3/inject.py
-boto3/s3/transfer.py
\ No newline at end of file
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/EGG-INFO/dependency_links.txt b/.eggs/boto3-1.7.75-py2.7.egg/EGG-INFO/dependency_links.txt
deleted file mode 100644
index 8b137891..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/EGG-INFO/dependency_links.txt
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/EGG-INFO/not-zip-safe b/.eggs/boto3-1.7.75-py2.7.egg/EGG-INFO/not-zip-safe
deleted file mode 100644
index 8b137891..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/EGG-INFO/not-zip-safe
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/EGG-INFO/requires.txt b/.eggs/boto3-1.7.75-py2.7.egg/EGG-INFO/requires.txt
deleted file mode 100644
index a56e468b..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/EGG-INFO/requires.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-botocore>=1.10.75,<1.11.0
-jmespath>=0.7.1,<1.0.0
-s3transfer>=0.1.10,<0.2.0
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/EGG-INFO/top_level.txt b/.eggs/boto3-1.7.75-py2.7.egg/EGG-INFO/top_level.txt
deleted file mode 100644
index 30ddf823..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/EGG-INFO/top_level.txt
+++ /dev/null
@@ -1 +0,0 @@
-boto3
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/__init__.py b/.eggs/boto3-1.7.75-py2.7.egg/boto3/__init__.py
deleted file mode 100644
index ec3f5417..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/__init__.py
+++ /dev/null
@@ -1,110 +0,0 @@
-# Copyright 2014 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"). You
-# may not use this file except in compliance with the License. A copy of
-# the License is located at
-#
-# http://aws.amazon.com/apache2.0/
-#
-# or in the "license" file accompanying this file. This file 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.
-
-import logging
-
-from boto3.session import Session
-
-
-__author__ = 'Amazon Web Services'
-__version__ = '1.7.75'
-
-
-# The default Boto3 session; autoloaded when needed.
-DEFAULT_SESSION = None
-
-
-def setup_default_session(**kwargs):
- """
- Set up a default session, passing through any parameters to the session
- constructor. There is no need to call this unless you wish to pass custom
- parameters, because a default session will be created for you.
- """
- global DEFAULT_SESSION
- DEFAULT_SESSION = Session(**kwargs)
-
-
-def set_stream_logger(name='boto3', level=logging.DEBUG, format_string=None):
- """
- Add a stream handler for the given name and level to the logging module.
- By default, this logs all boto3 messages to ``stdout``.
-
- >>> import boto3
- >>> boto3.set_stream_logger('boto3.resources', logging.INFO)
-
- For debugging purposes a good choice is to set the stream logger to ``''``
- which is equivalent to saying "log everything".
-
- .. WARNING::
- Be aware that when logging anything from ``'botocore'`` the full wire
- trace will appear in your logs. If your payloads contain sensitive data
- this should not be used in production.
-
- :type name: string
- :param name: Log name
- :type level: int
- :param level: Logging level, e.g. ``logging.INFO``
- :type format_string: str
- :param format_string: Log message format
- """
- if format_string is None:
- format_string = "%(asctime)s %(name)s [%(levelname)s] %(message)s"
-
- logger = logging.getLogger(name)
- logger.setLevel(level)
- handler = logging.StreamHandler()
- handler.setLevel(level)
- formatter = logging.Formatter(format_string)
- handler.setFormatter(formatter)
- logger.addHandler(handler)
-
-
-def _get_default_session():
- """
- Get the default session, creating one if needed.
-
- :rtype: :py:class:`~boto3.session.Session`
- :return: The default session
- """
- if DEFAULT_SESSION is None:
- setup_default_session()
-
- return DEFAULT_SESSION
-
-
-def client(*args, **kwargs):
- """
- Create a low-level service client by name using the default session.
-
- See :py:meth:`boto3.session.Session.client`.
- """
- return _get_default_session().client(*args, **kwargs)
-
-
-def resource(*args, **kwargs):
- """
- Create a resource service client by name using the default session.
-
- See :py:meth:`boto3.session.Session.resource`.
- """
- return _get_default_session().resource(*args, **kwargs)
-
-
-# Set up logging to ``/dev/null`` like a library is supposed to.
-# http://docs.python.org/3.3/howto/logging.html#configuring-logging-for-a-library
-class NullHandler(logging.Handler):
- def emit(self, record):
- pass
-
-
-logging.getLogger('boto3').addHandler(NullHandler())
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/compat.py b/.eggs/boto3-1.7.75-py2.7.egg/boto3/compat.py
deleted file mode 100644
index 3a7a832f..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/compat.py
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"). You
-# may not use this file except in compliance with the License. A copy of
-# the License is located at
-#
-# http://aws.amazon.com/apache2.0/
-#
-# or in the "license" file accompanying this file. This file 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.
-import sys
-import os
-import errno
-import socket
-
-from botocore.vendored import six
-
-if six.PY3:
- # In python3, socket.error is OSError, which is too general
- # for what we want (i.e FileNotFoundError is a subclass of OSError).
- # In py3 all the socket related errors are in a newly created
- # ConnectionError
- SOCKET_ERROR = ConnectionError
-else:
- SOCKET_ERROR = socket.error
-
-
-if sys.platform.startswith('win'):
- def rename_file(current_filename, new_filename):
- try:
- os.remove(new_filename)
- except OSError as e:
- if not e.errno == errno.ENOENT:
- # We only want to a ignore trying to remove
- # a file that does not exist. If it fails
- # for any other reason we should be propagating
- # that exception.
- raise
- os.rename(current_filename, new_filename)
-else:
- rename_file = os.rename
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/cloudformation/2010-05-15/resources-1.json b/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/cloudformation/2010-05-15/resources-1.json
deleted file mode 100644
index fd439375..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/cloudformation/2010-05-15/resources-1.json
+++ /dev/null
@@ -1,195 +0,0 @@
-{
- "service": {
- "actions": {
- "CreateStack": {
- "request": { "operation": "CreateStack" },
- "resource": {
- "type": "Stack",
- "identifiers": [
- { "target": "Name", "source": "requestParameter", "path": "StackName" }
- ]
- }
- }
- },
- "has": {
- "Event": {
- "resource": {
- "type": "Event",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Stack": {
- "resource": {
- "type": "Stack",
- "identifiers": [
- { "target": "Name", "source": "input" }
- ]
- }
- }
- },
- "hasMany": {
- "Stacks": {
- "request": { "operation": "DescribeStacks" },
- "resource": {
- "type": "Stack",
- "identifiers": [
- { "target": "Name", "source": "response", "path": "Stacks[].StackName" }
- ],
- "path": "Stacks[]"
- }
- }
- }
- },
- "resources": {
- "Event": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "EventId"
- }
- ],
- "shape": "StackEvent"
- },
- "Stack": {
- "identifiers": [
- {
- "name": "Name",
- "memberName": "StackName"
- }
- ],
- "shape": "Stack",
- "load": {
- "request": {
- "operation": "DescribeStacks",
- "params": [
- { "target": "StackName", "source": "identifier", "name": "Name" }
- ]
- },
- "path": "Stacks[0]"
- },
- "actions": {
- "CancelUpdate": {
- "request": {
- "operation": "CancelUpdateStack",
- "params": [
- { "target": "StackName", "source": "identifier", "name": "Name" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteStack",
- "params": [
- { "target": "StackName", "source": "identifier", "name": "Name" }
- ]
- }
- },
- "Update": {
- "request": {
- "operation": "UpdateStack",
- "params": [
- { "target": "StackName", "source": "identifier", "name": "Name" }
- ]
- }
- }
- },
- "has": {
- "Resource": {
- "resource": {
- "type": "StackResource",
- "identifiers": [
- { "target": "StackName", "source": "identifier", "name": "Name" },
- { "target": "LogicalId", "source": "input" }
- ]
- }
- }
- },
- "hasMany": {
- "Events": {
- "request": {
- "operation": "DescribeStackEvents",
- "params": [
- { "target": "StackName", "source": "identifier", "name": "Name" }
- ]
- },
- "resource": {
- "type": "Event",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "StackEvents[].EventId" }
- ],
- "path": "StackEvents[]"
- }
- },
- "ResourceSummaries": {
- "request": {
- "operation": "ListStackResources",
- "params": [
- { "target": "StackName", "source": "identifier", "name": "Name" }
- ]
- },
- "resource": {
- "type": "StackResourceSummary",
- "identifiers": [
- { "target": "LogicalId", "source": "response", "path": "StackResourceSummaries[].LogicalResourceId" },
- { "target": "StackName", "source": "requestParameter", "path": "StackName" }
- ],
- "path": "StackResourceSummaries[]"
- }
- }
- }
- },
- "StackResource": {
- "identifiers": [
- { "name": "StackName" },
- {
- "name": "LogicalId",
- "memberName": "LogicalResourceId"
- }
- ],
- "shape": "StackResourceDetail",
- "load": {
- "request": {
- "operation": "DescribeStackResource",
- "params": [
- { "target": "LogicalResourceId", "source": "identifier", "name": "LogicalId" },
- { "target": "StackName", "source": "identifier", "name": "StackName" }
- ]
- },
- "path": "StackResourceDetail"
- },
- "has": {
- "Stack": {
- "resource": {
- "type": "Stack",
- "identifiers": [
- { "target": "Name", "source": "identifier", "name": "StackName" }
- ]
- }
- }
- }
- },
- "StackResourceSummary": {
- "identifiers": [
- { "name": "StackName" },
- {
- "name": "LogicalId",
- "memberName": "LogicalResourceId"
- }
- ],
- "shape": "StackResourceSummary",
- "has": {
- "Resource": {
- "resource": {
- "type": "StackResource",
- "identifiers": [
- { "target": "LogicalId", "source": "identifier", "name": "LogicalId" },
- { "target": "StackName", "source": "identifier", "name": "StackName" }
- ]
- }
- }
- }
- }
- }
-}
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/cloudwatch/2010-08-01/resources-1.json b/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/cloudwatch/2010-08-01/resources-1.json
deleted file mode 100644
index e0746d04..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/cloudwatch/2010-08-01/resources-1.json
+++ /dev/null
@@ -1,334 +0,0 @@
-{
- "service": {
- "has": {
- "Alarm": {
- "resource": {
- "type": "Alarm",
- "identifiers": [
- {
- "target": "Name",
- "source": "input"
- }
- ]
- }
- },
- "Metric": {
- "resource": {
- "type": "Metric",
- "identifiers": [
- {
- "target": "Namespace",
- "source": "input"
- },
- {
- "target": "Name",
- "source": "input"
- }
- ]
- }
- }
- },
- "hasMany": {
- "Alarms": {
- "request": { "operation": "DescribeAlarms" },
- "resource": {
- "type": "Alarm",
- "identifiers": [
- {
- "target": "Name",
- "source": "response",
- "path": "MetricAlarms[].AlarmName"
- }
- ],
- "path": "MetricAlarms[]"
- }
- },
- "Metrics": {
- "request": { "operation": "ListMetrics" },
- "resource": {
- "type": "Metric",
- "identifiers": [
- {
- "target": "Namespace",
- "source": "response",
- "path": "Metrics[].Namespace"
- },
- {
- "target": "Name",
- "source": "response",
- "path": "Metrics[].MetricName"
- }
- ],
- "path": "Metrics[]"
- }
- }
- }
- },
- "resources": {
- "Alarm": {
- "identifiers": [
- {
- "name": "Name",
- "memberName": "AlarmName"
- }
- ],
- "shape": "MetricAlarm",
- "load": {
- "request": {
- "operation": "DescribeAlarms",
- "params": [
- {
- "target": "AlarmNames[0]",
- "source": "identifier",
- "name": "Name"
- }
- ]
- },
- "path": "MetricAlarms[0]"
- },
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeleteAlarms",
- "params": [
- {
- "target": "AlarmNames[0]",
- "source": "identifier",
- "name": "Name"
- }
- ]
- }
- },
- "DescribeHistory": {
- "request": {
- "operation": "DescribeAlarmHistory",
- "params": [
- {
- "target": "AlarmName",
- "source": "identifier",
- "name": "Name"
- }
- ]
- }
- },
- "DisableActions": {
- "request": {
- "operation": "DisableAlarmActions",
- "params": [
- {
- "target": "AlarmNames[0]",
- "source": "identifier",
- "name": "Name"
- }
- ]
- }
- },
- "EnableActions": {
- "request": {
- "operation": "EnableAlarmActions",
- "params": [
- {
- "target": "AlarmNames[0]",
- "source": "identifier",
- "name": "Name"
- }
- ]
- }
- },
- "SetState": {
- "request": {
- "operation": "SetAlarmState",
- "params": [
- {
- "target": "AlarmName",
- "source": "identifier",
- "name": "Name"
- }
- ]
- }
- }
- },
- "batchActions": {
- "Delete": {
- "request": {
- "operation": "DeleteAlarms",
- "params": [
- {
- "target": "AlarmNames[]",
- "source": "identifier",
- "name": "Name"
- }
- ]
- }
- },
- "DisableActions": {
- "request": {
- "operation": "DisableAlarmActions",
- "params": [
- {
- "target": "AlarmNames[]",
- "source": "identifier",
- "name": "Name"
- }
- ]
- }
- },
- "EnableActions": {
- "request": {
- "operation": "EnableAlarmActions",
- "params": [
- {
- "target": "AlarmNames[]",
- "source": "identifier",
- "name": "Name"
- }
- ]
- }
- }
- },
- "has": {
- "Metric": {
- "resource": {
- "type": "Metric",
- "identifiers": [
- {
- "target": "Namespace",
- "source": "data",
- "path": "Namespace"
- },
- {
- "target": "Name",
- "source": "data",
- "path": "MetricName"
- }
- ]
- }
- }
- }
- },
- "Metric": {
- "identifiers": [
- {
- "name": "Namespace",
- "memberName": "Namespace"
- },
- {
- "name": "Name",
- "memberName": "MetricName"
- }
- ],
- "shape": "Metric",
- "load": {
- "request": {
- "operation": "ListMetrics",
- "params": [
- {
- "target": "MetricName",
- "source": "identifier",
- "name": "Name"
- },
- {
- "target": "Namespace",
- "source": "identifier",
- "name": "Namespace"
- }
- ]
- },
- "path": "Metrics[0]"
- },
- "actions": {
- "GetStatistics": {
- "request": {
- "operation": "GetMetricStatistics",
- "params": [
- {
- "target": "Namespace",
- "source": "identifier",
- "name": "Namespace"
- },
- {
- "target": "MetricName",
- "source": "identifier",
- "name": "Name"
- }
- ]
- }
- },
- "PutAlarm": {
- "request": {
- "operation": "PutMetricAlarm",
- "params": [
- {
- "target": "Namespace",
- "source": "identifier",
- "name": "Namespace"
- },
- {
- "target": "MetricName",
- "source": "identifier",
- "name": "Name"
- }
- ]
- },
- "resource": {
- "type": "Alarm",
- "identifiers": [
- {
- "target": "Name",
- "source": "requestParameter",
- "path": "AlarmName"
- }
- ]
- }
- },
- "PutData": {
- "request": {
- "operation": "PutMetricData",
- "params": [
- {
- "target": "Namespace",
- "source": "identifier",
- "name": "Namespace"
- },
- {
- "target": "MetricData[].MetricName",
- "source": "identifier",
- "name": "Name"
- }
- ]
- }
- }
- },
- "hasMany": {
- "Alarms": {
- "request": {
- "operation": "DescribeAlarmsForMetric",
- "params": [
- {
- "target": "Namespace",
- "source": "identifier",
- "name": "Namespace"
- },
- {
- "target": "MetricName",
- "source": "identifier",
- "name": "Name"
- }
- ]
- },
- "resource": {
- "type": "Alarm",
- "identifiers": [
- {
- "target": "Name",
- "source": "response",
- "path": "MetricAlarms[].AlarmName"
- }
- ],
- "path": "MetricAlarms[]"
- }
- }
- }
- }
- }
-}
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/dynamodb/2012-08-10/resources-1.json b/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/dynamodb/2012-08-10/resources-1.json
deleted file mode 100644
index b79994e2..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/dynamodb/2012-08-10/resources-1.json
+++ /dev/null
@@ -1,150 +0,0 @@
-{
- "service": {
- "actions": {
- "BatchGetItem": {
- "request": { "operation": "BatchGetItem" }
- },
- "BatchWriteItem": {
- "request": { "operation": "BatchWriteItem" }
- },
- "CreateTable": {
- "request": { "operation": "CreateTable" },
- "resource": {
- "type": "Table",
- "identifiers": [
- { "target": "Name", "source": "response", "path": "TableDescription.TableName" }
- ],
- "path": "TableDescription"
- }
- }
- },
- "has": {
- "Table": {
- "resource": {
- "type": "Table",
- "identifiers": [
- { "target": "Name", "source": "input" }
- ]
- }
- }
- },
- "hasMany": {
- "Tables": {
- "request": { "operation": "ListTables" },
- "resource": {
- "type": "Table",
- "identifiers": [
- { "target": "Name", "source": "response", "path": "TableNames[]" }
- ]
- }
- }
- }
- },
- "resources": {
- "Table": {
- "identifiers": [
- {
- "name": "Name",
- "memberName": "TableName"
- }
- ],
- "shape": "TableDescription",
- "load": {
- "request": {
- "operation": "DescribeTable",
- "params": [
- { "target": "TableName", "source": "identifier", "name": "Name" }
- ]
- },
- "path": "Table"
- },
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeleteTable",
- "params": [
- { "target": "TableName", "source": "identifier", "name": "Name" }
- ]
- }
- },
- "DeleteItem": {
- "request": {
- "operation": "DeleteItem",
- "params": [
- { "target": "TableName", "source": "identifier", "name": "Name" }
- ]
- }
- },
- "GetItem": {
- "request": {
- "operation": "GetItem",
- "params": [
- { "target": "TableName", "source": "identifier", "name": "Name" }
- ]
- }
- },
- "PutItem": {
- "request": {
- "operation": "PutItem",
- "params": [
- { "target": "TableName", "source": "identifier", "name": "Name" }
- ]
- }
- },
- "Query": {
- "request": {
- "operation": "Query",
- "params": [
- { "target": "TableName", "source": "identifier", "name": "Name" }
- ]
- }
- },
- "Scan": {
- "request": {
- "operation": "Scan",
- "params": [
- { "target": "TableName", "source": "identifier", "name": "Name" }
- ]
- }
- },
- "Update": {
- "request": {
- "operation": "UpdateTable",
- "params": [
- { "target": "TableName", "source": "identifier", "name": "Name" }
- ]
- },
- "resource": {
- "type": "Table",
- "identifiers": [
- { "target": "Name", "source": "identifier", "name": "Name" }
- ],
- "path": "TableDescription"
- }
- },
- "UpdateItem": {
- "request": {
- "operation": "UpdateItem",
- "params": [
- { "target": "TableName", "source": "identifier", "name": "Name" }
- ]
- }
- }
- },
- "waiters":{
- "Exists": {
- "waiterName": "TableExists",
- "params": [
- { "target": "TableName", "source": "identifier", "name": "Name" }
- ]
- },
- "NotExists": {
- "waiterName": "TableNotExists",
- "params": [
- { "target": "TableName", "source": "identifier", "name": "Name" }
- ]
- }
- }
- }
- }
-}
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/ec2/2014-10-01/resources-1.json b/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/ec2/2014-10-01/resources-1.json
deleted file mode 100644
index 8ccf160a..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/ec2/2014-10-01/resources-1.json
+++ /dev/null
@@ -1,2289 +0,0 @@
-{
- "service": {
- "actions": {
- "CreateDhcpOptions": {
- "request": { "operation": "CreateDhcpOptions" },
- "resource": {
- "type": "DhcpOptions",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "DhcpOptions.DhcpOptionsId" }
- ],
- "path": "DhcpOptions"
- }
- },
- "CreateInstances": {
- "request": { "operation": "RunInstances" },
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Instances[].InstanceId" }
- ],
- "path": "Instances[]"
- }
- },
- "CreateInternetGateway": {
- "request": { "operation": "CreateInternetGateway" },
- "resource": {
- "type": "InternetGateway",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "InternetGateway.InternetGatewayId" }
- ],
- "path": "InternetGateway"
- }
- },
- "CreateKeyPair": {
- "request": { "operation": "CreateKeyPair" },
- "resource": {
- "type": "KeyPair",
- "identifiers": [
- { "target": "Name", "source": "response", "path": "KeyName" }
- ]
- }
- },
- "CreateNetworkAcl": {
- "request": { "operation": "CreateNetworkAcl" },
- "resource": {
- "type": "NetworkAcl",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkAcl.NetworkAclId" }
- ],
- "path": "NetworkAcl"
- }
- },
- "CreateNetworkInterface": {
- "request": { "operation": "CreateNetworkInterface" },
- "resource": {
- "type": "NetworkInterface",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkInterface.NetworkInterfaceId" }
- ],
- "path": "NetworkInterface"
- }
- },
- "CreatePlacementGroup": {
- "request": { "operation": "CreatePlacementGroup" },
- "resource": {
- "type": "PlacementGroup",
- "identifiers": [
- { "target": "Name", "source": "requestParameter", "path": "GroupName" }
- ]
- }
- },
- "CreateRouteTable": {
- "request": { "operation": "CreateRouteTable" },
- "resource": {
- "type": "RouteTable",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "RouteTable.RouteTableId" }
- ],
- "path": "RouteTable"
- }
- },
- "CreateSecurityGroup": {
- "request": { "operation": "CreateSecurityGroup" },
- "resource": {
- "type": "SecurityGroup",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "GroupId" }
- ]
- }
- },
- "CreateSnapshot": {
- "request": { "operation": "CreateSnapshot" },
- "resource": {
- "type": "Snapshot",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "SnapshotId" }
- ],
- "path": "@"
- }
- },
- "CreateSubnet": {
- "request": { "operation": "CreateSubnet" },
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Subnet.SubnetId" }
- ],
- "path": "Subnet"
- }
- },
- "CreateTags": {
- "request": { "operation": "CreateTags" },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "requestParameter", "path": "Resources[]" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "CreateVolume": {
- "request": { "operation": "CreateVolume" },
- "resource": {
- "type": "Volume",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "VolumeId" }
- ],
- "path": "@"
- }
- },
- "CreateVpc": {
- "request": { "operation": "CreateVpc" },
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Vpc.VpcId" }
- ],
- "path": "Vpc"
- }
- },
- "CreateVpcPeeringConnection": {
- "request": { "operation": "CreateVpcPeeringConnection" },
- "resource": {
- "type": "VpcPeeringConnection",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "VpcPeeringConnection.VpcPeeringConnectionId" }
- ],
- "path": "VpcPeeringConnection"
- }
- },
- "DisassociateRouteTable": {
- "request": { "operation": "DisassociateRouteTable" }
- },
- "ImportKeyPair": {
- "request": { "operation": "ImportKeyPair" },
- "resource": {
- "type": "KeyPair",
- "identifiers": [
- { "target": "Name", "source": "response", "path": "KeyName" }
- ]
- }
- },
- "RegisterImage": {
- "request": { "operation": "RegisterImage" },
- "resource": {
- "type": "Image",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "ImageId" }
- ]
- }
- }
- },
- "has": {
- "DhcpOptions": {
- "resource": {
- "type": "DhcpOptions",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Image": {
- "resource": {
- "type": "Image",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Instance": {
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "InternetGateway": {
- "resource": {
- "type": "InternetGateway",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "KeyPair": {
- "resource": {
- "type": "KeyPair",
- "identifiers": [
- { "target": "Name", "source": "input" }
- ]
- }
- },
- "NetworkAcl": {
- "resource": {
- "type": "NetworkAcl",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "NetworkInterface": {
- "resource": {
- "type": "NetworkInterface",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "PlacementGroup": {
- "resource": {
- "type": "PlacementGroup",
- "identifiers": [
- { "target": "Name", "source": "input" }
- ]
- }
- },
- "RouteTable": {
- "resource": {
- "type": "RouteTable",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "RouteTableAssociation": {
- "resource": {
- "type": "RouteTableAssociation",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "SecurityGroup": {
- "resource": {
- "type": "SecurityGroup",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Snapshot": {
- "resource": {
- "type": "Snapshot",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Subnet": {
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Volume": {
- "resource": {
- "type": "Volume",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Vpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "VpcPeeringConnection": {
- "resource": {
- "type": "VpcPeeringConnection",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- }
- },
- "hasMany": {
- "DhcpOptionsSets": {
- "request": { "operation": "DescribeDhcpOptions" },
- "resource": {
- "type": "DhcpOptions",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "DhcpOptions[].DhcpOptionsId" }
- ],
- "path": "DhcpOptions[]"
- }
- },
- "Images": {
- "request": { "operation": "DescribeImages" },
- "resource": {
- "type": "Image",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Images[].ImageId" }
- ],
- "path": "Images[]"
- }
- },
- "Instances": {
- "request": { "operation": "DescribeInstances" },
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
- ],
- "path": "Reservations[].Instances[]"
- }
- },
- "InternetGateways": {
- "request": { "operation": "DescribeInternetGateways" },
- "resource": {
- "type": "InternetGateway",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "InternetGateways[].InternetGatewayId" }
- ],
- "path": "InternetGateways[]"
- }
- },
- "KeyPairs": {
- "request": { "operation": "DescribeKeyPairs" },
- "resource": {
- "type": "KeyPair",
- "identifiers": [
- { "target": "Name", "source": "response", "path": "KeyPairs[].KeyName" }
- ],
- "path": "KeyPairs[]"
- }
- },
- "NetworkAcls": {
- "request": { "operation": "DescribeNetworkAcls" },
- "resource": {
- "type": "NetworkAcl",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkAcls[].NetworkAclId" }
- ],
- "path": "NetworkAcls[]"
- }
- },
- "NetworkInterfaces": {
- "request": { "operation": "DescribeNetworkInterfaces" },
- "resource": {
- "type": "NetworkInterface",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkInterfaces[].NetworkInterfaceId" }
- ],
- "path": "NetworkInterfaces[]"
- }
- },
- "PlacementGroups": {
- "request": { "operation": "DescribePlacementGroups" },
- "resource": {
- "type": "PlacementGroup",
- "identifiers": [
- { "target": "Name", "source": "response", "path": "PlacementGroups[].GroupName" }
- ],
- "path": "PlacementGroups[]"
- }
- },
- "RouteTables": {
- "request": { "operation": "DescribeRouteTables" },
- "resource": {
- "type": "RouteTable",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "RouteTables[].RouteTableId" }
- ],
- "path": "RouteTables[]"
- }
- },
- "SecurityGroups": {
- "request": { "operation": "DescribeSecurityGroups" },
- "resource": {
- "type": "SecurityGroup",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "SecurityGroups[].GroupId" }
- ],
- "path": "SecurityGroups[]"
- }
- },
- "Snapshots": {
- "request": { "operation": "DescribeSnapshots" },
- "resource": {
- "type": "Snapshot",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Snapshots[].SnapshotId" }
- ],
- "path": "Snapshots[]"
- }
- },
- "Subnets": {
- "request": { "operation": "DescribeSubnets" },
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Subnets[].SubnetId" }
- ],
- "path": "Subnets[]"
- }
- },
- "Volumes": {
- "request": { "operation": "DescribeVolumes" },
- "resource": {
- "type": "Volume",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Volumes[].VolumeId" }
- ],
- "path": "Volumes[]"
- }
- },
- "VpcPeeringConnections": {
- "request": { "operation": "DescribeVpcPeeringConnections" },
- "resource": {
- "type": "VpcPeeringConnection",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "VpcPeeringConnections[].VpcPeeringConnectionId" }
- ],
- "path": "VpcPeeringConnections[]"
- }
- },
- "Vpcs": {
- "request": { "operation": "DescribeVpcs" },
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Vpcs[].VpcId" }
- ],
- "path": "Vpcs[]"
- }
- }
- }
- },
- "resources": {
- "DhcpOptions": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "DhcpOptionsId"
- }
- ],
- "shape": "DhcpOptions",
- "load": {
- "request": {
- "operation": "DescribeDhcpOptions",
- "params": [
- { "target": "DhcpOptionsIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "DhcpOptions[0]"
- },
- "actions": {
- "AssociateWithVpc": {
- "request": {
- "operation": "AssociateDhcpOptions",
- "params": [
- { "target": "DhcpOptionsId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteDhcpOptions",
- "params": [
- { "target": "DhcpOptionsId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- }
- },
- "Image": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "ImageId"
- }
- ],
- "shape": "Image",
- "load": {
- "request": {
- "operation": "DescribeImages",
- "params": [
- { "target": "ImageIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "Images[0]"
- },
- "actions": {
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Deregister": {
- "request": {
- "operation": "DeregisterImage",
- "params": [
- { "target": "ImageId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DescribeAttribute": {
- "request": {
- "operation": "DescribeImageAttribute",
- "params": [
- { "target": "ImageId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ModifyAttribute": {
- "request": {
- "operation": "ModifyImageAttribute",
- "params": [
- { "target": "ImageId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ResetAttribute": {
- "request": {
- "operation": "ResetImageAttribute",
- "params": [
- { "target": "ImageId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- }
- },
- "Instance": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "InstanceId"
- }
- ],
- "shape": "Instance",
- "load": {
- "request": {
- "operation": "DescribeInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "Reservations[0].Instances[0]"
- },
- "actions": {
- "AttachClassicLinkVpc": {
- "request": {
- "operation": "AttachClassicLinkVpc",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "AttachVolume": {
- "request": {
- "operation": "AttachVolume",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ConsoleOutput": {
- "request": {
- "operation": "GetConsoleOutput",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateImage": {
- "request": {
- "operation": "CreateImage",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Image",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "ImageId" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "DescribeAttribute": {
- "request": {
- "operation": "DescribeInstanceAttribute",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DetachClassicLinkVpc": {
- "request": {
- "operation": "DetachClassicLinkVpc",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DetachVolume": {
- "request": {
- "operation": "DetachVolume",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ModifyAttribute": {
- "request": {
- "operation": "ModifyInstanceAttribute",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Monitor": {
- "request": {
- "operation": "MonitorInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "PasswordData": {
- "request": {
- "operation": "GetPasswordData",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Reboot": {
- "request": {
- "operation": "RebootInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ReportStatus": {
- "request": {
- "operation": "ReportInstanceStatus",
- "params": [
- { "target": "Instances[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ResetAttribute": {
- "request": {
- "operation": "ResetInstanceAttribute",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ResetKernel": {
- "request": {
- "operation": "ResetInstanceAttribute",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" },
- { "target": "Attribute", "source": "string", "value": "kernel" }
- ]
- }
- },
- "ResetRamdisk": {
- "request": {
- "operation": "ResetInstanceAttribute",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" },
- { "target": "Attribute", "source": "string", "value": "ramdisk" }
- ]
- }
- },
- "ResetSourceDestCheck": {
- "request": {
- "operation": "ResetInstanceAttribute",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" },
- { "target": "Attribute", "source": "string", "value": "sourceDestCheck" }
- ]
- }
- },
- "Start": {
- "request": {
- "operation": "StartInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Stop": {
- "request": {
- "operation": "StopInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Terminate": {
- "request": {
- "operation": "TerminateInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Unmonitor": {
- "request": {
- "operation": "UnmonitorInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "batchActions": {
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Monitor": {
- "request": {
- "operation": "MonitorInstances",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Reboot": {
- "request": {
- "operation": "RebootInstances",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Start": {
- "request": {
- "operation": "StartInstances",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Stop": {
- "request": {
- "operation": "StopInstances",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Terminate": {
- "request": {
- "operation": "TerminateInstances",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Unmonitor": {
- "request": {
- "operation": "UnmonitorInstances",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "waiters": {
- "Exists": {
- "waiterName": "InstanceExists",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ],
- "path": "Reservations[0].Instances[0]"
- },
- "Running": {
- "waiterName": "InstanceRunning",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ],
- "path": "Reservations[0].Instances[0]"
- },
- "Stopped": {
- "waiterName": "InstanceStopped",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ],
- "path": "Reservations[0].Instances[0]"
- },
- "Terminated": {
- "waiterName": "InstanceTerminated",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ],
- "path": "Reservations[0].Instances[0]"
- }
- },
- "has": {
- "Image": {
- "resource": {
- "type": "Image",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "ImageId" }
- ]
- }
- },
- "KeyPair": {
- "resource": {
- "type": "KeyPair",
- "identifiers": [
- { "target": "Name", "source": "data", "path": "KeyName" }
- ]
- }
- },
- "PlacementGroup": {
- "resource": {
- "type": "PlacementGroup",
- "identifiers": [
- { "target": "Name", "source": "data", "path": "Placement.GroupName" }
- ]
- }
- },
- "Subnet": {
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "SubnetId" }
- ]
- }
- },
- "Vpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "VpcId" }
- ]
- }
- }
- },
- "hasMany": {
- "Volumes": {
- "request": {
- "operation": "DescribeVolumes",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "attachment.instance-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Volume",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Volumes[].VolumeId" }
- ],
- "path": "Volumes[]"
- }
- }
- }
- },
- "InternetGateway": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "InternetGatewayId"
- }
- ],
- "shape": "InternetGateway",
- "load": {
- "request": {
- "operation": "DescribeInternetGateways",
- "params": [
- { "target": "InternetGatewayIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "InternetGateways[0]"
- },
- "actions": {
- "AttachToVpc": {
- "request": {
- "operation": "AttachInternetGateway",
- "params": [
- { "target": "InternetGatewayId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteInternetGateway",
- "params": [
- { "target": "InternetGatewayId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DetachFromVpc": {
- "request": {
- "operation": "DetachInternetGateway",
- "params": [
- { "target": "InternetGatewayId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- }
- },
- "KeyPair": {
- "identifiers": [
- {
- "name": "Name",
- "memberName": "KeyName"
- }
- ],
- "shape": "KeyPairInfo",
- "load": {
- "request": {
- "operation": "DescribeKeyPairs",
- "params": [
- { "target": "KeyNames[0]", "source": "identifier", "name": "Name" }
- ]
- },
- "path": "KeyPairs[0]"
- },
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeleteKeyPair",
- "params": [
- { "target": "KeyName", "source": "identifier", "name": "Name" }
- ]
- }
- }
- }
- },
- "NetworkAcl": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "NetworkAclId"
- }
- ],
- "shape": "NetworkAcl",
- "load": {
- "request": {
- "operation": "DescribeNetworkAcls",
- "params": [
- { "target": "NetworkAclIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "NetworkAcls[0]"
- },
- "actions": {
- "CreateEntry": {
- "request": {
- "operation": "CreateNetworkAclEntry",
- "params": [
- { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteNetworkAcl",
- "params": [
- { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DeleteEntry": {
- "request": {
- "operation": "DeleteNetworkAclEntry",
- "params": [
- { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ReplaceAssociation": {
- "request": {
- "operation": "ReplaceNetworkAclAssociation",
- "params": [
- { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ReplaceEntry": {
- "request": {
- "operation": "ReplaceNetworkAclEntry",
- "params": [
- { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "has": {
- "Vpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "VpcId" }
- ]
- }
- }
- }
- },
- "NetworkInterface": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "NetworkInterfaceId"
- }
- ],
- "shape": "NetworkInterface",
- "load": {
- "request": {
- "operation": "DescribeNetworkInterfaces",
- "params": [
- { "target": "NetworkInterfaceIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "NetworkInterfaces[0]"
- },
- "actions": {
- "AssignPrivateIpAddresses": {
- "request": {
- "operation": "AssignPrivateIpAddresses",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Attach": {
- "request": {
- "operation": "AttachNetworkInterface",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteNetworkInterface",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DescribeAttribute": {
- "request": {
- "operation": "DescribeNetworkInterfaceAttribute",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Detach": {
- "request": {
- "operation": "DetachNetworkInterface",
- "params": [
- { "target": "AttachmentId", "source": "data", "path": "Attachment.AttachmentId" }
- ]
- }
- },
- "ModifyAttribute": {
- "request": {
- "operation": "ModifyNetworkInterfaceAttribute",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ResetAttribute": {
- "request": {
- "operation": "ResetNetworkInterfaceAttribute",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "UnassignPrivateIpAddresses": {
- "request": {
- "operation": "UnassignPrivateIpAddresses",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "has": {
- "Subnet": {
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "SubnetId" }
- ]
- }
- },
- "Vpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "VpcId" }
- ]
- }
- }
- }
- },
- "PlacementGroup": {
- "identifiers": [
- {
- "name": "Name",
- "memberName": "GroupName"
- }
- ],
- "shape": "PlacementGroup",
- "load": {
- "request": {
- "operation": "DescribePlacementGroups",
- "params": [
- { "target": "GroupNames[0]", "source": "identifier", "name": "Name" }
- ]
- },
- "path": "PlacementGroups[0]"
- },
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeletePlacementGroup",
- "params": [
- { "target": "GroupName", "source": "identifier", "name": "Name" }
- ]
- }
- }
- },
- "hasMany": {
- "Instances": {
- "request": {
- "operation": "DescribeInstances",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "placement-group-name" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Name" }
- ]
- },
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
- ],
- "path": "Reservations[].Instances[]"
- }
- }
- }
- },
- "RouteTable": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "RouteTableId"
- }
- ],
- "shape": "RouteTable",
- "load": {
- "request": {
- "operation": "DescribeRouteTables",
- "params": [
- { "target": "RouteTableIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "RouteTables[0]"
- },
- "actions": {
- "AssociateWithSubnet": {
- "request": {
- "operation": "AssociateRouteTable",
- "params": [
- { "target": "RouteTableId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "RouteTableAssociation",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "AssociationId" }
- ]
- }
- },
- "CreateRoute": {
- "request": {
- "operation": "CreateRoute",
- "params": [
- { "target": "RouteTableId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteRouteTable",
- "params": [
- { "target": "RouteTableId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "has": {
- "Vpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "VpcId" }
- ]
- }
- }
- },
- "hasMany": {
- "Associations": {
- "request": {
- "operation": "DescribeRouteTables",
- "params": [
- { "target": "RouteTableIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "RouteTableAssociation",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "RouteTables[0].Associations[].RouteTableAssociationId" }
- ],
- "path": "RouteTables[0].Associations[]"
- }
- }
- }
- },
- "RouteTableAssociation": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "RouteTableAssociationId"
- }
- ],
- "shape": "RouteTableAssociation",
- "actions": {
- "Delete": {
- "request": {
- "operation": "DisassociateRouteTable",
- "params": [
- { "target": "AssociationId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ReplaceSubnet": {
- "request": {
- "operation": "ReplaceRouteTableAssociation",
- "params": [
- { "target": "AssociationId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "RouteTableAssociation",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NewAssociationId" }
- ]
- }
- }
- },
- "has": {
- "RouteTable": {
- "resource": {
- "type": "RouteTable",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "RouteTableId" }
- ]
- }
- },
- "Subnet": {
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "SubnetId" }
- ]
- }
- }
- }
- },
- "SecurityGroup": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "GroupId"
- }
- ],
- "shape": "SecurityGroup",
- "load": {
- "request": {
- "operation": "DescribeSecurityGroups",
- "params": [
- { "target": "GroupIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "SecurityGroups[0]"
- },
- "actions": {
- "AuthorizeEgress": {
- "request": {
- "operation": "AuthorizeSecurityGroupEgress",
- "params": [
- { "target": "GroupId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "AuthorizeIngress": {
- "request": {
- "operation": "AuthorizeSecurityGroupIngress",
- "params": [
- { "target": "GroupId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteSecurityGroup",
- "params": [
- { "target": "GroupId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "RevokeEgress": {
- "request": {
- "operation": "RevokeSecurityGroupEgress",
- "params": [
- { "target": "GroupId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "RevokeIngress": {
- "request": {
- "operation": "RevokeSecurityGroupIngress",
- "params": [
- { "target": "GroupId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- }
- },
- "Snapshot": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "SnapshotId"
- }
- ],
- "shape": "Snapshot",
- "load": {
- "request": {
- "operation": "DescribeSnapshots",
- "params": [
- { "target": "SnapshotIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "Snapshots[0]"
- },
- "actions": {
- "Copy": {
- "request": {
- "operation": "CopySnapshot",
- "params": [
- { "target": "SourceSnapshotId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteSnapshot",
- "params": [
- { "target": "SnapshotId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DescribeAttribute": {
- "request": {
- "operation": "DescribeSnapshotAttribute",
- "params": [
- { "target": "SnapshotId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ModifyAttribute": {
- "request": {
- "operation": "ModifySnapshotAttribute",
- "params": [
- { "target": "SnapshotId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ResetAttribute": {
- "request": {
- "operation": "ResetSnapshotAttribute",
- "params": [
- { "target": "SnapshotId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "waiters": {
- "Completed": {
- "waiterName": "SnapshotCompleted",
- "params": [
- { "target": "SnapshotIds[]", "source": "identifier", "name": "Id" }
- ],
- "path": "Snapshots[]"
- }
- },
- "has": {
- "Volume": {
- "resource": {
- "type": "Volume",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "VolumeId" }
- ]
- }
- }
- }
- },
- "Subnet": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "SubnetId"
- }
- ],
- "shape": "Subnet",
- "load": {
- "request": {
- "operation": "DescribeSubnets",
- "params": [
- { "target": "SubnetIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "Subnets[0]"
- },
- "actions": {
- "CreateInstances": {
- "request": {
- "operation": "RunInstances",
- "params": [
- { "target": "SubnetId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Instances[].InstanceId" }
- ],
- "path": "Instances[]"
- }
- },
- "CreateNetworkInterface": {
- "request": {
- "operation": "CreateNetworkInterface",
- "params": [
- { "target": "SubnetId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "NetworkInterface",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkInterface.NetworkInterfaceId" }
- ],
- "path": "NetworkInterface"
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteSubnet",
- "params": [
- { "target": "SubnetId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "has": {
- "Vpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "VpcId" }
- ]
- }
- }
- },
- "hasMany": {
- "Instances": {
- "request": {
- "operation": "DescribeInstances",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "subnet-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
- ],
- "path": "Reservations[].Instances[]"
- }
- },
- "NetworkInterfaces": {
- "request": {
- "operation": "DescribeNetworkInterfaces",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "subnet-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "NetworkInterface",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkInterfaces[].NetworkInterfaceId" }
- ],
- "path": "NetworkInterfaces[]"
- }
- }
- }
- },
- "Tag": {
- "identifiers": [
- {
- "name": "ResourceId",
- "memberName": "ResourceId"
- },
- {
- "name": "Key",
- "memberName": "Key"
- },
- {
- "name": "Value",
- "memberName": "Value"
- }
- ],
- "shape": "TagDescription",
- "load": {
- "request": {
- "operation": "DescribeTags",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "key" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Key" },
- { "target": "Filters[1].Name", "source": "string", "value": "value" },
- { "target": "Filters[1].Values[0]", "source": "identifier", "name": "Value" }
- ]
- },
- "path": "Tags[0]"
- },
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeleteTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "ResourceId" },
- { "target": "Tags[0].Key", "source": "identifier", "name": "Key" },
- { "target": "Tags[0].Value", "source": "identifier", "name": "Value" }
- ]
- }
- }
- },
- "batchActions": {
- "Delete": {
- "request": {
- "operation": "DeleteTags",
- "params": [
- { "target": "Resources[]", "source": "identifier", "name": "ResourceId" },
- { "target": "Tags[*].Key", "source": "identifier", "name": "Key" },
- { "target": "Tags[*].Value", "source": "identifier", "name": "Value" }
- ]
- }
- }
- }
- },
- "Volume": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "VolumeId"
- }
- ],
- "shape": "Volume",
- "load": {
- "request": {
- "operation": "DescribeVolumes",
- "params": [
- { "target": "VolumeIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "Volumes[0]"
- },
- "actions": {
- "AttachToInstance": {
- "request": {
- "operation": "AttachVolume",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateSnapshot": {
- "request": {
- "operation": "CreateSnapshot",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Snapshot",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "SnapshotId" }
- ],
- "path": "@"
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteVolume",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DescribeAttribute": {
- "request": {
- "operation": "DescribeVolumeAttribute",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DescribeStatus": {
- "request": {
- "operation": "DescribeVolumeStatus",
- "params": [
- { "target": "VolumeIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DetachFromInstance": {
- "request": {
- "operation": "DetachVolume",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "EnableIo": {
- "request": {
- "operation": "EnableVolumeIO",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ModifyAttribute": {
- "request": {
- "operation": "ModifyVolumeAttribute",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "hasMany": {
- "Snapshots": {
- "request": {
- "operation": "DescribeSnapshots",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "volume-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Snapshot",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Snapshots[].SnapshotId" }
- ],
- "path": "Snapshots[]"
- }
- }
- }
- },
- "Vpc": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "VpcId"
- }
- ],
- "shape": "Vpc",
- "load": {
- "request": {
- "operation": "DescribeVpcs",
- "params": [
- { "target": "VpcIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "Vpcs[0]"
- },
- "actions": {
- "AssociateDhcpOptions": {
- "request": {
- "operation": "AssociateDhcpOptions",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "AttachClassicLinkInstance": {
- "request": {
- "operation": "AttachClassicLinkVpc",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "AttachInternetGateway": {
- "request": {
- "operation": "AttachInternetGateway",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateNetworkAcl": {
- "request": {
- "operation": "CreateNetworkAcl",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "NetworkAcl",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkAcl.NetworkAclId" }
- ],
- "path": "NetworkAcl"
- }
- },
- "CreateRouteTable": {
- "request": {
- "operation": "CreateRouteTable",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "RouteTable",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "RouteTable.RouteTableId" }
- ],
- "path": "RouteTable"
- }
- },
- "CreateSecurityGroup": {
- "request": {
- "operation": "CreateSecurityGroup",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "SecurityGroup",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "GroupId" }
- ]
- }
- },
- "CreateSubnet": {
- "request": {
- "operation": "CreateSubnet",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Subnet.SubnetId" }
- ],
- "path": "Subnet"
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteVpc",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DescribeAttribute": {
- "request": {
- "operation": "DescribeVpcAttribute",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DetachClassicLinkInstance": {
- "request": {
- "operation": "DetachClassicLinkVpc",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DetachInternetGateway": {
- "request": {
- "operation": "DetachInternetGateway",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DisableClassicLink": {
- "request": {
- "operation": "DisableVpcClassicLink",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "EnableClassicLink": {
- "request": {
- "operation": "EnableVpcClassicLink",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ModifyAttribute": {
- "request": {
- "operation": "ModifyVpcAttribute",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "RequestVpcPeeringConnection": {
- "request": {
- "operation": "CreateVpcPeeringConnection",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "VpcPeeringConnection",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "VpcPeeringConnection.VpcPeeringConnectionId" }
- ],
- "path": "VpcPeeringConnection"
- }
- }
- },
- "has": {
- "DhcpOptions": {
- "resource": {
- "type": "DhcpOptions",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "DhcpOptionsId" }
- ]
- }
- }
- },
- "hasMany": {
- "AcceptedVpcPeeringConnections": {
- "request": {
- "operation": "DescribeVpcPeeringConnections",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "accepter-vpc-info.vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "VpcPeeringConnection",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "VpcPeeringConnections[].VpcPeeringConnectionId" }
- ],
- "path": "VpcPeeringConnections[]"
- }
- },
- "Instances": {
- "request": {
- "operation": "DescribeInstances",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
- ],
- "path": "Reservations[].Instances[]"
- }
- },
- "InternetGateways": {
- "request": {
- "operation": "DescribeInternetGateways",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "attachment.vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "InternetGateway",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "InternetGateways[].InternetGatewayId" }
- ],
- "path": "InternetGateways[]"
- }
- },
- "NetworkAcls": {
- "request": {
- "operation": "DescribeNetworkAcls",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "NetworkAcl",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkAcls[].NetworkAclId" }
- ],
- "path": "NetworkAcls[]"
- }
- },
- "NetworkInterfaces": {
- "request": {
- "operation": "DescribeNetworkInterfaces",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "NetworkInterface",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkInterfaces[].NetworkInterfaceId" }
- ],
- "path": "NetworkInterfaces[]"
- }
- },
- "RequestedVpcPeeringConnections": {
- "request": {
- "operation": "DescribeVpcPeeringConnections",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "requester-vpc-info.vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "VpcPeeringConnection",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "VpcPeeringConnections[].VpcPeeringConnectionId" }
- ],
- "path": "VpcPeeringConnections[]"
- }
- },
- "RouteTables": {
- "request": {
- "operation": "DescribeRouteTables",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "RouteTable",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "RouteTables[].RouteTableId" }
- ],
- "path": "RouteTables[]"
- }
- },
- "SecurityGroups": {
- "request": {
- "operation": "DescribeSecurityGroups",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "SecurityGroup",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "SecurityGroups[].GroupId" }
- ],
- "path": "SecurityGroups[]"
- }
- },
- "Subnets": {
- "request": {
- "operation": "DescribeSubnets",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Subnets[].SubnetId" }
- ],
- "path": "Subnets[]"
- }
- }
- }
- },
- "VpcPeeringConnection": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "VpcPeeringConnectionId"
- }
- ],
- "shape": "VpcPeeringConnection",
- "load": {
- "request": {
- "operation": "DescribeVpcPeeringConnections",
- "params": [
- { "target": "VpcPeeringConnectionIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "VpcPeeringConnections[0]"
- },
- "actions": {
- "Accept": {
- "request": {
- "operation": "AcceptVpcPeeringConnection",
- "params": [
- { "target": "VpcPeeringConnectionId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteVpcPeeringConnection",
- "params": [
- { "target": "VpcPeeringConnectionId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Reject": {
- "request": {
- "operation": "RejectVpcPeeringConnection",
- "params": [
- { "target": "VpcPeeringConnectionId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "has": {
- "AccepterVpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "AccepterVpcInfo.VpcId" }
- ]
- }
- },
- "RequesterVpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "RequesterVpcInfo.VpcId" }
- ]
- }
- }
- }
- }
- }
-}
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/ec2/2015-03-01/resources-1.json b/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/ec2/2015-03-01/resources-1.json
deleted file mode 100644
index 8ccf160a..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/ec2/2015-03-01/resources-1.json
+++ /dev/null
@@ -1,2289 +0,0 @@
-{
- "service": {
- "actions": {
- "CreateDhcpOptions": {
- "request": { "operation": "CreateDhcpOptions" },
- "resource": {
- "type": "DhcpOptions",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "DhcpOptions.DhcpOptionsId" }
- ],
- "path": "DhcpOptions"
- }
- },
- "CreateInstances": {
- "request": { "operation": "RunInstances" },
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Instances[].InstanceId" }
- ],
- "path": "Instances[]"
- }
- },
- "CreateInternetGateway": {
- "request": { "operation": "CreateInternetGateway" },
- "resource": {
- "type": "InternetGateway",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "InternetGateway.InternetGatewayId" }
- ],
- "path": "InternetGateway"
- }
- },
- "CreateKeyPair": {
- "request": { "operation": "CreateKeyPair" },
- "resource": {
- "type": "KeyPair",
- "identifiers": [
- { "target": "Name", "source": "response", "path": "KeyName" }
- ]
- }
- },
- "CreateNetworkAcl": {
- "request": { "operation": "CreateNetworkAcl" },
- "resource": {
- "type": "NetworkAcl",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkAcl.NetworkAclId" }
- ],
- "path": "NetworkAcl"
- }
- },
- "CreateNetworkInterface": {
- "request": { "operation": "CreateNetworkInterface" },
- "resource": {
- "type": "NetworkInterface",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkInterface.NetworkInterfaceId" }
- ],
- "path": "NetworkInterface"
- }
- },
- "CreatePlacementGroup": {
- "request": { "operation": "CreatePlacementGroup" },
- "resource": {
- "type": "PlacementGroup",
- "identifiers": [
- { "target": "Name", "source": "requestParameter", "path": "GroupName" }
- ]
- }
- },
- "CreateRouteTable": {
- "request": { "operation": "CreateRouteTable" },
- "resource": {
- "type": "RouteTable",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "RouteTable.RouteTableId" }
- ],
- "path": "RouteTable"
- }
- },
- "CreateSecurityGroup": {
- "request": { "operation": "CreateSecurityGroup" },
- "resource": {
- "type": "SecurityGroup",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "GroupId" }
- ]
- }
- },
- "CreateSnapshot": {
- "request": { "operation": "CreateSnapshot" },
- "resource": {
- "type": "Snapshot",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "SnapshotId" }
- ],
- "path": "@"
- }
- },
- "CreateSubnet": {
- "request": { "operation": "CreateSubnet" },
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Subnet.SubnetId" }
- ],
- "path": "Subnet"
- }
- },
- "CreateTags": {
- "request": { "operation": "CreateTags" },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "requestParameter", "path": "Resources[]" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "CreateVolume": {
- "request": { "operation": "CreateVolume" },
- "resource": {
- "type": "Volume",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "VolumeId" }
- ],
- "path": "@"
- }
- },
- "CreateVpc": {
- "request": { "operation": "CreateVpc" },
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Vpc.VpcId" }
- ],
- "path": "Vpc"
- }
- },
- "CreateVpcPeeringConnection": {
- "request": { "operation": "CreateVpcPeeringConnection" },
- "resource": {
- "type": "VpcPeeringConnection",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "VpcPeeringConnection.VpcPeeringConnectionId" }
- ],
- "path": "VpcPeeringConnection"
- }
- },
- "DisassociateRouteTable": {
- "request": { "operation": "DisassociateRouteTable" }
- },
- "ImportKeyPair": {
- "request": { "operation": "ImportKeyPair" },
- "resource": {
- "type": "KeyPair",
- "identifiers": [
- { "target": "Name", "source": "response", "path": "KeyName" }
- ]
- }
- },
- "RegisterImage": {
- "request": { "operation": "RegisterImage" },
- "resource": {
- "type": "Image",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "ImageId" }
- ]
- }
- }
- },
- "has": {
- "DhcpOptions": {
- "resource": {
- "type": "DhcpOptions",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Image": {
- "resource": {
- "type": "Image",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Instance": {
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "InternetGateway": {
- "resource": {
- "type": "InternetGateway",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "KeyPair": {
- "resource": {
- "type": "KeyPair",
- "identifiers": [
- { "target": "Name", "source": "input" }
- ]
- }
- },
- "NetworkAcl": {
- "resource": {
- "type": "NetworkAcl",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "NetworkInterface": {
- "resource": {
- "type": "NetworkInterface",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "PlacementGroup": {
- "resource": {
- "type": "PlacementGroup",
- "identifiers": [
- { "target": "Name", "source": "input" }
- ]
- }
- },
- "RouteTable": {
- "resource": {
- "type": "RouteTable",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "RouteTableAssociation": {
- "resource": {
- "type": "RouteTableAssociation",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "SecurityGroup": {
- "resource": {
- "type": "SecurityGroup",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Snapshot": {
- "resource": {
- "type": "Snapshot",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Subnet": {
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Volume": {
- "resource": {
- "type": "Volume",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Vpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "VpcPeeringConnection": {
- "resource": {
- "type": "VpcPeeringConnection",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- }
- },
- "hasMany": {
- "DhcpOptionsSets": {
- "request": { "operation": "DescribeDhcpOptions" },
- "resource": {
- "type": "DhcpOptions",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "DhcpOptions[].DhcpOptionsId" }
- ],
- "path": "DhcpOptions[]"
- }
- },
- "Images": {
- "request": { "operation": "DescribeImages" },
- "resource": {
- "type": "Image",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Images[].ImageId" }
- ],
- "path": "Images[]"
- }
- },
- "Instances": {
- "request": { "operation": "DescribeInstances" },
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
- ],
- "path": "Reservations[].Instances[]"
- }
- },
- "InternetGateways": {
- "request": { "operation": "DescribeInternetGateways" },
- "resource": {
- "type": "InternetGateway",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "InternetGateways[].InternetGatewayId" }
- ],
- "path": "InternetGateways[]"
- }
- },
- "KeyPairs": {
- "request": { "operation": "DescribeKeyPairs" },
- "resource": {
- "type": "KeyPair",
- "identifiers": [
- { "target": "Name", "source": "response", "path": "KeyPairs[].KeyName" }
- ],
- "path": "KeyPairs[]"
- }
- },
- "NetworkAcls": {
- "request": { "operation": "DescribeNetworkAcls" },
- "resource": {
- "type": "NetworkAcl",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkAcls[].NetworkAclId" }
- ],
- "path": "NetworkAcls[]"
- }
- },
- "NetworkInterfaces": {
- "request": { "operation": "DescribeNetworkInterfaces" },
- "resource": {
- "type": "NetworkInterface",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkInterfaces[].NetworkInterfaceId" }
- ],
- "path": "NetworkInterfaces[]"
- }
- },
- "PlacementGroups": {
- "request": { "operation": "DescribePlacementGroups" },
- "resource": {
- "type": "PlacementGroup",
- "identifiers": [
- { "target": "Name", "source": "response", "path": "PlacementGroups[].GroupName" }
- ],
- "path": "PlacementGroups[]"
- }
- },
- "RouteTables": {
- "request": { "operation": "DescribeRouteTables" },
- "resource": {
- "type": "RouteTable",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "RouteTables[].RouteTableId" }
- ],
- "path": "RouteTables[]"
- }
- },
- "SecurityGroups": {
- "request": { "operation": "DescribeSecurityGroups" },
- "resource": {
- "type": "SecurityGroup",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "SecurityGroups[].GroupId" }
- ],
- "path": "SecurityGroups[]"
- }
- },
- "Snapshots": {
- "request": { "operation": "DescribeSnapshots" },
- "resource": {
- "type": "Snapshot",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Snapshots[].SnapshotId" }
- ],
- "path": "Snapshots[]"
- }
- },
- "Subnets": {
- "request": { "operation": "DescribeSubnets" },
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Subnets[].SubnetId" }
- ],
- "path": "Subnets[]"
- }
- },
- "Volumes": {
- "request": { "operation": "DescribeVolumes" },
- "resource": {
- "type": "Volume",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Volumes[].VolumeId" }
- ],
- "path": "Volumes[]"
- }
- },
- "VpcPeeringConnections": {
- "request": { "operation": "DescribeVpcPeeringConnections" },
- "resource": {
- "type": "VpcPeeringConnection",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "VpcPeeringConnections[].VpcPeeringConnectionId" }
- ],
- "path": "VpcPeeringConnections[]"
- }
- },
- "Vpcs": {
- "request": { "operation": "DescribeVpcs" },
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Vpcs[].VpcId" }
- ],
- "path": "Vpcs[]"
- }
- }
- }
- },
- "resources": {
- "DhcpOptions": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "DhcpOptionsId"
- }
- ],
- "shape": "DhcpOptions",
- "load": {
- "request": {
- "operation": "DescribeDhcpOptions",
- "params": [
- { "target": "DhcpOptionsIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "DhcpOptions[0]"
- },
- "actions": {
- "AssociateWithVpc": {
- "request": {
- "operation": "AssociateDhcpOptions",
- "params": [
- { "target": "DhcpOptionsId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteDhcpOptions",
- "params": [
- { "target": "DhcpOptionsId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- }
- },
- "Image": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "ImageId"
- }
- ],
- "shape": "Image",
- "load": {
- "request": {
- "operation": "DescribeImages",
- "params": [
- { "target": "ImageIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "Images[0]"
- },
- "actions": {
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Deregister": {
- "request": {
- "operation": "DeregisterImage",
- "params": [
- { "target": "ImageId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DescribeAttribute": {
- "request": {
- "operation": "DescribeImageAttribute",
- "params": [
- { "target": "ImageId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ModifyAttribute": {
- "request": {
- "operation": "ModifyImageAttribute",
- "params": [
- { "target": "ImageId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ResetAttribute": {
- "request": {
- "operation": "ResetImageAttribute",
- "params": [
- { "target": "ImageId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- }
- },
- "Instance": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "InstanceId"
- }
- ],
- "shape": "Instance",
- "load": {
- "request": {
- "operation": "DescribeInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "Reservations[0].Instances[0]"
- },
- "actions": {
- "AttachClassicLinkVpc": {
- "request": {
- "operation": "AttachClassicLinkVpc",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "AttachVolume": {
- "request": {
- "operation": "AttachVolume",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ConsoleOutput": {
- "request": {
- "operation": "GetConsoleOutput",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateImage": {
- "request": {
- "operation": "CreateImage",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Image",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "ImageId" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "DescribeAttribute": {
- "request": {
- "operation": "DescribeInstanceAttribute",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DetachClassicLinkVpc": {
- "request": {
- "operation": "DetachClassicLinkVpc",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DetachVolume": {
- "request": {
- "operation": "DetachVolume",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ModifyAttribute": {
- "request": {
- "operation": "ModifyInstanceAttribute",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Monitor": {
- "request": {
- "operation": "MonitorInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "PasswordData": {
- "request": {
- "operation": "GetPasswordData",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Reboot": {
- "request": {
- "operation": "RebootInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ReportStatus": {
- "request": {
- "operation": "ReportInstanceStatus",
- "params": [
- { "target": "Instances[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ResetAttribute": {
- "request": {
- "operation": "ResetInstanceAttribute",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ResetKernel": {
- "request": {
- "operation": "ResetInstanceAttribute",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" },
- { "target": "Attribute", "source": "string", "value": "kernel" }
- ]
- }
- },
- "ResetRamdisk": {
- "request": {
- "operation": "ResetInstanceAttribute",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" },
- { "target": "Attribute", "source": "string", "value": "ramdisk" }
- ]
- }
- },
- "ResetSourceDestCheck": {
- "request": {
- "operation": "ResetInstanceAttribute",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" },
- { "target": "Attribute", "source": "string", "value": "sourceDestCheck" }
- ]
- }
- },
- "Start": {
- "request": {
- "operation": "StartInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Stop": {
- "request": {
- "operation": "StopInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Terminate": {
- "request": {
- "operation": "TerminateInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Unmonitor": {
- "request": {
- "operation": "UnmonitorInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "batchActions": {
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Monitor": {
- "request": {
- "operation": "MonitorInstances",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Reboot": {
- "request": {
- "operation": "RebootInstances",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Start": {
- "request": {
- "operation": "StartInstances",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Stop": {
- "request": {
- "operation": "StopInstances",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Terminate": {
- "request": {
- "operation": "TerminateInstances",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Unmonitor": {
- "request": {
- "operation": "UnmonitorInstances",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "waiters": {
- "Exists": {
- "waiterName": "InstanceExists",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ],
- "path": "Reservations[0].Instances[0]"
- },
- "Running": {
- "waiterName": "InstanceRunning",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ],
- "path": "Reservations[0].Instances[0]"
- },
- "Stopped": {
- "waiterName": "InstanceStopped",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ],
- "path": "Reservations[0].Instances[0]"
- },
- "Terminated": {
- "waiterName": "InstanceTerminated",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ],
- "path": "Reservations[0].Instances[0]"
- }
- },
- "has": {
- "Image": {
- "resource": {
- "type": "Image",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "ImageId" }
- ]
- }
- },
- "KeyPair": {
- "resource": {
- "type": "KeyPair",
- "identifiers": [
- { "target": "Name", "source": "data", "path": "KeyName" }
- ]
- }
- },
- "PlacementGroup": {
- "resource": {
- "type": "PlacementGroup",
- "identifiers": [
- { "target": "Name", "source": "data", "path": "Placement.GroupName" }
- ]
- }
- },
- "Subnet": {
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "SubnetId" }
- ]
- }
- },
- "Vpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "VpcId" }
- ]
- }
- }
- },
- "hasMany": {
- "Volumes": {
- "request": {
- "operation": "DescribeVolumes",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "attachment.instance-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Volume",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Volumes[].VolumeId" }
- ],
- "path": "Volumes[]"
- }
- }
- }
- },
- "InternetGateway": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "InternetGatewayId"
- }
- ],
- "shape": "InternetGateway",
- "load": {
- "request": {
- "operation": "DescribeInternetGateways",
- "params": [
- { "target": "InternetGatewayIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "InternetGateways[0]"
- },
- "actions": {
- "AttachToVpc": {
- "request": {
- "operation": "AttachInternetGateway",
- "params": [
- { "target": "InternetGatewayId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteInternetGateway",
- "params": [
- { "target": "InternetGatewayId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DetachFromVpc": {
- "request": {
- "operation": "DetachInternetGateway",
- "params": [
- { "target": "InternetGatewayId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- }
- },
- "KeyPair": {
- "identifiers": [
- {
- "name": "Name",
- "memberName": "KeyName"
- }
- ],
- "shape": "KeyPairInfo",
- "load": {
- "request": {
- "operation": "DescribeKeyPairs",
- "params": [
- { "target": "KeyNames[0]", "source": "identifier", "name": "Name" }
- ]
- },
- "path": "KeyPairs[0]"
- },
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeleteKeyPair",
- "params": [
- { "target": "KeyName", "source": "identifier", "name": "Name" }
- ]
- }
- }
- }
- },
- "NetworkAcl": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "NetworkAclId"
- }
- ],
- "shape": "NetworkAcl",
- "load": {
- "request": {
- "operation": "DescribeNetworkAcls",
- "params": [
- { "target": "NetworkAclIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "NetworkAcls[0]"
- },
- "actions": {
- "CreateEntry": {
- "request": {
- "operation": "CreateNetworkAclEntry",
- "params": [
- { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteNetworkAcl",
- "params": [
- { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DeleteEntry": {
- "request": {
- "operation": "DeleteNetworkAclEntry",
- "params": [
- { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ReplaceAssociation": {
- "request": {
- "operation": "ReplaceNetworkAclAssociation",
- "params": [
- { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ReplaceEntry": {
- "request": {
- "operation": "ReplaceNetworkAclEntry",
- "params": [
- { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "has": {
- "Vpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "VpcId" }
- ]
- }
- }
- }
- },
- "NetworkInterface": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "NetworkInterfaceId"
- }
- ],
- "shape": "NetworkInterface",
- "load": {
- "request": {
- "operation": "DescribeNetworkInterfaces",
- "params": [
- { "target": "NetworkInterfaceIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "NetworkInterfaces[0]"
- },
- "actions": {
- "AssignPrivateIpAddresses": {
- "request": {
- "operation": "AssignPrivateIpAddresses",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Attach": {
- "request": {
- "operation": "AttachNetworkInterface",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteNetworkInterface",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DescribeAttribute": {
- "request": {
- "operation": "DescribeNetworkInterfaceAttribute",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Detach": {
- "request": {
- "operation": "DetachNetworkInterface",
- "params": [
- { "target": "AttachmentId", "source": "data", "path": "Attachment.AttachmentId" }
- ]
- }
- },
- "ModifyAttribute": {
- "request": {
- "operation": "ModifyNetworkInterfaceAttribute",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ResetAttribute": {
- "request": {
- "operation": "ResetNetworkInterfaceAttribute",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "UnassignPrivateIpAddresses": {
- "request": {
- "operation": "UnassignPrivateIpAddresses",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "has": {
- "Subnet": {
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "SubnetId" }
- ]
- }
- },
- "Vpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "VpcId" }
- ]
- }
- }
- }
- },
- "PlacementGroup": {
- "identifiers": [
- {
- "name": "Name",
- "memberName": "GroupName"
- }
- ],
- "shape": "PlacementGroup",
- "load": {
- "request": {
- "operation": "DescribePlacementGroups",
- "params": [
- { "target": "GroupNames[0]", "source": "identifier", "name": "Name" }
- ]
- },
- "path": "PlacementGroups[0]"
- },
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeletePlacementGroup",
- "params": [
- { "target": "GroupName", "source": "identifier", "name": "Name" }
- ]
- }
- }
- },
- "hasMany": {
- "Instances": {
- "request": {
- "operation": "DescribeInstances",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "placement-group-name" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Name" }
- ]
- },
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
- ],
- "path": "Reservations[].Instances[]"
- }
- }
- }
- },
- "RouteTable": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "RouteTableId"
- }
- ],
- "shape": "RouteTable",
- "load": {
- "request": {
- "operation": "DescribeRouteTables",
- "params": [
- { "target": "RouteTableIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "RouteTables[0]"
- },
- "actions": {
- "AssociateWithSubnet": {
- "request": {
- "operation": "AssociateRouteTable",
- "params": [
- { "target": "RouteTableId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "RouteTableAssociation",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "AssociationId" }
- ]
- }
- },
- "CreateRoute": {
- "request": {
- "operation": "CreateRoute",
- "params": [
- { "target": "RouteTableId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteRouteTable",
- "params": [
- { "target": "RouteTableId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "has": {
- "Vpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "VpcId" }
- ]
- }
- }
- },
- "hasMany": {
- "Associations": {
- "request": {
- "operation": "DescribeRouteTables",
- "params": [
- { "target": "RouteTableIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "RouteTableAssociation",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "RouteTables[0].Associations[].RouteTableAssociationId" }
- ],
- "path": "RouteTables[0].Associations[]"
- }
- }
- }
- },
- "RouteTableAssociation": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "RouteTableAssociationId"
- }
- ],
- "shape": "RouteTableAssociation",
- "actions": {
- "Delete": {
- "request": {
- "operation": "DisassociateRouteTable",
- "params": [
- { "target": "AssociationId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ReplaceSubnet": {
- "request": {
- "operation": "ReplaceRouteTableAssociation",
- "params": [
- { "target": "AssociationId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "RouteTableAssociation",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NewAssociationId" }
- ]
- }
- }
- },
- "has": {
- "RouteTable": {
- "resource": {
- "type": "RouteTable",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "RouteTableId" }
- ]
- }
- },
- "Subnet": {
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "SubnetId" }
- ]
- }
- }
- }
- },
- "SecurityGroup": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "GroupId"
- }
- ],
- "shape": "SecurityGroup",
- "load": {
- "request": {
- "operation": "DescribeSecurityGroups",
- "params": [
- { "target": "GroupIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "SecurityGroups[0]"
- },
- "actions": {
- "AuthorizeEgress": {
- "request": {
- "operation": "AuthorizeSecurityGroupEgress",
- "params": [
- { "target": "GroupId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "AuthorizeIngress": {
- "request": {
- "operation": "AuthorizeSecurityGroupIngress",
- "params": [
- { "target": "GroupId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteSecurityGroup",
- "params": [
- { "target": "GroupId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "RevokeEgress": {
- "request": {
- "operation": "RevokeSecurityGroupEgress",
- "params": [
- { "target": "GroupId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "RevokeIngress": {
- "request": {
- "operation": "RevokeSecurityGroupIngress",
- "params": [
- { "target": "GroupId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- }
- },
- "Snapshot": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "SnapshotId"
- }
- ],
- "shape": "Snapshot",
- "load": {
- "request": {
- "operation": "DescribeSnapshots",
- "params": [
- { "target": "SnapshotIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "Snapshots[0]"
- },
- "actions": {
- "Copy": {
- "request": {
- "operation": "CopySnapshot",
- "params": [
- { "target": "SourceSnapshotId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteSnapshot",
- "params": [
- { "target": "SnapshotId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DescribeAttribute": {
- "request": {
- "operation": "DescribeSnapshotAttribute",
- "params": [
- { "target": "SnapshotId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ModifyAttribute": {
- "request": {
- "operation": "ModifySnapshotAttribute",
- "params": [
- { "target": "SnapshotId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ResetAttribute": {
- "request": {
- "operation": "ResetSnapshotAttribute",
- "params": [
- { "target": "SnapshotId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "waiters": {
- "Completed": {
- "waiterName": "SnapshotCompleted",
- "params": [
- { "target": "SnapshotIds[]", "source": "identifier", "name": "Id" }
- ],
- "path": "Snapshots[]"
- }
- },
- "has": {
- "Volume": {
- "resource": {
- "type": "Volume",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "VolumeId" }
- ]
- }
- }
- }
- },
- "Subnet": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "SubnetId"
- }
- ],
- "shape": "Subnet",
- "load": {
- "request": {
- "operation": "DescribeSubnets",
- "params": [
- { "target": "SubnetIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "Subnets[0]"
- },
- "actions": {
- "CreateInstances": {
- "request": {
- "operation": "RunInstances",
- "params": [
- { "target": "SubnetId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Instances[].InstanceId" }
- ],
- "path": "Instances[]"
- }
- },
- "CreateNetworkInterface": {
- "request": {
- "operation": "CreateNetworkInterface",
- "params": [
- { "target": "SubnetId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "NetworkInterface",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkInterface.NetworkInterfaceId" }
- ],
- "path": "NetworkInterface"
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteSubnet",
- "params": [
- { "target": "SubnetId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "has": {
- "Vpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "VpcId" }
- ]
- }
- }
- },
- "hasMany": {
- "Instances": {
- "request": {
- "operation": "DescribeInstances",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "subnet-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
- ],
- "path": "Reservations[].Instances[]"
- }
- },
- "NetworkInterfaces": {
- "request": {
- "operation": "DescribeNetworkInterfaces",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "subnet-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "NetworkInterface",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkInterfaces[].NetworkInterfaceId" }
- ],
- "path": "NetworkInterfaces[]"
- }
- }
- }
- },
- "Tag": {
- "identifiers": [
- {
- "name": "ResourceId",
- "memberName": "ResourceId"
- },
- {
- "name": "Key",
- "memberName": "Key"
- },
- {
- "name": "Value",
- "memberName": "Value"
- }
- ],
- "shape": "TagDescription",
- "load": {
- "request": {
- "operation": "DescribeTags",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "key" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Key" },
- { "target": "Filters[1].Name", "source": "string", "value": "value" },
- { "target": "Filters[1].Values[0]", "source": "identifier", "name": "Value" }
- ]
- },
- "path": "Tags[0]"
- },
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeleteTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "ResourceId" },
- { "target": "Tags[0].Key", "source": "identifier", "name": "Key" },
- { "target": "Tags[0].Value", "source": "identifier", "name": "Value" }
- ]
- }
- }
- },
- "batchActions": {
- "Delete": {
- "request": {
- "operation": "DeleteTags",
- "params": [
- { "target": "Resources[]", "source": "identifier", "name": "ResourceId" },
- { "target": "Tags[*].Key", "source": "identifier", "name": "Key" },
- { "target": "Tags[*].Value", "source": "identifier", "name": "Value" }
- ]
- }
- }
- }
- },
- "Volume": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "VolumeId"
- }
- ],
- "shape": "Volume",
- "load": {
- "request": {
- "operation": "DescribeVolumes",
- "params": [
- { "target": "VolumeIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "Volumes[0]"
- },
- "actions": {
- "AttachToInstance": {
- "request": {
- "operation": "AttachVolume",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateSnapshot": {
- "request": {
- "operation": "CreateSnapshot",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Snapshot",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "SnapshotId" }
- ],
- "path": "@"
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteVolume",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DescribeAttribute": {
- "request": {
- "operation": "DescribeVolumeAttribute",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DescribeStatus": {
- "request": {
- "operation": "DescribeVolumeStatus",
- "params": [
- { "target": "VolumeIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DetachFromInstance": {
- "request": {
- "operation": "DetachVolume",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "EnableIo": {
- "request": {
- "operation": "EnableVolumeIO",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ModifyAttribute": {
- "request": {
- "operation": "ModifyVolumeAttribute",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "hasMany": {
- "Snapshots": {
- "request": {
- "operation": "DescribeSnapshots",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "volume-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Snapshot",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Snapshots[].SnapshotId" }
- ],
- "path": "Snapshots[]"
- }
- }
- }
- },
- "Vpc": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "VpcId"
- }
- ],
- "shape": "Vpc",
- "load": {
- "request": {
- "operation": "DescribeVpcs",
- "params": [
- { "target": "VpcIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "Vpcs[0]"
- },
- "actions": {
- "AssociateDhcpOptions": {
- "request": {
- "operation": "AssociateDhcpOptions",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "AttachClassicLinkInstance": {
- "request": {
- "operation": "AttachClassicLinkVpc",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "AttachInternetGateway": {
- "request": {
- "operation": "AttachInternetGateway",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateNetworkAcl": {
- "request": {
- "operation": "CreateNetworkAcl",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "NetworkAcl",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkAcl.NetworkAclId" }
- ],
- "path": "NetworkAcl"
- }
- },
- "CreateRouteTable": {
- "request": {
- "operation": "CreateRouteTable",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "RouteTable",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "RouteTable.RouteTableId" }
- ],
- "path": "RouteTable"
- }
- },
- "CreateSecurityGroup": {
- "request": {
- "operation": "CreateSecurityGroup",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "SecurityGroup",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "GroupId" }
- ]
- }
- },
- "CreateSubnet": {
- "request": {
- "operation": "CreateSubnet",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Subnet.SubnetId" }
- ],
- "path": "Subnet"
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteVpc",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DescribeAttribute": {
- "request": {
- "operation": "DescribeVpcAttribute",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DetachClassicLinkInstance": {
- "request": {
- "operation": "DetachClassicLinkVpc",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DetachInternetGateway": {
- "request": {
- "operation": "DetachInternetGateway",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DisableClassicLink": {
- "request": {
- "operation": "DisableVpcClassicLink",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "EnableClassicLink": {
- "request": {
- "operation": "EnableVpcClassicLink",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ModifyAttribute": {
- "request": {
- "operation": "ModifyVpcAttribute",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "RequestVpcPeeringConnection": {
- "request": {
- "operation": "CreateVpcPeeringConnection",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "VpcPeeringConnection",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "VpcPeeringConnection.VpcPeeringConnectionId" }
- ],
- "path": "VpcPeeringConnection"
- }
- }
- },
- "has": {
- "DhcpOptions": {
- "resource": {
- "type": "DhcpOptions",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "DhcpOptionsId" }
- ]
- }
- }
- },
- "hasMany": {
- "AcceptedVpcPeeringConnections": {
- "request": {
- "operation": "DescribeVpcPeeringConnections",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "accepter-vpc-info.vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "VpcPeeringConnection",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "VpcPeeringConnections[].VpcPeeringConnectionId" }
- ],
- "path": "VpcPeeringConnections[]"
- }
- },
- "Instances": {
- "request": {
- "operation": "DescribeInstances",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
- ],
- "path": "Reservations[].Instances[]"
- }
- },
- "InternetGateways": {
- "request": {
- "operation": "DescribeInternetGateways",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "attachment.vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "InternetGateway",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "InternetGateways[].InternetGatewayId" }
- ],
- "path": "InternetGateways[]"
- }
- },
- "NetworkAcls": {
- "request": {
- "operation": "DescribeNetworkAcls",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "NetworkAcl",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkAcls[].NetworkAclId" }
- ],
- "path": "NetworkAcls[]"
- }
- },
- "NetworkInterfaces": {
- "request": {
- "operation": "DescribeNetworkInterfaces",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "NetworkInterface",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkInterfaces[].NetworkInterfaceId" }
- ],
- "path": "NetworkInterfaces[]"
- }
- },
- "RequestedVpcPeeringConnections": {
- "request": {
- "operation": "DescribeVpcPeeringConnections",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "requester-vpc-info.vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "VpcPeeringConnection",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "VpcPeeringConnections[].VpcPeeringConnectionId" }
- ],
- "path": "VpcPeeringConnections[]"
- }
- },
- "RouteTables": {
- "request": {
- "operation": "DescribeRouteTables",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "RouteTable",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "RouteTables[].RouteTableId" }
- ],
- "path": "RouteTables[]"
- }
- },
- "SecurityGroups": {
- "request": {
- "operation": "DescribeSecurityGroups",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "SecurityGroup",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "SecurityGroups[].GroupId" }
- ],
- "path": "SecurityGroups[]"
- }
- },
- "Subnets": {
- "request": {
- "operation": "DescribeSubnets",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Subnets[].SubnetId" }
- ],
- "path": "Subnets[]"
- }
- }
- }
- },
- "VpcPeeringConnection": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "VpcPeeringConnectionId"
- }
- ],
- "shape": "VpcPeeringConnection",
- "load": {
- "request": {
- "operation": "DescribeVpcPeeringConnections",
- "params": [
- { "target": "VpcPeeringConnectionIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "VpcPeeringConnections[0]"
- },
- "actions": {
- "Accept": {
- "request": {
- "operation": "AcceptVpcPeeringConnection",
- "params": [
- { "target": "VpcPeeringConnectionId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteVpcPeeringConnection",
- "params": [
- { "target": "VpcPeeringConnectionId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Reject": {
- "request": {
- "operation": "RejectVpcPeeringConnection",
- "params": [
- { "target": "VpcPeeringConnectionId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "has": {
- "AccepterVpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "AccepterVpcInfo.VpcId" }
- ]
- }
- },
- "RequesterVpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "RequesterVpcInfo.VpcId" }
- ]
- }
- }
- }
- }
- }
-}
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/ec2/2015-04-15/resources-1.json b/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/ec2/2015-04-15/resources-1.json
deleted file mode 100644
index 8ccf160a..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/ec2/2015-04-15/resources-1.json
+++ /dev/null
@@ -1,2289 +0,0 @@
-{
- "service": {
- "actions": {
- "CreateDhcpOptions": {
- "request": { "operation": "CreateDhcpOptions" },
- "resource": {
- "type": "DhcpOptions",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "DhcpOptions.DhcpOptionsId" }
- ],
- "path": "DhcpOptions"
- }
- },
- "CreateInstances": {
- "request": { "operation": "RunInstances" },
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Instances[].InstanceId" }
- ],
- "path": "Instances[]"
- }
- },
- "CreateInternetGateway": {
- "request": { "operation": "CreateInternetGateway" },
- "resource": {
- "type": "InternetGateway",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "InternetGateway.InternetGatewayId" }
- ],
- "path": "InternetGateway"
- }
- },
- "CreateKeyPair": {
- "request": { "operation": "CreateKeyPair" },
- "resource": {
- "type": "KeyPair",
- "identifiers": [
- { "target": "Name", "source": "response", "path": "KeyName" }
- ]
- }
- },
- "CreateNetworkAcl": {
- "request": { "operation": "CreateNetworkAcl" },
- "resource": {
- "type": "NetworkAcl",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkAcl.NetworkAclId" }
- ],
- "path": "NetworkAcl"
- }
- },
- "CreateNetworkInterface": {
- "request": { "operation": "CreateNetworkInterface" },
- "resource": {
- "type": "NetworkInterface",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkInterface.NetworkInterfaceId" }
- ],
- "path": "NetworkInterface"
- }
- },
- "CreatePlacementGroup": {
- "request": { "operation": "CreatePlacementGroup" },
- "resource": {
- "type": "PlacementGroup",
- "identifiers": [
- { "target": "Name", "source": "requestParameter", "path": "GroupName" }
- ]
- }
- },
- "CreateRouteTable": {
- "request": { "operation": "CreateRouteTable" },
- "resource": {
- "type": "RouteTable",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "RouteTable.RouteTableId" }
- ],
- "path": "RouteTable"
- }
- },
- "CreateSecurityGroup": {
- "request": { "operation": "CreateSecurityGroup" },
- "resource": {
- "type": "SecurityGroup",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "GroupId" }
- ]
- }
- },
- "CreateSnapshot": {
- "request": { "operation": "CreateSnapshot" },
- "resource": {
- "type": "Snapshot",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "SnapshotId" }
- ],
- "path": "@"
- }
- },
- "CreateSubnet": {
- "request": { "operation": "CreateSubnet" },
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Subnet.SubnetId" }
- ],
- "path": "Subnet"
- }
- },
- "CreateTags": {
- "request": { "operation": "CreateTags" },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "requestParameter", "path": "Resources[]" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "CreateVolume": {
- "request": { "operation": "CreateVolume" },
- "resource": {
- "type": "Volume",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "VolumeId" }
- ],
- "path": "@"
- }
- },
- "CreateVpc": {
- "request": { "operation": "CreateVpc" },
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Vpc.VpcId" }
- ],
- "path": "Vpc"
- }
- },
- "CreateVpcPeeringConnection": {
- "request": { "operation": "CreateVpcPeeringConnection" },
- "resource": {
- "type": "VpcPeeringConnection",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "VpcPeeringConnection.VpcPeeringConnectionId" }
- ],
- "path": "VpcPeeringConnection"
- }
- },
- "DisassociateRouteTable": {
- "request": { "operation": "DisassociateRouteTable" }
- },
- "ImportKeyPair": {
- "request": { "operation": "ImportKeyPair" },
- "resource": {
- "type": "KeyPair",
- "identifiers": [
- { "target": "Name", "source": "response", "path": "KeyName" }
- ]
- }
- },
- "RegisterImage": {
- "request": { "operation": "RegisterImage" },
- "resource": {
- "type": "Image",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "ImageId" }
- ]
- }
- }
- },
- "has": {
- "DhcpOptions": {
- "resource": {
- "type": "DhcpOptions",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Image": {
- "resource": {
- "type": "Image",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Instance": {
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "InternetGateway": {
- "resource": {
- "type": "InternetGateway",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "KeyPair": {
- "resource": {
- "type": "KeyPair",
- "identifiers": [
- { "target": "Name", "source": "input" }
- ]
- }
- },
- "NetworkAcl": {
- "resource": {
- "type": "NetworkAcl",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "NetworkInterface": {
- "resource": {
- "type": "NetworkInterface",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "PlacementGroup": {
- "resource": {
- "type": "PlacementGroup",
- "identifiers": [
- { "target": "Name", "source": "input" }
- ]
- }
- },
- "RouteTable": {
- "resource": {
- "type": "RouteTable",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "RouteTableAssociation": {
- "resource": {
- "type": "RouteTableAssociation",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "SecurityGroup": {
- "resource": {
- "type": "SecurityGroup",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Snapshot": {
- "resource": {
- "type": "Snapshot",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Subnet": {
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Volume": {
- "resource": {
- "type": "Volume",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Vpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "VpcPeeringConnection": {
- "resource": {
- "type": "VpcPeeringConnection",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- }
- },
- "hasMany": {
- "DhcpOptionsSets": {
- "request": { "operation": "DescribeDhcpOptions" },
- "resource": {
- "type": "DhcpOptions",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "DhcpOptions[].DhcpOptionsId" }
- ],
- "path": "DhcpOptions[]"
- }
- },
- "Images": {
- "request": { "operation": "DescribeImages" },
- "resource": {
- "type": "Image",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Images[].ImageId" }
- ],
- "path": "Images[]"
- }
- },
- "Instances": {
- "request": { "operation": "DescribeInstances" },
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
- ],
- "path": "Reservations[].Instances[]"
- }
- },
- "InternetGateways": {
- "request": { "operation": "DescribeInternetGateways" },
- "resource": {
- "type": "InternetGateway",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "InternetGateways[].InternetGatewayId" }
- ],
- "path": "InternetGateways[]"
- }
- },
- "KeyPairs": {
- "request": { "operation": "DescribeKeyPairs" },
- "resource": {
- "type": "KeyPair",
- "identifiers": [
- { "target": "Name", "source": "response", "path": "KeyPairs[].KeyName" }
- ],
- "path": "KeyPairs[]"
- }
- },
- "NetworkAcls": {
- "request": { "operation": "DescribeNetworkAcls" },
- "resource": {
- "type": "NetworkAcl",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkAcls[].NetworkAclId" }
- ],
- "path": "NetworkAcls[]"
- }
- },
- "NetworkInterfaces": {
- "request": { "operation": "DescribeNetworkInterfaces" },
- "resource": {
- "type": "NetworkInterface",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkInterfaces[].NetworkInterfaceId" }
- ],
- "path": "NetworkInterfaces[]"
- }
- },
- "PlacementGroups": {
- "request": { "operation": "DescribePlacementGroups" },
- "resource": {
- "type": "PlacementGroup",
- "identifiers": [
- { "target": "Name", "source": "response", "path": "PlacementGroups[].GroupName" }
- ],
- "path": "PlacementGroups[]"
- }
- },
- "RouteTables": {
- "request": { "operation": "DescribeRouteTables" },
- "resource": {
- "type": "RouteTable",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "RouteTables[].RouteTableId" }
- ],
- "path": "RouteTables[]"
- }
- },
- "SecurityGroups": {
- "request": { "operation": "DescribeSecurityGroups" },
- "resource": {
- "type": "SecurityGroup",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "SecurityGroups[].GroupId" }
- ],
- "path": "SecurityGroups[]"
- }
- },
- "Snapshots": {
- "request": { "operation": "DescribeSnapshots" },
- "resource": {
- "type": "Snapshot",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Snapshots[].SnapshotId" }
- ],
- "path": "Snapshots[]"
- }
- },
- "Subnets": {
- "request": { "operation": "DescribeSubnets" },
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Subnets[].SubnetId" }
- ],
- "path": "Subnets[]"
- }
- },
- "Volumes": {
- "request": { "operation": "DescribeVolumes" },
- "resource": {
- "type": "Volume",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Volumes[].VolumeId" }
- ],
- "path": "Volumes[]"
- }
- },
- "VpcPeeringConnections": {
- "request": { "operation": "DescribeVpcPeeringConnections" },
- "resource": {
- "type": "VpcPeeringConnection",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "VpcPeeringConnections[].VpcPeeringConnectionId" }
- ],
- "path": "VpcPeeringConnections[]"
- }
- },
- "Vpcs": {
- "request": { "operation": "DescribeVpcs" },
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Vpcs[].VpcId" }
- ],
- "path": "Vpcs[]"
- }
- }
- }
- },
- "resources": {
- "DhcpOptions": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "DhcpOptionsId"
- }
- ],
- "shape": "DhcpOptions",
- "load": {
- "request": {
- "operation": "DescribeDhcpOptions",
- "params": [
- { "target": "DhcpOptionsIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "DhcpOptions[0]"
- },
- "actions": {
- "AssociateWithVpc": {
- "request": {
- "operation": "AssociateDhcpOptions",
- "params": [
- { "target": "DhcpOptionsId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteDhcpOptions",
- "params": [
- { "target": "DhcpOptionsId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- }
- },
- "Image": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "ImageId"
- }
- ],
- "shape": "Image",
- "load": {
- "request": {
- "operation": "DescribeImages",
- "params": [
- { "target": "ImageIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "Images[0]"
- },
- "actions": {
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Deregister": {
- "request": {
- "operation": "DeregisterImage",
- "params": [
- { "target": "ImageId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DescribeAttribute": {
- "request": {
- "operation": "DescribeImageAttribute",
- "params": [
- { "target": "ImageId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ModifyAttribute": {
- "request": {
- "operation": "ModifyImageAttribute",
- "params": [
- { "target": "ImageId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ResetAttribute": {
- "request": {
- "operation": "ResetImageAttribute",
- "params": [
- { "target": "ImageId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- }
- },
- "Instance": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "InstanceId"
- }
- ],
- "shape": "Instance",
- "load": {
- "request": {
- "operation": "DescribeInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "Reservations[0].Instances[0]"
- },
- "actions": {
- "AttachClassicLinkVpc": {
- "request": {
- "operation": "AttachClassicLinkVpc",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "AttachVolume": {
- "request": {
- "operation": "AttachVolume",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ConsoleOutput": {
- "request": {
- "operation": "GetConsoleOutput",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateImage": {
- "request": {
- "operation": "CreateImage",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Image",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "ImageId" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "DescribeAttribute": {
- "request": {
- "operation": "DescribeInstanceAttribute",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DetachClassicLinkVpc": {
- "request": {
- "operation": "DetachClassicLinkVpc",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DetachVolume": {
- "request": {
- "operation": "DetachVolume",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ModifyAttribute": {
- "request": {
- "operation": "ModifyInstanceAttribute",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Monitor": {
- "request": {
- "operation": "MonitorInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "PasswordData": {
- "request": {
- "operation": "GetPasswordData",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Reboot": {
- "request": {
- "operation": "RebootInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ReportStatus": {
- "request": {
- "operation": "ReportInstanceStatus",
- "params": [
- { "target": "Instances[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ResetAttribute": {
- "request": {
- "operation": "ResetInstanceAttribute",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ResetKernel": {
- "request": {
- "operation": "ResetInstanceAttribute",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" },
- { "target": "Attribute", "source": "string", "value": "kernel" }
- ]
- }
- },
- "ResetRamdisk": {
- "request": {
- "operation": "ResetInstanceAttribute",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" },
- { "target": "Attribute", "source": "string", "value": "ramdisk" }
- ]
- }
- },
- "ResetSourceDestCheck": {
- "request": {
- "operation": "ResetInstanceAttribute",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" },
- { "target": "Attribute", "source": "string", "value": "sourceDestCheck" }
- ]
- }
- },
- "Start": {
- "request": {
- "operation": "StartInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Stop": {
- "request": {
- "operation": "StopInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Terminate": {
- "request": {
- "operation": "TerminateInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Unmonitor": {
- "request": {
- "operation": "UnmonitorInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "batchActions": {
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Monitor": {
- "request": {
- "operation": "MonitorInstances",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Reboot": {
- "request": {
- "operation": "RebootInstances",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Start": {
- "request": {
- "operation": "StartInstances",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Stop": {
- "request": {
- "operation": "StopInstances",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Terminate": {
- "request": {
- "operation": "TerminateInstances",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Unmonitor": {
- "request": {
- "operation": "UnmonitorInstances",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "waiters": {
- "Exists": {
- "waiterName": "InstanceExists",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ],
- "path": "Reservations[0].Instances[0]"
- },
- "Running": {
- "waiterName": "InstanceRunning",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ],
- "path": "Reservations[0].Instances[0]"
- },
- "Stopped": {
- "waiterName": "InstanceStopped",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ],
- "path": "Reservations[0].Instances[0]"
- },
- "Terminated": {
- "waiterName": "InstanceTerminated",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ],
- "path": "Reservations[0].Instances[0]"
- }
- },
- "has": {
- "Image": {
- "resource": {
- "type": "Image",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "ImageId" }
- ]
- }
- },
- "KeyPair": {
- "resource": {
- "type": "KeyPair",
- "identifiers": [
- { "target": "Name", "source": "data", "path": "KeyName" }
- ]
- }
- },
- "PlacementGroup": {
- "resource": {
- "type": "PlacementGroup",
- "identifiers": [
- { "target": "Name", "source": "data", "path": "Placement.GroupName" }
- ]
- }
- },
- "Subnet": {
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "SubnetId" }
- ]
- }
- },
- "Vpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "VpcId" }
- ]
- }
- }
- },
- "hasMany": {
- "Volumes": {
- "request": {
- "operation": "DescribeVolumes",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "attachment.instance-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Volume",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Volumes[].VolumeId" }
- ],
- "path": "Volumes[]"
- }
- }
- }
- },
- "InternetGateway": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "InternetGatewayId"
- }
- ],
- "shape": "InternetGateway",
- "load": {
- "request": {
- "operation": "DescribeInternetGateways",
- "params": [
- { "target": "InternetGatewayIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "InternetGateways[0]"
- },
- "actions": {
- "AttachToVpc": {
- "request": {
- "operation": "AttachInternetGateway",
- "params": [
- { "target": "InternetGatewayId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteInternetGateway",
- "params": [
- { "target": "InternetGatewayId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DetachFromVpc": {
- "request": {
- "operation": "DetachInternetGateway",
- "params": [
- { "target": "InternetGatewayId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- }
- },
- "KeyPair": {
- "identifiers": [
- {
- "name": "Name",
- "memberName": "KeyName"
- }
- ],
- "shape": "KeyPairInfo",
- "load": {
- "request": {
- "operation": "DescribeKeyPairs",
- "params": [
- { "target": "KeyNames[0]", "source": "identifier", "name": "Name" }
- ]
- },
- "path": "KeyPairs[0]"
- },
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeleteKeyPair",
- "params": [
- { "target": "KeyName", "source": "identifier", "name": "Name" }
- ]
- }
- }
- }
- },
- "NetworkAcl": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "NetworkAclId"
- }
- ],
- "shape": "NetworkAcl",
- "load": {
- "request": {
- "operation": "DescribeNetworkAcls",
- "params": [
- { "target": "NetworkAclIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "NetworkAcls[0]"
- },
- "actions": {
- "CreateEntry": {
- "request": {
- "operation": "CreateNetworkAclEntry",
- "params": [
- { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteNetworkAcl",
- "params": [
- { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DeleteEntry": {
- "request": {
- "operation": "DeleteNetworkAclEntry",
- "params": [
- { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ReplaceAssociation": {
- "request": {
- "operation": "ReplaceNetworkAclAssociation",
- "params": [
- { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ReplaceEntry": {
- "request": {
- "operation": "ReplaceNetworkAclEntry",
- "params": [
- { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "has": {
- "Vpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "VpcId" }
- ]
- }
- }
- }
- },
- "NetworkInterface": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "NetworkInterfaceId"
- }
- ],
- "shape": "NetworkInterface",
- "load": {
- "request": {
- "operation": "DescribeNetworkInterfaces",
- "params": [
- { "target": "NetworkInterfaceIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "NetworkInterfaces[0]"
- },
- "actions": {
- "AssignPrivateIpAddresses": {
- "request": {
- "operation": "AssignPrivateIpAddresses",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Attach": {
- "request": {
- "operation": "AttachNetworkInterface",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteNetworkInterface",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DescribeAttribute": {
- "request": {
- "operation": "DescribeNetworkInterfaceAttribute",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Detach": {
- "request": {
- "operation": "DetachNetworkInterface",
- "params": [
- { "target": "AttachmentId", "source": "data", "path": "Attachment.AttachmentId" }
- ]
- }
- },
- "ModifyAttribute": {
- "request": {
- "operation": "ModifyNetworkInterfaceAttribute",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ResetAttribute": {
- "request": {
- "operation": "ResetNetworkInterfaceAttribute",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "UnassignPrivateIpAddresses": {
- "request": {
- "operation": "UnassignPrivateIpAddresses",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "has": {
- "Subnet": {
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "SubnetId" }
- ]
- }
- },
- "Vpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "VpcId" }
- ]
- }
- }
- }
- },
- "PlacementGroup": {
- "identifiers": [
- {
- "name": "Name",
- "memberName": "GroupName"
- }
- ],
- "shape": "PlacementGroup",
- "load": {
- "request": {
- "operation": "DescribePlacementGroups",
- "params": [
- { "target": "GroupNames[0]", "source": "identifier", "name": "Name" }
- ]
- },
- "path": "PlacementGroups[0]"
- },
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeletePlacementGroup",
- "params": [
- { "target": "GroupName", "source": "identifier", "name": "Name" }
- ]
- }
- }
- },
- "hasMany": {
- "Instances": {
- "request": {
- "operation": "DescribeInstances",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "placement-group-name" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Name" }
- ]
- },
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
- ],
- "path": "Reservations[].Instances[]"
- }
- }
- }
- },
- "RouteTable": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "RouteTableId"
- }
- ],
- "shape": "RouteTable",
- "load": {
- "request": {
- "operation": "DescribeRouteTables",
- "params": [
- { "target": "RouteTableIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "RouteTables[0]"
- },
- "actions": {
- "AssociateWithSubnet": {
- "request": {
- "operation": "AssociateRouteTable",
- "params": [
- { "target": "RouteTableId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "RouteTableAssociation",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "AssociationId" }
- ]
- }
- },
- "CreateRoute": {
- "request": {
- "operation": "CreateRoute",
- "params": [
- { "target": "RouteTableId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteRouteTable",
- "params": [
- { "target": "RouteTableId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "has": {
- "Vpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "VpcId" }
- ]
- }
- }
- },
- "hasMany": {
- "Associations": {
- "request": {
- "operation": "DescribeRouteTables",
- "params": [
- { "target": "RouteTableIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "RouteTableAssociation",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "RouteTables[0].Associations[].RouteTableAssociationId" }
- ],
- "path": "RouteTables[0].Associations[]"
- }
- }
- }
- },
- "RouteTableAssociation": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "RouteTableAssociationId"
- }
- ],
- "shape": "RouteTableAssociation",
- "actions": {
- "Delete": {
- "request": {
- "operation": "DisassociateRouteTable",
- "params": [
- { "target": "AssociationId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ReplaceSubnet": {
- "request": {
- "operation": "ReplaceRouteTableAssociation",
- "params": [
- { "target": "AssociationId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "RouteTableAssociation",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NewAssociationId" }
- ]
- }
- }
- },
- "has": {
- "RouteTable": {
- "resource": {
- "type": "RouteTable",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "RouteTableId" }
- ]
- }
- },
- "Subnet": {
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "SubnetId" }
- ]
- }
- }
- }
- },
- "SecurityGroup": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "GroupId"
- }
- ],
- "shape": "SecurityGroup",
- "load": {
- "request": {
- "operation": "DescribeSecurityGroups",
- "params": [
- { "target": "GroupIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "SecurityGroups[0]"
- },
- "actions": {
- "AuthorizeEgress": {
- "request": {
- "operation": "AuthorizeSecurityGroupEgress",
- "params": [
- { "target": "GroupId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "AuthorizeIngress": {
- "request": {
- "operation": "AuthorizeSecurityGroupIngress",
- "params": [
- { "target": "GroupId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteSecurityGroup",
- "params": [
- { "target": "GroupId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "RevokeEgress": {
- "request": {
- "operation": "RevokeSecurityGroupEgress",
- "params": [
- { "target": "GroupId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "RevokeIngress": {
- "request": {
- "operation": "RevokeSecurityGroupIngress",
- "params": [
- { "target": "GroupId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- }
- },
- "Snapshot": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "SnapshotId"
- }
- ],
- "shape": "Snapshot",
- "load": {
- "request": {
- "operation": "DescribeSnapshots",
- "params": [
- { "target": "SnapshotIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "Snapshots[0]"
- },
- "actions": {
- "Copy": {
- "request": {
- "operation": "CopySnapshot",
- "params": [
- { "target": "SourceSnapshotId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteSnapshot",
- "params": [
- { "target": "SnapshotId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DescribeAttribute": {
- "request": {
- "operation": "DescribeSnapshotAttribute",
- "params": [
- { "target": "SnapshotId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ModifyAttribute": {
- "request": {
- "operation": "ModifySnapshotAttribute",
- "params": [
- { "target": "SnapshotId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ResetAttribute": {
- "request": {
- "operation": "ResetSnapshotAttribute",
- "params": [
- { "target": "SnapshotId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "waiters": {
- "Completed": {
- "waiterName": "SnapshotCompleted",
- "params": [
- { "target": "SnapshotIds[]", "source": "identifier", "name": "Id" }
- ],
- "path": "Snapshots[]"
- }
- },
- "has": {
- "Volume": {
- "resource": {
- "type": "Volume",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "VolumeId" }
- ]
- }
- }
- }
- },
- "Subnet": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "SubnetId"
- }
- ],
- "shape": "Subnet",
- "load": {
- "request": {
- "operation": "DescribeSubnets",
- "params": [
- { "target": "SubnetIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "Subnets[0]"
- },
- "actions": {
- "CreateInstances": {
- "request": {
- "operation": "RunInstances",
- "params": [
- { "target": "SubnetId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Instances[].InstanceId" }
- ],
- "path": "Instances[]"
- }
- },
- "CreateNetworkInterface": {
- "request": {
- "operation": "CreateNetworkInterface",
- "params": [
- { "target": "SubnetId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "NetworkInterface",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkInterface.NetworkInterfaceId" }
- ],
- "path": "NetworkInterface"
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteSubnet",
- "params": [
- { "target": "SubnetId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "has": {
- "Vpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "VpcId" }
- ]
- }
- }
- },
- "hasMany": {
- "Instances": {
- "request": {
- "operation": "DescribeInstances",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "subnet-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
- ],
- "path": "Reservations[].Instances[]"
- }
- },
- "NetworkInterfaces": {
- "request": {
- "operation": "DescribeNetworkInterfaces",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "subnet-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "NetworkInterface",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkInterfaces[].NetworkInterfaceId" }
- ],
- "path": "NetworkInterfaces[]"
- }
- }
- }
- },
- "Tag": {
- "identifiers": [
- {
- "name": "ResourceId",
- "memberName": "ResourceId"
- },
- {
- "name": "Key",
- "memberName": "Key"
- },
- {
- "name": "Value",
- "memberName": "Value"
- }
- ],
- "shape": "TagDescription",
- "load": {
- "request": {
- "operation": "DescribeTags",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "key" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Key" },
- { "target": "Filters[1].Name", "source": "string", "value": "value" },
- { "target": "Filters[1].Values[0]", "source": "identifier", "name": "Value" }
- ]
- },
- "path": "Tags[0]"
- },
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeleteTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "ResourceId" },
- { "target": "Tags[0].Key", "source": "identifier", "name": "Key" },
- { "target": "Tags[0].Value", "source": "identifier", "name": "Value" }
- ]
- }
- }
- },
- "batchActions": {
- "Delete": {
- "request": {
- "operation": "DeleteTags",
- "params": [
- { "target": "Resources[]", "source": "identifier", "name": "ResourceId" },
- { "target": "Tags[*].Key", "source": "identifier", "name": "Key" },
- { "target": "Tags[*].Value", "source": "identifier", "name": "Value" }
- ]
- }
- }
- }
- },
- "Volume": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "VolumeId"
- }
- ],
- "shape": "Volume",
- "load": {
- "request": {
- "operation": "DescribeVolumes",
- "params": [
- { "target": "VolumeIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "Volumes[0]"
- },
- "actions": {
- "AttachToInstance": {
- "request": {
- "operation": "AttachVolume",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateSnapshot": {
- "request": {
- "operation": "CreateSnapshot",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Snapshot",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "SnapshotId" }
- ],
- "path": "@"
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteVolume",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DescribeAttribute": {
- "request": {
- "operation": "DescribeVolumeAttribute",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DescribeStatus": {
- "request": {
- "operation": "DescribeVolumeStatus",
- "params": [
- { "target": "VolumeIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DetachFromInstance": {
- "request": {
- "operation": "DetachVolume",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "EnableIo": {
- "request": {
- "operation": "EnableVolumeIO",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ModifyAttribute": {
- "request": {
- "operation": "ModifyVolumeAttribute",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "hasMany": {
- "Snapshots": {
- "request": {
- "operation": "DescribeSnapshots",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "volume-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Snapshot",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Snapshots[].SnapshotId" }
- ],
- "path": "Snapshots[]"
- }
- }
- }
- },
- "Vpc": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "VpcId"
- }
- ],
- "shape": "Vpc",
- "load": {
- "request": {
- "operation": "DescribeVpcs",
- "params": [
- { "target": "VpcIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "Vpcs[0]"
- },
- "actions": {
- "AssociateDhcpOptions": {
- "request": {
- "operation": "AssociateDhcpOptions",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "AttachClassicLinkInstance": {
- "request": {
- "operation": "AttachClassicLinkVpc",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "AttachInternetGateway": {
- "request": {
- "operation": "AttachInternetGateway",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateNetworkAcl": {
- "request": {
- "operation": "CreateNetworkAcl",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "NetworkAcl",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkAcl.NetworkAclId" }
- ],
- "path": "NetworkAcl"
- }
- },
- "CreateRouteTable": {
- "request": {
- "operation": "CreateRouteTable",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "RouteTable",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "RouteTable.RouteTableId" }
- ],
- "path": "RouteTable"
- }
- },
- "CreateSecurityGroup": {
- "request": {
- "operation": "CreateSecurityGroup",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "SecurityGroup",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "GroupId" }
- ]
- }
- },
- "CreateSubnet": {
- "request": {
- "operation": "CreateSubnet",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Subnet.SubnetId" }
- ],
- "path": "Subnet"
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteVpc",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DescribeAttribute": {
- "request": {
- "operation": "DescribeVpcAttribute",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DetachClassicLinkInstance": {
- "request": {
- "operation": "DetachClassicLinkVpc",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DetachInternetGateway": {
- "request": {
- "operation": "DetachInternetGateway",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DisableClassicLink": {
- "request": {
- "operation": "DisableVpcClassicLink",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "EnableClassicLink": {
- "request": {
- "operation": "EnableVpcClassicLink",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ModifyAttribute": {
- "request": {
- "operation": "ModifyVpcAttribute",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "RequestVpcPeeringConnection": {
- "request": {
- "operation": "CreateVpcPeeringConnection",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "VpcPeeringConnection",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "VpcPeeringConnection.VpcPeeringConnectionId" }
- ],
- "path": "VpcPeeringConnection"
- }
- }
- },
- "has": {
- "DhcpOptions": {
- "resource": {
- "type": "DhcpOptions",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "DhcpOptionsId" }
- ]
- }
- }
- },
- "hasMany": {
- "AcceptedVpcPeeringConnections": {
- "request": {
- "operation": "DescribeVpcPeeringConnections",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "accepter-vpc-info.vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "VpcPeeringConnection",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "VpcPeeringConnections[].VpcPeeringConnectionId" }
- ],
- "path": "VpcPeeringConnections[]"
- }
- },
- "Instances": {
- "request": {
- "operation": "DescribeInstances",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
- ],
- "path": "Reservations[].Instances[]"
- }
- },
- "InternetGateways": {
- "request": {
- "operation": "DescribeInternetGateways",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "attachment.vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "InternetGateway",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "InternetGateways[].InternetGatewayId" }
- ],
- "path": "InternetGateways[]"
- }
- },
- "NetworkAcls": {
- "request": {
- "operation": "DescribeNetworkAcls",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "NetworkAcl",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkAcls[].NetworkAclId" }
- ],
- "path": "NetworkAcls[]"
- }
- },
- "NetworkInterfaces": {
- "request": {
- "operation": "DescribeNetworkInterfaces",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "NetworkInterface",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkInterfaces[].NetworkInterfaceId" }
- ],
- "path": "NetworkInterfaces[]"
- }
- },
- "RequestedVpcPeeringConnections": {
- "request": {
- "operation": "DescribeVpcPeeringConnections",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "requester-vpc-info.vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "VpcPeeringConnection",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "VpcPeeringConnections[].VpcPeeringConnectionId" }
- ],
- "path": "VpcPeeringConnections[]"
- }
- },
- "RouteTables": {
- "request": {
- "operation": "DescribeRouteTables",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "RouteTable",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "RouteTables[].RouteTableId" }
- ],
- "path": "RouteTables[]"
- }
- },
- "SecurityGroups": {
- "request": {
- "operation": "DescribeSecurityGroups",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "SecurityGroup",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "SecurityGroups[].GroupId" }
- ],
- "path": "SecurityGroups[]"
- }
- },
- "Subnets": {
- "request": {
- "operation": "DescribeSubnets",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Subnets[].SubnetId" }
- ],
- "path": "Subnets[]"
- }
- }
- }
- },
- "VpcPeeringConnection": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "VpcPeeringConnectionId"
- }
- ],
- "shape": "VpcPeeringConnection",
- "load": {
- "request": {
- "operation": "DescribeVpcPeeringConnections",
- "params": [
- { "target": "VpcPeeringConnectionIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "VpcPeeringConnections[0]"
- },
- "actions": {
- "Accept": {
- "request": {
- "operation": "AcceptVpcPeeringConnection",
- "params": [
- { "target": "VpcPeeringConnectionId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteVpcPeeringConnection",
- "params": [
- { "target": "VpcPeeringConnectionId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Reject": {
- "request": {
- "operation": "RejectVpcPeeringConnection",
- "params": [
- { "target": "VpcPeeringConnectionId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "has": {
- "AccepterVpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "AccepterVpcInfo.VpcId" }
- ]
- }
- },
- "RequesterVpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "RequesterVpcInfo.VpcId" }
- ]
- }
- }
- }
- }
- }
-}
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/ec2/2015-10-01/resources-1.json b/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/ec2/2015-10-01/resources-1.json
deleted file mode 100644
index 4831a36b..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/ec2/2015-10-01/resources-1.json
+++ /dev/null
@@ -1,2567 +0,0 @@
-{
- "service": {
- "actions": {
- "CreateDhcpOptions": {
- "request": { "operation": "CreateDhcpOptions" },
- "resource": {
- "type": "DhcpOptions",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "DhcpOptions.DhcpOptionsId" }
- ],
- "path": "DhcpOptions"
- }
- },
- "CreateInstances": {
- "request": { "operation": "RunInstances" },
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Instances[].InstanceId" }
- ],
- "path": "Instances[]"
- }
- },
- "CreateInternetGateway": {
- "request": { "operation": "CreateInternetGateway" },
- "resource": {
- "type": "InternetGateway",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "InternetGateway.InternetGatewayId" }
- ],
- "path": "InternetGateway"
- }
- },
- "CreateKeyPair": {
- "request": { "operation": "CreateKeyPair" },
- "resource": {
- "type": "KeyPair",
- "identifiers": [
- { "target": "Name", "source": "response", "path": "KeyName" }
- ],
- "path": "@"
- }
- },
- "CreateNetworkAcl": {
- "request": { "operation": "CreateNetworkAcl" },
- "resource": {
- "type": "NetworkAcl",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkAcl.NetworkAclId" }
- ],
- "path": "NetworkAcl"
- }
- },
- "CreateNetworkInterface": {
- "request": { "operation": "CreateNetworkInterface" },
- "resource": {
- "type": "NetworkInterface",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkInterface.NetworkInterfaceId" }
- ],
- "path": "NetworkInterface"
- }
- },
- "CreatePlacementGroup": {
- "request": { "operation": "CreatePlacementGroup" },
- "resource": {
- "type": "PlacementGroup",
- "identifiers": [
- { "target": "Name", "source": "requestParameter", "path": "GroupName" }
- ]
- }
- },
- "CreateRouteTable": {
- "request": { "operation": "CreateRouteTable" },
- "resource": {
- "type": "RouteTable",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "RouteTable.RouteTableId" }
- ],
- "path": "RouteTable"
- }
- },
- "CreateSecurityGroup": {
- "request": { "operation": "CreateSecurityGroup" },
- "resource": {
- "type": "SecurityGroup",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "GroupId" }
- ]
- }
- },
- "CreateSnapshot": {
- "request": { "operation": "CreateSnapshot" },
- "resource": {
- "type": "Snapshot",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "SnapshotId" }
- ],
- "path": "@"
- }
- },
- "CreateSubnet": {
- "request": { "operation": "CreateSubnet" },
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Subnet.SubnetId" }
- ],
- "path": "Subnet"
- }
- },
- "CreateTags": {
- "request": { "operation": "CreateTags" }
- },
- "CreateVolume": {
- "request": { "operation": "CreateVolume" },
- "resource": {
- "type": "Volume",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "VolumeId" }
- ],
- "path": "@"
- }
- },
- "CreateVpc": {
- "request": { "operation": "CreateVpc" },
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Vpc.VpcId" }
- ],
- "path": "Vpc"
- }
- },
- "CreateVpcPeeringConnection": {
- "request": { "operation": "CreateVpcPeeringConnection" },
- "resource": {
- "type": "VpcPeeringConnection",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "VpcPeeringConnection.VpcPeeringConnectionId" }
- ],
- "path": "VpcPeeringConnection"
- }
- },
- "DisassociateRouteTable": {
- "request": { "operation": "DisassociateRouteTable" }
- },
- "ImportKeyPair": {
- "request": { "operation": "ImportKeyPair" },
- "resource": {
- "type": "KeyPairInfo",
- "identifiers": [
- { "target": "Name", "source": "response", "path": "KeyName" }
- ]
- }
- },
- "RegisterImage": {
- "request": { "operation": "RegisterImage" },
- "resource": {
- "type": "Image",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "ImageId" }
- ]
- }
- }
- },
- "has": {
- "DhcpOptions": {
- "resource": {
- "type": "DhcpOptions",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Image": {
- "resource": {
- "type": "Image",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Instance": {
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "InternetGateway": {
- "resource": {
- "type": "InternetGateway",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "KeyPair": {
- "resource": {
- "type": "KeyPairInfo",
- "identifiers": [
- { "target": "Name", "source": "input" }
- ]
- }
- },
- "NetworkAcl": {
- "resource": {
- "type": "NetworkAcl",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "NetworkInterface": {
- "resource": {
- "type": "NetworkInterface",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "PlacementGroup": {
- "resource": {
- "type": "PlacementGroup",
- "identifiers": [
- { "target": "Name", "source": "input" }
- ]
- }
- },
- "RouteTable": {
- "resource": {
- "type": "RouteTable",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "RouteTableAssociation": {
- "resource": {
- "type": "RouteTableAssociation",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "SecurityGroup": {
- "resource": {
- "type": "SecurityGroup",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Snapshot": {
- "resource": {
- "type": "Snapshot",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Subnet": {
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Volume": {
- "resource": {
- "type": "Volume",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Vpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "VpcPeeringConnection": {
- "resource": {
- "type": "VpcPeeringConnection",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- }
- },
- "hasMany": {
- "ClassicAddresses": {
- "request": {
- "operation": "DescribeAddresses",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "domain" },
- { "target": "Filters[0].Values[0]", "source": "string", "value": "standard" }
- ]
- },
- "resource": {
- "type": "ClassicAddress",
- "identifiers": [
- { "target": "PublicIp", "source": "response", "path": "Addresses[].PublicIp" }
- ],
- "path": "Addresses[]"
- }
- },
- "DhcpOptionsSets": {
- "request": { "operation": "DescribeDhcpOptions" },
- "resource": {
- "type": "DhcpOptions",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "DhcpOptions[].DhcpOptionsId" }
- ],
- "path": "DhcpOptions[]"
- }
- },
- "Images": {
- "request": { "operation": "DescribeImages" },
- "resource": {
- "type": "Image",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Images[].ImageId" }
- ],
- "path": "Images[]"
- }
- },
- "Instances": {
- "request": { "operation": "DescribeInstances" },
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
- ],
- "path": "Reservations[].Instances[]"
- }
- },
- "InternetGateways": {
- "request": { "operation": "DescribeInternetGateways" },
- "resource": {
- "type": "InternetGateway",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "InternetGateways[].InternetGatewayId" }
- ],
- "path": "InternetGateways[]"
- }
- },
- "KeyPairs": {
- "request": { "operation": "DescribeKeyPairs" },
- "resource": {
- "type": "KeyPairInfo",
- "identifiers": [
- { "target": "Name", "source": "response", "path": "KeyPairs[].KeyName" }
- ],
- "path": "KeyPairs[]"
- }
- },
- "NetworkAcls": {
- "request": { "operation": "DescribeNetworkAcls" },
- "resource": {
- "type": "NetworkAcl",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkAcls[].NetworkAclId" }
- ],
- "path": "NetworkAcls[]"
- }
- },
- "NetworkInterfaces": {
- "request": { "operation": "DescribeNetworkInterfaces" },
- "resource": {
- "type": "NetworkInterface",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkInterfaces[].NetworkInterfaceId" }
- ],
- "path": "NetworkInterfaces[]"
- }
- },
- "PlacementGroups": {
- "request": { "operation": "DescribePlacementGroups" },
- "resource": {
- "type": "PlacementGroup",
- "identifiers": [
- { "target": "Name", "source": "response", "path": "PlacementGroups[].GroupName" }
- ],
- "path": "PlacementGroups[]"
- }
- },
- "RouteTables": {
- "request": { "operation": "DescribeRouteTables" },
- "resource": {
- "type": "RouteTable",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "RouteTables[].RouteTableId" }
- ],
- "path": "RouteTables[]"
- }
- },
- "SecurityGroups": {
- "request": { "operation": "DescribeSecurityGroups" },
- "resource": {
- "type": "SecurityGroup",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "SecurityGroups[].GroupId" }
- ],
- "path": "SecurityGroups[]"
- }
- },
- "Snapshots": {
- "request": { "operation": "DescribeSnapshots" },
- "resource": {
- "type": "Snapshot",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Snapshots[].SnapshotId" }
- ],
- "path": "Snapshots[]"
- }
- },
- "Subnets": {
- "request": { "operation": "DescribeSubnets" },
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Subnets[].SubnetId" }
- ],
- "path": "Subnets[]"
- }
- },
- "Volumes": {
- "request": { "operation": "DescribeVolumes" },
- "resource": {
- "type": "Volume",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Volumes[].VolumeId" }
- ],
- "path": "Volumes[]"
- }
- },
- "VpcAddresses": {
- "request": {
- "operation": "DescribeAddresses",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "domain" },
- { "target": "Filters[0].Values[0]", "source": "string", "value": "vpc" }
- ]
- },
- "resource": {
- "type": "VpcAddress",
- "identifiers": [
- { "target": "AllocationId", "source": "response", "path": "Addresses[].AllocationId" }
- ],
- "path": "Addresses[]"
- }
- },
- "VpcPeeringConnections": {
- "request": { "operation": "DescribeVpcPeeringConnections" },
- "resource": {
- "type": "VpcPeeringConnection",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "VpcPeeringConnections[].VpcPeeringConnectionId" }
- ],
- "path": "VpcPeeringConnections[]"
- }
- },
- "Vpcs": {
- "request": { "operation": "DescribeVpcs" },
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Vpcs[].VpcId" }
- ],
- "path": "Vpcs[]"
- }
- }
- }
- },
- "resources": {
- "ClassicAddress": {
- "identifiers": [
- {
- "name": "PublicIp"
- }
- ],
- "shape": "Address",
- "load": {
- "request": {
- "operation": "DescribeAddresses",
- "params": [
- { "target": "PublicIps[]", "source": "identifier", "name": "PublicIp" }
- ]
- },
- "path": "Addresses[0]"
- },
- "actions": {
- "Associate": {
- "request": {
- "operation": "AssociateAddress",
- "params": [
- { "target": "PublicIp", "source": "identifier", "name": "PublicIp" }
- ]
- }
- },
- "Disassociate": {
- "request": {
- "operation": "DisassociateAddress",
- "params": [
- { "target": "PublicIp", "source": "data", "path": "PublicIp" }
- ]
- }
- },
- "Release": {
- "request": {
- "operation": "ReleaseAddress",
- "params": [
- { "target": "PublicIp", "source": "data", "path": "PublicIp" }
- ]
- }
- }
- }
- },
- "DhcpOptions": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "DhcpOptionsId"
- }
- ],
- "shape": "DhcpOptions",
- "load": {
- "request": {
- "operation": "DescribeDhcpOptions",
- "params": [
- { "target": "DhcpOptionsIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "DhcpOptions[0]"
- },
- "actions": {
- "AssociateWithVpc": {
- "request": {
- "operation": "AssociateDhcpOptions",
- "params": [
- { "target": "DhcpOptionsId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteDhcpOptions",
- "params": [
- { "target": "DhcpOptionsId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- }
- },
- "Image": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "ImageId"
- }
- ],
- "shape": "Image",
- "load": {
- "request": {
- "operation": "DescribeImages",
- "params": [
- { "target": "ImageIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "Images[0]"
- },
- "actions": {
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Deregister": {
- "request": {
- "operation": "DeregisterImage",
- "params": [
- { "target": "ImageId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DescribeAttribute": {
- "request": {
- "operation": "DescribeImageAttribute",
- "params": [
- { "target": "ImageId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ModifyAttribute": {
- "request": {
- "operation": "ModifyImageAttribute",
- "params": [
- { "target": "ImageId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ResetAttribute": {
- "request": {
- "operation": "ResetImageAttribute",
- "params": [
- { "target": "ImageId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- }
- },
- "Instance": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "InstanceId"
- }
- ],
- "shape": "Instance",
- "load": {
- "request": {
- "operation": "DescribeInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "Reservations[0].Instances[0]"
- },
- "actions": {
- "AttachClassicLinkVpc": {
- "request": {
- "operation": "AttachClassicLinkVpc",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "AttachVolume": {
- "request": {
- "operation": "AttachVolume",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ConsoleOutput": {
- "request": {
- "operation": "GetConsoleOutput",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateImage": {
- "request": {
- "operation": "CreateImage",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Image",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "ImageId" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "DescribeAttribute": {
- "request": {
- "operation": "DescribeInstanceAttribute",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DetachClassicLinkVpc": {
- "request": {
- "operation": "DetachClassicLinkVpc",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DetachVolume": {
- "request": {
- "operation": "DetachVolume",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ModifyAttribute": {
- "request": {
- "operation": "ModifyInstanceAttribute",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Monitor": {
- "request": {
- "operation": "MonitorInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "PasswordData": {
- "request": {
- "operation": "GetPasswordData",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Reboot": {
- "request": {
- "operation": "RebootInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ReportStatus": {
- "request": {
- "operation": "ReportInstanceStatus",
- "params": [
- { "target": "Instances[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ResetAttribute": {
- "request": {
- "operation": "ResetInstanceAttribute",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ResetKernel": {
- "request": {
- "operation": "ResetInstanceAttribute",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" },
- { "target": "Attribute", "source": "string", "value": "kernel" }
- ]
- }
- },
- "ResetRamdisk": {
- "request": {
- "operation": "ResetInstanceAttribute",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" },
- { "target": "Attribute", "source": "string", "value": "ramdisk" }
- ]
- }
- },
- "ResetSourceDestCheck": {
- "request": {
- "operation": "ResetInstanceAttribute",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" },
- { "target": "Attribute", "source": "string", "value": "sourceDestCheck" }
- ]
- }
- },
- "Start": {
- "request": {
- "operation": "StartInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Stop": {
- "request": {
- "operation": "StopInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Terminate": {
- "request": {
- "operation": "TerminateInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Unmonitor": {
- "request": {
- "operation": "UnmonitorInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "batchActions": {
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Monitor": {
- "request": {
- "operation": "MonitorInstances",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Reboot": {
- "request": {
- "operation": "RebootInstances",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Start": {
- "request": {
- "operation": "StartInstances",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Stop": {
- "request": {
- "operation": "StopInstances",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Terminate": {
- "request": {
- "operation": "TerminateInstances",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Unmonitor": {
- "request": {
- "operation": "UnmonitorInstances",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "waiters": {
- "Exists": {
- "waiterName": "InstanceExists",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ],
- "path": "Reservations[0].Instances[0]"
- },
- "Running": {
- "waiterName": "InstanceRunning",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ],
- "path": "Reservations[0].Instances[0]"
- },
- "Stopped": {
- "waiterName": "InstanceStopped",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ],
- "path": "Reservations[0].Instances[0]"
- },
- "Terminated": {
- "waiterName": "InstanceTerminated",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ],
- "path": "Reservations[0].Instances[0]"
- }
- },
- "has": {
- "ClassicAddress": {
- "resource": {
- "type": "ClassicAddress",
- "identifiers": [
- { "target": "PublicIp", "source": "data", "path": "PublicIpAddress" }
- ]
- }
- },
- "Image": {
- "resource": {
- "type": "Image",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "ImageId" }
- ]
- }
- },
- "KeyPair": {
- "resource": {
- "type": "KeyPairInfo",
- "identifiers": [
- { "target": "Name", "source": "data", "path": "KeyName" }
- ]
- }
- },
- "NetworkInterfaces": {
- "resource": {
- "type": "NetworkInterface",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "NetworkInterfaces[].NetworkInterfaceId" }
- ],
- "path": "NetworkInterfaces[]"
- }
- },
- "PlacementGroup": {
- "resource": {
- "type": "PlacementGroup",
- "identifiers": [
- { "target": "Name", "source": "data", "path": "Placement.GroupName" }
- ]
- }
- },
- "Subnet": {
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "SubnetId" }
- ]
- }
- },
- "Vpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "VpcId" }
- ]
- }
- }
- },
- "hasMany": {
- "Volumes": {
- "request": {
- "operation": "DescribeVolumes",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "attachment.instance-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Volume",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Volumes[].VolumeId" }
- ],
- "path": "Volumes[]"
- }
- },
- "VpcAddresses": {
- "request": {
- "operation": "DescribeAddresses",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "instance-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "VpcAddress",
- "identifiers": [
- { "target": "AllocationId", "source": "response", "path": "Addresses[].AllocationId" }
- ],
- "path": "Addresses[]"
- }
- }
- }
- },
- "InternetGateway": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "InternetGatewayId"
- }
- ],
- "shape": "InternetGateway",
- "load": {
- "request": {
- "operation": "DescribeInternetGateways",
- "params": [
- { "target": "InternetGatewayIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "InternetGateways[0]"
- },
- "actions": {
- "AttachToVpc": {
- "request": {
- "operation": "AttachInternetGateway",
- "params": [
- { "target": "InternetGatewayId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteInternetGateway",
- "params": [
- { "target": "InternetGatewayId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DetachFromVpc": {
- "request": {
- "operation": "DetachInternetGateway",
- "params": [
- { "target": "InternetGatewayId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- }
- },
- "KeyPair": {
- "identifiers": [
- {
- "name": "Name",
- "memberName": "KeyName"
- }
- ],
- "shape": "KeyPair",
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeleteKeyPair",
- "params": [
- { "target": "KeyName", "source": "identifier", "name": "Name" }
- ]
- }
- }
- }
- },
- "KeyPairInfo": {
- "identifiers": [
- {
- "name": "Name",
- "memberName": "KeyName"
- }
- ],
- "shape": "KeyPairInfo",
- "load": {
- "request": {
- "operation": "DescribeKeyPairs",
- "params": [
- { "target": "KeyNames[0]", "source": "identifier", "name": "Name" }
- ]
- },
- "path": "KeyPairs[0]"
- },
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeleteKeyPair",
- "params": [
- { "target": "KeyName", "source": "identifier", "name": "Name" }
- ]
- }
- }
- }
- },
- "NetworkAcl": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "NetworkAclId"
- }
- ],
- "shape": "NetworkAcl",
- "load": {
- "request": {
- "operation": "DescribeNetworkAcls",
- "params": [
- { "target": "NetworkAclIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "NetworkAcls[0]"
- },
- "actions": {
- "CreateEntry": {
- "request": {
- "operation": "CreateNetworkAclEntry",
- "params": [
- { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteNetworkAcl",
- "params": [
- { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DeleteEntry": {
- "request": {
- "operation": "DeleteNetworkAclEntry",
- "params": [
- { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ReplaceAssociation": {
- "request": {
- "operation": "ReplaceNetworkAclAssociation",
- "params": [
- { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ReplaceEntry": {
- "request": {
- "operation": "ReplaceNetworkAclEntry",
- "params": [
- { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "has": {
- "Vpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "VpcId" }
- ]
- }
- }
- }
- },
- "NetworkInterface": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "NetworkInterfaceId"
- }
- ],
- "shape": "NetworkInterface",
- "load": {
- "request": {
- "operation": "DescribeNetworkInterfaces",
- "params": [
- { "target": "NetworkInterfaceIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "NetworkInterfaces[0]"
- },
- "actions": {
- "AssignPrivateIpAddresses": {
- "request": {
- "operation": "AssignPrivateIpAddresses",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Attach": {
- "request": {
- "operation": "AttachNetworkInterface",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteNetworkInterface",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DescribeAttribute": {
- "request": {
- "operation": "DescribeNetworkInterfaceAttribute",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Detach": {
- "request": {
- "operation": "DetachNetworkInterface",
- "params": [
- { "target": "AttachmentId", "source": "data", "path": "Attachment.AttachmentId" }
- ]
- }
- },
- "ModifyAttribute": {
- "request": {
- "operation": "ModifyNetworkInterfaceAttribute",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ResetAttribute": {
- "request": {
- "operation": "ResetNetworkInterfaceAttribute",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "UnassignPrivateIpAddresses": {
- "request": {
- "operation": "UnassignPrivateIpAddresses",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "has": {
- "Association": {
- "resource": {
- "type": "NetworkInterfaceAssociation",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "Association.AssociationId" }
- ],
- "path": "Association"
- }
- },
- "Subnet": {
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "SubnetId" }
- ]
- }
- },
- "Vpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "VpcId" }
- ]
- }
- }
- }
- },
- "NetworkInterfaceAssociation": {
- "identifiers": [
- {
- "name": "Id"
- }
- ],
- "shape": "InstanceNetworkInterfaceAssociation",
- "load": {
- "request": {
- "operation": "DescribeNetworkInterfaces",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "association.association-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "NetworkInterfaces[0].Association"
- },
- "actions": {
- "Delete": {
- "request": {
- "operation": "DisassociateAddress",
- "params": [
- { "target": "AssociationId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "has": {
- "Address": {
- "resource": {
- "type": "VpcAddress",
- "identifiers": [
- { "target": "AllocationId", "source": "data", "path": "AllocationId" }
- ]
- }
- }
- }
- },
- "PlacementGroup": {
- "identifiers": [
- {
- "name": "Name",
- "memberName": "GroupName"
- }
- ],
- "shape": "PlacementGroup",
- "load": {
- "request": {
- "operation": "DescribePlacementGroups",
- "params": [
- { "target": "GroupNames[0]", "source": "identifier", "name": "Name" }
- ]
- },
- "path": "PlacementGroups[0]"
- },
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeletePlacementGroup",
- "params": [
- { "target": "GroupName", "source": "identifier", "name": "Name" }
- ]
- }
- }
- },
- "hasMany": {
- "Instances": {
- "request": {
- "operation": "DescribeInstances",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "placement-group-name" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Name" }
- ]
- },
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
- ],
- "path": "Reservations[].Instances[]"
- }
- }
- }
- },
- "Route": {
- "identifiers": [
- { "name": "RouteTableId" },
- {
- "name": "DestinationCidrBlock",
- "memberName": "DestinationCidrBlock"
- }
- ],
- "shape": "Route",
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeleteRoute",
- "params": [
- { "target": "RouteTableId", "source": "identifier", "name": "RouteTableId" },
- { "target": "DestinationCidrBlock", "source": "identifier", "name": "DestinationCidrBlock" }
- ]
- }
- },
- "Replace": {
- "request": {
- "operation": "ReplaceRoute",
- "params": [
- { "target": "RouteTableId", "source": "identifier", "name": "RouteTableId" },
- { "target": "DestinationCidrBlock", "source": "identifier", "name": "DestinationCidrBlock" }
- ]
- }
- }
- },
- "has": {
- "RouteTable": {
- "resource": {
- "type": "RouteTable",
- "identifiers": [
- { "target": "Id", "source": "identifier", "name": "RouteTableId" }
- ]
- }
- }
- }
- },
- "RouteTable": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "RouteTableId"
- }
- ],
- "shape": "RouteTable",
- "load": {
- "request": {
- "operation": "DescribeRouteTables",
- "params": [
- { "target": "RouteTableIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "RouteTables[0]"
- },
- "actions": {
- "AssociateWithSubnet": {
- "request": {
- "operation": "AssociateRouteTable",
- "params": [
- { "target": "RouteTableId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "RouteTableAssociation",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "AssociationId" }
- ]
- }
- },
- "CreateRoute": {
- "request": {
- "operation": "CreateRoute",
- "params": [
- { "target": "RouteTableId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Route",
- "identifiers": [
- { "target": "RouteTableId", "source": "identifier", "name": "Id" },
- { "target": "DestinationCidrBlock", "source": "requestParameter", "path": "DestinationCidrBlock" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteRouteTable",
- "params": [
- { "target": "RouteTableId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "has": {
- "Routes": {
- "resource": {
- "type": "Route",
- "identifiers": [
- { "target": "RouteTableId", "source": "identifier", "name": "Id" },
- { "target": "DestinationCidrBlock", "source": "data", "path": "Routes[].DestinationCidrBlock" }
- ],
- "path": "Routes[]"
- }
- },
- "Vpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "VpcId" }
- ]
- }
- }
- },
- "hasMany": {
- "Associations": {
- "request": {
- "operation": "DescribeRouteTables",
- "params": [
- { "target": "RouteTableIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "RouteTableAssociation",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "RouteTables[0].Associations[].RouteTableAssociationId" }
- ],
- "path": "RouteTables[0].Associations[]"
- }
- }
- }
- },
- "RouteTableAssociation": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "RouteTableAssociationId"
- }
- ],
- "shape": "RouteTableAssociation",
- "actions": {
- "Delete": {
- "request": {
- "operation": "DisassociateRouteTable",
- "params": [
- { "target": "AssociationId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ReplaceSubnet": {
- "request": {
- "operation": "ReplaceRouteTableAssociation",
- "params": [
- { "target": "AssociationId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "RouteTableAssociation",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NewAssociationId" }
- ]
- }
- }
- },
- "has": {
- "RouteTable": {
- "resource": {
- "type": "RouteTable",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "RouteTableId" }
- ]
- }
- },
- "Subnet": {
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "SubnetId" }
- ]
- }
- }
- }
- },
- "SecurityGroup": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "GroupId"
- }
- ],
- "shape": "SecurityGroup",
- "load": {
- "request": {
- "operation": "DescribeSecurityGroups",
- "params": [
- { "target": "GroupIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "SecurityGroups[0]"
- },
- "actions": {
- "AuthorizeEgress": {
- "request": {
- "operation": "AuthorizeSecurityGroupEgress",
- "params": [
- { "target": "GroupId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "AuthorizeIngress": {
- "request": {
- "operation": "AuthorizeSecurityGroupIngress",
- "params": [
- { "target": "GroupId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteSecurityGroup",
- "params": [
- { "target": "GroupId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "RevokeEgress": {
- "request": {
- "operation": "RevokeSecurityGroupEgress",
- "params": [
- { "target": "GroupId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "RevokeIngress": {
- "request": {
- "operation": "RevokeSecurityGroupIngress",
- "params": [
- { "target": "GroupId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- }
- },
- "Snapshot": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "SnapshotId"
- }
- ],
- "shape": "Snapshot",
- "load": {
- "request": {
- "operation": "DescribeSnapshots",
- "params": [
- { "target": "SnapshotIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "Snapshots[0]"
- },
- "actions": {
- "Copy": {
- "request": {
- "operation": "CopySnapshot",
- "params": [
- { "target": "SourceSnapshotId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteSnapshot",
- "params": [
- { "target": "SnapshotId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DescribeAttribute": {
- "request": {
- "operation": "DescribeSnapshotAttribute",
- "params": [
- { "target": "SnapshotId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ModifyAttribute": {
- "request": {
- "operation": "ModifySnapshotAttribute",
- "params": [
- { "target": "SnapshotId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ResetAttribute": {
- "request": {
- "operation": "ResetSnapshotAttribute",
- "params": [
- { "target": "SnapshotId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "waiters": {
- "Completed": {
- "waiterName": "SnapshotCompleted",
- "params": [
- { "target": "SnapshotIds[]", "source": "identifier", "name": "Id" }
- ],
- "path": "Snapshots[]"
- }
- },
- "has": {
- "Volume": {
- "resource": {
- "type": "Volume",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "VolumeId" }
- ]
- }
- }
- }
- },
- "Subnet": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "SubnetId"
- }
- ],
- "shape": "Subnet",
- "load": {
- "request": {
- "operation": "DescribeSubnets",
- "params": [
- { "target": "SubnetIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "Subnets[0]"
- },
- "actions": {
- "CreateInstances": {
- "request": {
- "operation": "RunInstances",
- "params": [
- { "target": "SubnetId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Instances[].InstanceId" }
- ],
- "path": "Instances[]"
- }
- },
- "CreateNetworkInterface": {
- "request": {
- "operation": "CreateNetworkInterface",
- "params": [
- { "target": "SubnetId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "NetworkInterface",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkInterface.NetworkInterfaceId" }
- ],
- "path": "NetworkInterface"
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteSubnet",
- "params": [
- { "target": "SubnetId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "has": {
- "Vpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "VpcId" }
- ]
- }
- }
- },
- "hasMany": {
- "Instances": {
- "request": {
- "operation": "DescribeInstances",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "subnet-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
- ],
- "path": "Reservations[].Instances[]"
- }
- },
- "NetworkInterfaces": {
- "request": {
- "operation": "DescribeNetworkInterfaces",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "subnet-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "NetworkInterface",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkInterfaces[].NetworkInterfaceId" }
- ],
- "path": "NetworkInterfaces[]"
- }
- }
- }
- },
- "Tag": {
- "identifiers": [
- {
- "name": "ResourceId",
- "memberName": "ResourceId"
- },
- {
- "name": "Key",
- "memberName": "Key"
- },
- {
- "name": "Value",
- "memberName": "Value"
- }
- ],
- "shape": "TagDescription",
- "load": {
- "request": {
- "operation": "DescribeTags",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "key" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Key" },
- { "target": "Filters[1].Name", "source": "string", "value": "value" },
- { "target": "Filters[1].Values[0]", "source": "identifier", "name": "Value" }
- ]
- },
- "path": "Tags[0]"
- },
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeleteTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "ResourceId" },
- { "target": "Tags[0].Key", "source": "identifier", "name": "Key" },
- { "target": "Tags[0].Value", "source": "identifier", "name": "Value" }
- ]
- }
- }
- },
- "batchActions": {
- "Delete": {
- "request": {
- "operation": "DeleteTags",
- "params": [
- { "target": "Resources[]", "source": "identifier", "name": "ResourceId" },
- { "target": "Tags[*].Key", "source": "identifier", "name": "Key" },
- { "target": "Tags[*].Value", "source": "identifier", "name": "Value" }
- ]
- }
- }
- }
- },
- "Volume": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "VolumeId"
- }
- ],
- "shape": "Volume",
- "load": {
- "request": {
- "operation": "DescribeVolumes",
- "params": [
- { "target": "VolumeIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "Volumes[0]"
- },
- "actions": {
- "AttachToInstance": {
- "request": {
- "operation": "AttachVolume",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateSnapshot": {
- "request": {
- "operation": "CreateSnapshot",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Snapshot",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "SnapshotId" }
- ],
- "path": "@"
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteVolume",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DescribeAttribute": {
- "request": {
- "operation": "DescribeVolumeAttribute",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DescribeStatus": {
- "request": {
- "operation": "DescribeVolumeStatus",
- "params": [
- { "target": "VolumeIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DetachFromInstance": {
- "request": {
- "operation": "DetachVolume",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "EnableIo": {
- "request": {
- "operation": "EnableVolumeIO",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ModifyAttribute": {
- "request": {
- "operation": "ModifyVolumeAttribute",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "hasMany": {
- "Snapshots": {
- "request": {
- "operation": "DescribeSnapshots",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "volume-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Snapshot",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Snapshots[].SnapshotId" }
- ],
- "path": "Snapshots[]"
- }
- }
- }
- },
- "Vpc": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "VpcId"
- }
- ],
- "shape": "Vpc",
- "load": {
- "request": {
- "operation": "DescribeVpcs",
- "params": [
- { "target": "VpcIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "Vpcs[0]"
- },
- "actions": {
- "AssociateDhcpOptions": {
- "request": {
- "operation": "AssociateDhcpOptions",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "AttachClassicLinkInstance": {
- "request": {
- "operation": "AttachClassicLinkVpc",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "AttachInternetGateway": {
- "request": {
- "operation": "AttachInternetGateway",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateNetworkAcl": {
- "request": {
- "operation": "CreateNetworkAcl",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "NetworkAcl",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkAcl.NetworkAclId" }
- ],
- "path": "NetworkAcl"
- }
- },
- "CreateRouteTable": {
- "request": {
- "operation": "CreateRouteTable",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "RouteTable",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "RouteTable.RouteTableId" }
- ],
- "path": "RouteTable"
- }
- },
- "CreateSecurityGroup": {
- "request": {
- "operation": "CreateSecurityGroup",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "SecurityGroup",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "GroupId" }
- ]
- }
- },
- "CreateSubnet": {
- "request": {
- "operation": "CreateSubnet",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Subnet.SubnetId" }
- ],
- "path": "Subnet"
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteVpc",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DescribeAttribute": {
- "request": {
- "operation": "DescribeVpcAttribute",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DetachClassicLinkInstance": {
- "request": {
- "operation": "DetachClassicLinkVpc",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DetachInternetGateway": {
- "request": {
- "operation": "DetachInternetGateway",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DisableClassicLink": {
- "request": {
- "operation": "DisableVpcClassicLink",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "EnableClassicLink": {
- "request": {
- "operation": "EnableVpcClassicLink",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ModifyAttribute": {
- "request": {
- "operation": "ModifyVpcAttribute",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "RequestVpcPeeringConnection": {
- "request": {
- "operation": "CreateVpcPeeringConnection",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "VpcPeeringConnection",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "VpcPeeringConnection.VpcPeeringConnectionId" }
- ],
- "path": "VpcPeeringConnection"
- }
- }
- },
- "has": {
- "DhcpOptions": {
- "resource": {
- "type": "DhcpOptions",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "DhcpOptionsId" }
- ]
- }
- }
- },
- "hasMany": {
- "AcceptedVpcPeeringConnections": {
- "request": {
- "operation": "DescribeVpcPeeringConnections",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "accepter-vpc-info.vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "VpcPeeringConnection",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "VpcPeeringConnections[].VpcPeeringConnectionId" }
- ],
- "path": "VpcPeeringConnections[]"
- }
- },
- "Instances": {
- "request": {
- "operation": "DescribeInstances",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
- ],
- "path": "Reservations[].Instances[]"
- }
- },
- "InternetGateways": {
- "request": {
- "operation": "DescribeInternetGateways",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "attachment.vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "InternetGateway",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "InternetGateways[].InternetGatewayId" }
- ],
- "path": "InternetGateways[]"
- }
- },
- "NetworkAcls": {
- "request": {
- "operation": "DescribeNetworkAcls",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "NetworkAcl",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkAcls[].NetworkAclId" }
- ],
- "path": "NetworkAcls[]"
- }
- },
- "NetworkInterfaces": {
- "request": {
- "operation": "DescribeNetworkInterfaces",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "NetworkInterface",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkInterfaces[].NetworkInterfaceId" }
- ],
- "path": "NetworkInterfaces[]"
- }
- },
- "RequestedVpcPeeringConnections": {
- "request": {
- "operation": "DescribeVpcPeeringConnections",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "requester-vpc-info.vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "VpcPeeringConnection",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "VpcPeeringConnections[].VpcPeeringConnectionId" }
- ],
- "path": "VpcPeeringConnections[]"
- }
- },
- "RouteTables": {
- "request": {
- "operation": "DescribeRouteTables",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "RouteTable",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "RouteTables[].RouteTableId" }
- ],
- "path": "RouteTables[]"
- }
- },
- "SecurityGroups": {
- "request": {
- "operation": "DescribeSecurityGroups",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "SecurityGroup",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "SecurityGroups[].GroupId" }
- ],
- "path": "SecurityGroups[]"
- }
- },
- "Subnets": {
- "request": {
- "operation": "DescribeSubnets",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Subnets[].SubnetId" }
- ],
- "path": "Subnets[]"
- }
- }
- }
- },
- "VpcPeeringConnection": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "VpcPeeringConnectionId"
- }
- ],
- "shape": "VpcPeeringConnection",
- "load": {
- "request": {
- "operation": "DescribeVpcPeeringConnections",
- "params": [
- { "target": "VpcPeeringConnectionIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "VpcPeeringConnections[0]"
- },
- "actions": {
- "Accept": {
- "request": {
- "operation": "AcceptVpcPeeringConnection",
- "params": [
- { "target": "VpcPeeringConnectionId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteVpcPeeringConnection",
- "params": [
- { "target": "VpcPeeringConnectionId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Reject": {
- "request": {
- "operation": "RejectVpcPeeringConnection",
- "params": [
- { "target": "VpcPeeringConnectionId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "waiters": {
- "Exists": {
- "waiterName": "VpcPeeringConnectionExists",
- "params": [
- { "target": "VpcPeeringConnectionIds[]", "source": "identifier", "name": "Id" }
- ],
- "path": "VpcPeeringConnections[0]"
- }
- },
- "has": {
- "AccepterVpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "AccepterVpcInfo.VpcId" }
- ]
- }
- },
- "RequesterVpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "RequesterVpcInfo.VpcId" }
- ]
- }
- }
- }
- },
- "VpcAddress": {
- "identifiers": [
- {
- "name": "AllocationId"
- }
- ],
- "shape": "Address",
- "load": {
- "request": {
- "operation": "DescribeAddresses",
- "params": [
- { "target": "AllocationIds[0]", "source": "identifier", "name": "AllocationId" }
- ]
- },
- "path": "Addresses[0]"
- },
- "actions": {
- "Associate": {
- "request": {
- "operation": "AssociateAddress",
- "params": [
- { "target": "AllocationId", "source": "identifier", "name": "AllocationId" }
- ]
- }
- },
- "Release": {
- "request": {
- "operation": "ReleaseAddress",
- "params": [
- { "target": "AllocationId", "source": "data", "path": "AllocationId" }
- ]
- }
- }
- },
- "has": {
- "Association": {
- "resource": {
- "type": "NetworkInterfaceAssociation",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "AssociationId" }
- ]
- }
- }
- }
- }
- }
-}
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/ec2/2016-04-01/resources-1.json b/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/ec2/2016-04-01/resources-1.json
deleted file mode 100644
index 4831a36b..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/ec2/2016-04-01/resources-1.json
+++ /dev/null
@@ -1,2567 +0,0 @@
-{
- "service": {
- "actions": {
- "CreateDhcpOptions": {
- "request": { "operation": "CreateDhcpOptions" },
- "resource": {
- "type": "DhcpOptions",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "DhcpOptions.DhcpOptionsId" }
- ],
- "path": "DhcpOptions"
- }
- },
- "CreateInstances": {
- "request": { "operation": "RunInstances" },
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Instances[].InstanceId" }
- ],
- "path": "Instances[]"
- }
- },
- "CreateInternetGateway": {
- "request": { "operation": "CreateInternetGateway" },
- "resource": {
- "type": "InternetGateway",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "InternetGateway.InternetGatewayId" }
- ],
- "path": "InternetGateway"
- }
- },
- "CreateKeyPair": {
- "request": { "operation": "CreateKeyPair" },
- "resource": {
- "type": "KeyPair",
- "identifiers": [
- { "target": "Name", "source": "response", "path": "KeyName" }
- ],
- "path": "@"
- }
- },
- "CreateNetworkAcl": {
- "request": { "operation": "CreateNetworkAcl" },
- "resource": {
- "type": "NetworkAcl",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkAcl.NetworkAclId" }
- ],
- "path": "NetworkAcl"
- }
- },
- "CreateNetworkInterface": {
- "request": { "operation": "CreateNetworkInterface" },
- "resource": {
- "type": "NetworkInterface",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkInterface.NetworkInterfaceId" }
- ],
- "path": "NetworkInterface"
- }
- },
- "CreatePlacementGroup": {
- "request": { "operation": "CreatePlacementGroup" },
- "resource": {
- "type": "PlacementGroup",
- "identifiers": [
- { "target": "Name", "source": "requestParameter", "path": "GroupName" }
- ]
- }
- },
- "CreateRouteTable": {
- "request": { "operation": "CreateRouteTable" },
- "resource": {
- "type": "RouteTable",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "RouteTable.RouteTableId" }
- ],
- "path": "RouteTable"
- }
- },
- "CreateSecurityGroup": {
- "request": { "operation": "CreateSecurityGroup" },
- "resource": {
- "type": "SecurityGroup",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "GroupId" }
- ]
- }
- },
- "CreateSnapshot": {
- "request": { "operation": "CreateSnapshot" },
- "resource": {
- "type": "Snapshot",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "SnapshotId" }
- ],
- "path": "@"
- }
- },
- "CreateSubnet": {
- "request": { "operation": "CreateSubnet" },
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Subnet.SubnetId" }
- ],
- "path": "Subnet"
- }
- },
- "CreateTags": {
- "request": { "operation": "CreateTags" }
- },
- "CreateVolume": {
- "request": { "operation": "CreateVolume" },
- "resource": {
- "type": "Volume",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "VolumeId" }
- ],
- "path": "@"
- }
- },
- "CreateVpc": {
- "request": { "operation": "CreateVpc" },
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Vpc.VpcId" }
- ],
- "path": "Vpc"
- }
- },
- "CreateVpcPeeringConnection": {
- "request": { "operation": "CreateVpcPeeringConnection" },
- "resource": {
- "type": "VpcPeeringConnection",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "VpcPeeringConnection.VpcPeeringConnectionId" }
- ],
- "path": "VpcPeeringConnection"
- }
- },
- "DisassociateRouteTable": {
- "request": { "operation": "DisassociateRouteTable" }
- },
- "ImportKeyPair": {
- "request": { "operation": "ImportKeyPair" },
- "resource": {
- "type": "KeyPairInfo",
- "identifiers": [
- { "target": "Name", "source": "response", "path": "KeyName" }
- ]
- }
- },
- "RegisterImage": {
- "request": { "operation": "RegisterImage" },
- "resource": {
- "type": "Image",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "ImageId" }
- ]
- }
- }
- },
- "has": {
- "DhcpOptions": {
- "resource": {
- "type": "DhcpOptions",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Image": {
- "resource": {
- "type": "Image",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Instance": {
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "InternetGateway": {
- "resource": {
- "type": "InternetGateway",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "KeyPair": {
- "resource": {
- "type": "KeyPairInfo",
- "identifiers": [
- { "target": "Name", "source": "input" }
- ]
- }
- },
- "NetworkAcl": {
- "resource": {
- "type": "NetworkAcl",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "NetworkInterface": {
- "resource": {
- "type": "NetworkInterface",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "PlacementGroup": {
- "resource": {
- "type": "PlacementGroup",
- "identifiers": [
- { "target": "Name", "source": "input" }
- ]
- }
- },
- "RouteTable": {
- "resource": {
- "type": "RouteTable",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "RouteTableAssociation": {
- "resource": {
- "type": "RouteTableAssociation",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "SecurityGroup": {
- "resource": {
- "type": "SecurityGroup",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Snapshot": {
- "resource": {
- "type": "Snapshot",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Subnet": {
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Volume": {
- "resource": {
- "type": "Volume",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Vpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "VpcPeeringConnection": {
- "resource": {
- "type": "VpcPeeringConnection",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- }
- },
- "hasMany": {
- "ClassicAddresses": {
- "request": {
- "operation": "DescribeAddresses",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "domain" },
- { "target": "Filters[0].Values[0]", "source": "string", "value": "standard" }
- ]
- },
- "resource": {
- "type": "ClassicAddress",
- "identifiers": [
- { "target": "PublicIp", "source": "response", "path": "Addresses[].PublicIp" }
- ],
- "path": "Addresses[]"
- }
- },
- "DhcpOptionsSets": {
- "request": { "operation": "DescribeDhcpOptions" },
- "resource": {
- "type": "DhcpOptions",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "DhcpOptions[].DhcpOptionsId" }
- ],
- "path": "DhcpOptions[]"
- }
- },
- "Images": {
- "request": { "operation": "DescribeImages" },
- "resource": {
- "type": "Image",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Images[].ImageId" }
- ],
- "path": "Images[]"
- }
- },
- "Instances": {
- "request": { "operation": "DescribeInstances" },
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
- ],
- "path": "Reservations[].Instances[]"
- }
- },
- "InternetGateways": {
- "request": { "operation": "DescribeInternetGateways" },
- "resource": {
- "type": "InternetGateway",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "InternetGateways[].InternetGatewayId" }
- ],
- "path": "InternetGateways[]"
- }
- },
- "KeyPairs": {
- "request": { "operation": "DescribeKeyPairs" },
- "resource": {
- "type": "KeyPairInfo",
- "identifiers": [
- { "target": "Name", "source": "response", "path": "KeyPairs[].KeyName" }
- ],
- "path": "KeyPairs[]"
- }
- },
- "NetworkAcls": {
- "request": { "operation": "DescribeNetworkAcls" },
- "resource": {
- "type": "NetworkAcl",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkAcls[].NetworkAclId" }
- ],
- "path": "NetworkAcls[]"
- }
- },
- "NetworkInterfaces": {
- "request": { "operation": "DescribeNetworkInterfaces" },
- "resource": {
- "type": "NetworkInterface",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkInterfaces[].NetworkInterfaceId" }
- ],
- "path": "NetworkInterfaces[]"
- }
- },
- "PlacementGroups": {
- "request": { "operation": "DescribePlacementGroups" },
- "resource": {
- "type": "PlacementGroup",
- "identifiers": [
- { "target": "Name", "source": "response", "path": "PlacementGroups[].GroupName" }
- ],
- "path": "PlacementGroups[]"
- }
- },
- "RouteTables": {
- "request": { "operation": "DescribeRouteTables" },
- "resource": {
- "type": "RouteTable",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "RouteTables[].RouteTableId" }
- ],
- "path": "RouteTables[]"
- }
- },
- "SecurityGroups": {
- "request": { "operation": "DescribeSecurityGroups" },
- "resource": {
- "type": "SecurityGroup",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "SecurityGroups[].GroupId" }
- ],
- "path": "SecurityGroups[]"
- }
- },
- "Snapshots": {
- "request": { "operation": "DescribeSnapshots" },
- "resource": {
- "type": "Snapshot",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Snapshots[].SnapshotId" }
- ],
- "path": "Snapshots[]"
- }
- },
- "Subnets": {
- "request": { "operation": "DescribeSubnets" },
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Subnets[].SubnetId" }
- ],
- "path": "Subnets[]"
- }
- },
- "Volumes": {
- "request": { "operation": "DescribeVolumes" },
- "resource": {
- "type": "Volume",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Volumes[].VolumeId" }
- ],
- "path": "Volumes[]"
- }
- },
- "VpcAddresses": {
- "request": {
- "operation": "DescribeAddresses",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "domain" },
- { "target": "Filters[0].Values[0]", "source": "string", "value": "vpc" }
- ]
- },
- "resource": {
- "type": "VpcAddress",
- "identifiers": [
- { "target": "AllocationId", "source": "response", "path": "Addresses[].AllocationId" }
- ],
- "path": "Addresses[]"
- }
- },
- "VpcPeeringConnections": {
- "request": { "operation": "DescribeVpcPeeringConnections" },
- "resource": {
- "type": "VpcPeeringConnection",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "VpcPeeringConnections[].VpcPeeringConnectionId" }
- ],
- "path": "VpcPeeringConnections[]"
- }
- },
- "Vpcs": {
- "request": { "operation": "DescribeVpcs" },
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Vpcs[].VpcId" }
- ],
- "path": "Vpcs[]"
- }
- }
- }
- },
- "resources": {
- "ClassicAddress": {
- "identifiers": [
- {
- "name": "PublicIp"
- }
- ],
- "shape": "Address",
- "load": {
- "request": {
- "operation": "DescribeAddresses",
- "params": [
- { "target": "PublicIps[]", "source": "identifier", "name": "PublicIp" }
- ]
- },
- "path": "Addresses[0]"
- },
- "actions": {
- "Associate": {
- "request": {
- "operation": "AssociateAddress",
- "params": [
- { "target": "PublicIp", "source": "identifier", "name": "PublicIp" }
- ]
- }
- },
- "Disassociate": {
- "request": {
- "operation": "DisassociateAddress",
- "params": [
- { "target": "PublicIp", "source": "data", "path": "PublicIp" }
- ]
- }
- },
- "Release": {
- "request": {
- "operation": "ReleaseAddress",
- "params": [
- { "target": "PublicIp", "source": "data", "path": "PublicIp" }
- ]
- }
- }
- }
- },
- "DhcpOptions": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "DhcpOptionsId"
- }
- ],
- "shape": "DhcpOptions",
- "load": {
- "request": {
- "operation": "DescribeDhcpOptions",
- "params": [
- { "target": "DhcpOptionsIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "DhcpOptions[0]"
- },
- "actions": {
- "AssociateWithVpc": {
- "request": {
- "operation": "AssociateDhcpOptions",
- "params": [
- { "target": "DhcpOptionsId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteDhcpOptions",
- "params": [
- { "target": "DhcpOptionsId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- }
- },
- "Image": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "ImageId"
- }
- ],
- "shape": "Image",
- "load": {
- "request": {
- "operation": "DescribeImages",
- "params": [
- { "target": "ImageIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "Images[0]"
- },
- "actions": {
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Deregister": {
- "request": {
- "operation": "DeregisterImage",
- "params": [
- { "target": "ImageId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DescribeAttribute": {
- "request": {
- "operation": "DescribeImageAttribute",
- "params": [
- { "target": "ImageId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ModifyAttribute": {
- "request": {
- "operation": "ModifyImageAttribute",
- "params": [
- { "target": "ImageId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ResetAttribute": {
- "request": {
- "operation": "ResetImageAttribute",
- "params": [
- { "target": "ImageId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- }
- },
- "Instance": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "InstanceId"
- }
- ],
- "shape": "Instance",
- "load": {
- "request": {
- "operation": "DescribeInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "Reservations[0].Instances[0]"
- },
- "actions": {
- "AttachClassicLinkVpc": {
- "request": {
- "operation": "AttachClassicLinkVpc",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "AttachVolume": {
- "request": {
- "operation": "AttachVolume",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ConsoleOutput": {
- "request": {
- "operation": "GetConsoleOutput",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateImage": {
- "request": {
- "operation": "CreateImage",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Image",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "ImageId" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "DescribeAttribute": {
- "request": {
- "operation": "DescribeInstanceAttribute",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DetachClassicLinkVpc": {
- "request": {
- "operation": "DetachClassicLinkVpc",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DetachVolume": {
- "request": {
- "operation": "DetachVolume",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ModifyAttribute": {
- "request": {
- "operation": "ModifyInstanceAttribute",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Monitor": {
- "request": {
- "operation": "MonitorInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "PasswordData": {
- "request": {
- "operation": "GetPasswordData",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Reboot": {
- "request": {
- "operation": "RebootInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ReportStatus": {
- "request": {
- "operation": "ReportInstanceStatus",
- "params": [
- { "target": "Instances[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ResetAttribute": {
- "request": {
- "operation": "ResetInstanceAttribute",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ResetKernel": {
- "request": {
- "operation": "ResetInstanceAttribute",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" },
- { "target": "Attribute", "source": "string", "value": "kernel" }
- ]
- }
- },
- "ResetRamdisk": {
- "request": {
- "operation": "ResetInstanceAttribute",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" },
- { "target": "Attribute", "source": "string", "value": "ramdisk" }
- ]
- }
- },
- "ResetSourceDestCheck": {
- "request": {
- "operation": "ResetInstanceAttribute",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" },
- { "target": "Attribute", "source": "string", "value": "sourceDestCheck" }
- ]
- }
- },
- "Start": {
- "request": {
- "operation": "StartInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Stop": {
- "request": {
- "operation": "StopInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Terminate": {
- "request": {
- "operation": "TerminateInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Unmonitor": {
- "request": {
- "operation": "UnmonitorInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "batchActions": {
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Monitor": {
- "request": {
- "operation": "MonitorInstances",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Reboot": {
- "request": {
- "operation": "RebootInstances",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Start": {
- "request": {
- "operation": "StartInstances",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Stop": {
- "request": {
- "operation": "StopInstances",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Terminate": {
- "request": {
- "operation": "TerminateInstances",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Unmonitor": {
- "request": {
- "operation": "UnmonitorInstances",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "waiters": {
- "Exists": {
- "waiterName": "InstanceExists",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ],
- "path": "Reservations[0].Instances[0]"
- },
- "Running": {
- "waiterName": "InstanceRunning",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ],
- "path": "Reservations[0].Instances[0]"
- },
- "Stopped": {
- "waiterName": "InstanceStopped",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ],
- "path": "Reservations[0].Instances[0]"
- },
- "Terminated": {
- "waiterName": "InstanceTerminated",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ],
- "path": "Reservations[0].Instances[0]"
- }
- },
- "has": {
- "ClassicAddress": {
- "resource": {
- "type": "ClassicAddress",
- "identifiers": [
- { "target": "PublicIp", "source": "data", "path": "PublicIpAddress" }
- ]
- }
- },
- "Image": {
- "resource": {
- "type": "Image",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "ImageId" }
- ]
- }
- },
- "KeyPair": {
- "resource": {
- "type": "KeyPairInfo",
- "identifiers": [
- { "target": "Name", "source": "data", "path": "KeyName" }
- ]
- }
- },
- "NetworkInterfaces": {
- "resource": {
- "type": "NetworkInterface",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "NetworkInterfaces[].NetworkInterfaceId" }
- ],
- "path": "NetworkInterfaces[]"
- }
- },
- "PlacementGroup": {
- "resource": {
- "type": "PlacementGroup",
- "identifiers": [
- { "target": "Name", "source": "data", "path": "Placement.GroupName" }
- ]
- }
- },
- "Subnet": {
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "SubnetId" }
- ]
- }
- },
- "Vpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "VpcId" }
- ]
- }
- }
- },
- "hasMany": {
- "Volumes": {
- "request": {
- "operation": "DescribeVolumes",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "attachment.instance-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Volume",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Volumes[].VolumeId" }
- ],
- "path": "Volumes[]"
- }
- },
- "VpcAddresses": {
- "request": {
- "operation": "DescribeAddresses",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "instance-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "VpcAddress",
- "identifiers": [
- { "target": "AllocationId", "source": "response", "path": "Addresses[].AllocationId" }
- ],
- "path": "Addresses[]"
- }
- }
- }
- },
- "InternetGateway": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "InternetGatewayId"
- }
- ],
- "shape": "InternetGateway",
- "load": {
- "request": {
- "operation": "DescribeInternetGateways",
- "params": [
- { "target": "InternetGatewayIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "InternetGateways[0]"
- },
- "actions": {
- "AttachToVpc": {
- "request": {
- "operation": "AttachInternetGateway",
- "params": [
- { "target": "InternetGatewayId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteInternetGateway",
- "params": [
- { "target": "InternetGatewayId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DetachFromVpc": {
- "request": {
- "operation": "DetachInternetGateway",
- "params": [
- { "target": "InternetGatewayId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- }
- },
- "KeyPair": {
- "identifiers": [
- {
- "name": "Name",
- "memberName": "KeyName"
- }
- ],
- "shape": "KeyPair",
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeleteKeyPair",
- "params": [
- { "target": "KeyName", "source": "identifier", "name": "Name" }
- ]
- }
- }
- }
- },
- "KeyPairInfo": {
- "identifiers": [
- {
- "name": "Name",
- "memberName": "KeyName"
- }
- ],
- "shape": "KeyPairInfo",
- "load": {
- "request": {
- "operation": "DescribeKeyPairs",
- "params": [
- { "target": "KeyNames[0]", "source": "identifier", "name": "Name" }
- ]
- },
- "path": "KeyPairs[0]"
- },
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeleteKeyPair",
- "params": [
- { "target": "KeyName", "source": "identifier", "name": "Name" }
- ]
- }
- }
- }
- },
- "NetworkAcl": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "NetworkAclId"
- }
- ],
- "shape": "NetworkAcl",
- "load": {
- "request": {
- "operation": "DescribeNetworkAcls",
- "params": [
- { "target": "NetworkAclIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "NetworkAcls[0]"
- },
- "actions": {
- "CreateEntry": {
- "request": {
- "operation": "CreateNetworkAclEntry",
- "params": [
- { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteNetworkAcl",
- "params": [
- { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DeleteEntry": {
- "request": {
- "operation": "DeleteNetworkAclEntry",
- "params": [
- { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ReplaceAssociation": {
- "request": {
- "operation": "ReplaceNetworkAclAssociation",
- "params": [
- { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ReplaceEntry": {
- "request": {
- "operation": "ReplaceNetworkAclEntry",
- "params": [
- { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "has": {
- "Vpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "VpcId" }
- ]
- }
- }
- }
- },
- "NetworkInterface": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "NetworkInterfaceId"
- }
- ],
- "shape": "NetworkInterface",
- "load": {
- "request": {
- "operation": "DescribeNetworkInterfaces",
- "params": [
- { "target": "NetworkInterfaceIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "NetworkInterfaces[0]"
- },
- "actions": {
- "AssignPrivateIpAddresses": {
- "request": {
- "operation": "AssignPrivateIpAddresses",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Attach": {
- "request": {
- "operation": "AttachNetworkInterface",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteNetworkInterface",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DescribeAttribute": {
- "request": {
- "operation": "DescribeNetworkInterfaceAttribute",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Detach": {
- "request": {
- "operation": "DetachNetworkInterface",
- "params": [
- { "target": "AttachmentId", "source": "data", "path": "Attachment.AttachmentId" }
- ]
- }
- },
- "ModifyAttribute": {
- "request": {
- "operation": "ModifyNetworkInterfaceAttribute",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ResetAttribute": {
- "request": {
- "operation": "ResetNetworkInterfaceAttribute",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "UnassignPrivateIpAddresses": {
- "request": {
- "operation": "UnassignPrivateIpAddresses",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "has": {
- "Association": {
- "resource": {
- "type": "NetworkInterfaceAssociation",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "Association.AssociationId" }
- ],
- "path": "Association"
- }
- },
- "Subnet": {
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "SubnetId" }
- ]
- }
- },
- "Vpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "VpcId" }
- ]
- }
- }
- }
- },
- "NetworkInterfaceAssociation": {
- "identifiers": [
- {
- "name": "Id"
- }
- ],
- "shape": "InstanceNetworkInterfaceAssociation",
- "load": {
- "request": {
- "operation": "DescribeNetworkInterfaces",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "association.association-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "NetworkInterfaces[0].Association"
- },
- "actions": {
- "Delete": {
- "request": {
- "operation": "DisassociateAddress",
- "params": [
- { "target": "AssociationId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "has": {
- "Address": {
- "resource": {
- "type": "VpcAddress",
- "identifiers": [
- { "target": "AllocationId", "source": "data", "path": "AllocationId" }
- ]
- }
- }
- }
- },
- "PlacementGroup": {
- "identifiers": [
- {
- "name": "Name",
- "memberName": "GroupName"
- }
- ],
- "shape": "PlacementGroup",
- "load": {
- "request": {
- "operation": "DescribePlacementGroups",
- "params": [
- { "target": "GroupNames[0]", "source": "identifier", "name": "Name" }
- ]
- },
- "path": "PlacementGroups[0]"
- },
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeletePlacementGroup",
- "params": [
- { "target": "GroupName", "source": "identifier", "name": "Name" }
- ]
- }
- }
- },
- "hasMany": {
- "Instances": {
- "request": {
- "operation": "DescribeInstances",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "placement-group-name" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Name" }
- ]
- },
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
- ],
- "path": "Reservations[].Instances[]"
- }
- }
- }
- },
- "Route": {
- "identifiers": [
- { "name": "RouteTableId" },
- {
- "name": "DestinationCidrBlock",
- "memberName": "DestinationCidrBlock"
- }
- ],
- "shape": "Route",
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeleteRoute",
- "params": [
- { "target": "RouteTableId", "source": "identifier", "name": "RouteTableId" },
- { "target": "DestinationCidrBlock", "source": "identifier", "name": "DestinationCidrBlock" }
- ]
- }
- },
- "Replace": {
- "request": {
- "operation": "ReplaceRoute",
- "params": [
- { "target": "RouteTableId", "source": "identifier", "name": "RouteTableId" },
- { "target": "DestinationCidrBlock", "source": "identifier", "name": "DestinationCidrBlock" }
- ]
- }
- }
- },
- "has": {
- "RouteTable": {
- "resource": {
- "type": "RouteTable",
- "identifiers": [
- { "target": "Id", "source": "identifier", "name": "RouteTableId" }
- ]
- }
- }
- }
- },
- "RouteTable": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "RouteTableId"
- }
- ],
- "shape": "RouteTable",
- "load": {
- "request": {
- "operation": "DescribeRouteTables",
- "params": [
- { "target": "RouteTableIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "RouteTables[0]"
- },
- "actions": {
- "AssociateWithSubnet": {
- "request": {
- "operation": "AssociateRouteTable",
- "params": [
- { "target": "RouteTableId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "RouteTableAssociation",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "AssociationId" }
- ]
- }
- },
- "CreateRoute": {
- "request": {
- "operation": "CreateRoute",
- "params": [
- { "target": "RouteTableId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Route",
- "identifiers": [
- { "target": "RouteTableId", "source": "identifier", "name": "Id" },
- { "target": "DestinationCidrBlock", "source": "requestParameter", "path": "DestinationCidrBlock" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteRouteTable",
- "params": [
- { "target": "RouteTableId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "has": {
- "Routes": {
- "resource": {
- "type": "Route",
- "identifiers": [
- { "target": "RouteTableId", "source": "identifier", "name": "Id" },
- { "target": "DestinationCidrBlock", "source": "data", "path": "Routes[].DestinationCidrBlock" }
- ],
- "path": "Routes[]"
- }
- },
- "Vpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "VpcId" }
- ]
- }
- }
- },
- "hasMany": {
- "Associations": {
- "request": {
- "operation": "DescribeRouteTables",
- "params": [
- { "target": "RouteTableIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "RouteTableAssociation",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "RouteTables[0].Associations[].RouteTableAssociationId" }
- ],
- "path": "RouteTables[0].Associations[]"
- }
- }
- }
- },
- "RouteTableAssociation": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "RouteTableAssociationId"
- }
- ],
- "shape": "RouteTableAssociation",
- "actions": {
- "Delete": {
- "request": {
- "operation": "DisassociateRouteTable",
- "params": [
- { "target": "AssociationId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ReplaceSubnet": {
- "request": {
- "operation": "ReplaceRouteTableAssociation",
- "params": [
- { "target": "AssociationId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "RouteTableAssociation",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NewAssociationId" }
- ]
- }
- }
- },
- "has": {
- "RouteTable": {
- "resource": {
- "type": "RouteTable",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "RouteTableId" }
- ]
- }
- },
- "Subnet": {
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "SubnetId" }
- ]
- }
- }
- }
- },
- "SecurityGroup": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "GroupId"
- }
- ],
- "shape": "SecurityGroup",
- "load": {
- "request": {
- "operation": "DescribeSecurityGroups",
- "params": [
- { "target": "GroupIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "SecurityGroups[0]"
- },
- "actions": {
- "AuthorizeEgress": {
- "request": {
- "operation": "AuthorizeSecurityGroupEgress",
- "params": [
- { "target": "GroupId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "AuthorizeIngress": {
- "request": {
- "operation": "AuthorizeSecurityGroupIngress",
- "params": [
- { "target": "GroupId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteSecurityGroup",
- "params": [
- { "target": "GroupId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "RevokeEgress": {
- "request": {
- "operation": "RevokeSecurityGroupEgress",
- "params": [
- { "target": "GroupId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "RevokeIngress": {
- "request": {
- "operation": "RevokeSecurityGroupIngress",
- "params": [
- { "target": "GroupId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- }
- },
- "Snapshot": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "SnapshotId"
- }
- ],
- "shape": "Snapshot",
- "load": {
- "request": {
- "operation": "DescribeSnapshots",
- "params": [
- { "target": "SnapshotIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "Snapshots[0]"
- },
- "actions": {
- "Copy": {
- "request": {
- "operation": "CopySnapshot",
- "params": [
- { "target": "SourceSnapshotId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteSnapshot",
- "params": [
- { "target": "SnapshotId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DescribeAttribute": {
- "request": {
- "operation": "DescribeSnapshotAttribute",
- "params": [
- { "target": "SnapshotId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ModifyAttribute": {
- "request": {
- "operation": "ModifySnapshotAttribute",
- "params": [
- { "target": "SnapshotId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ResetAttribute": {
- "request": {
- "operation": "ResetSnapshotAttribute",
- "params": [
- { "target": "SnapshotId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "waiters": {
- "Completed": {
- "waiterName": "SnapshotCompleted",
- "params": [
- { "target": "SnapshotIds[]", "source": "identifier", "name": "Id" }
- ],
- "path": "Snapshots[]"
- }
- },
- "has": {
- "Volume": {
- "resource": {
- "type": "Volume",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "VolumeId" }
- ]
- }
- }
- }
- },
- "Subnet": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "SubnetId"
- }
- ],
- "shape": "Subnet",
- "load": {
- "request": {
- "operation": "DescribeSubnets",
- "params": [
- { "target": "SubnetIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "Subnets[0]"
- },
- "actions": {
- "CreateInstances": {
- "request": {
- "operation": "RunInstances",
- "params": [
- { "target": "SubnetId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Instances[].InstanceId" }
- ],
- "path": "Instances[]"
- }
- },
- "CreateNetworkInterface": {
- "request": {
- "operation": "CreateNetworkInterface",
- "params": [
- { "target": "SubnetId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "NetworkInterface",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkInterface.NetworkInterfaceId" }
- ],
- "path": "NetworkInterface"
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteSubnet",
- "params": [
- { "target": "SubnetId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "has": {
- "Vpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "VpcId" }
- ]
- }
- }
- },
- "hasMany": {
- "Instances": {
- "request": {
- "operation": "DescribeInstances",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "subnet-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
- ],
- "path": "Reservations[].Instances[]"
- }
- },
- "NetworkInterfaces": {
- "request": {
- "operation": "DescribeNetworkInterfaces",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "subnet-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "NetworkInterface",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkInterfaces[].NetworkInterfaceId" }
- ],
- "path": "NetworkInterfaces[]"
- }
- }
- }
- },
- "Tag": {
- "identifiers": [
- {
- "name": "ResourceId",
- "memberName": "ResourceId"
- },
- {
- "name": "Key",
- "memberName": "Key"
- },
- {
- "name": "Value",
- "memberName": "Value"
- }
- ],
- "shape": "TagDescription",
- "load": {
- "request": {
- "operation": "DescribeTags",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "key" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Key" },
- { "target": "Filters[1].Name", "source": "string", "value": "value" },
- { "target": "Filters[1].Values[0]", "source": "identifier", "name": "Value" }
- ]
- },
- "path": "Tags[0]"
- },
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeleteTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "ResourceId" },
- { "target": "Tags[0].Key", "source": "identifier", "name": "Key" },
- { "target": "Tags[0].Value", "source": "identifier", "name": "Value" }
- ]
- }
- }
- },
- "batchActions": {
- "Delete": {
- "request": {
- "operation": "DeleteTags",
- "params": [
- { "target": "Resources[]", "source": "identifier", "name": "ResourceId" },
- { "target": "Tags[*].Key", "source": "identifier", "name": "Key" },
- { "target": "Tags[*].Value", "source": "identifier", "name": "Value" }
- ]
- }
- }
- }
- },
- "Volume": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "VolumeId"
- }
- ],
- "shape": "Volume",
- "load": {
- "request": {
- "operation": "DescribeVolumes",
- "params": [
- { "target": "VolumeIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "Volumes[0]"
- },
- "actions": {
- "AttachToInstance": {
- "request": {
- "operation": "AttachVolume",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateSnapshot": {
- "request": {
- "operation": "CreateSnapshot",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Snapshot",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "SnapshotId" }
- ],
- "path": "@"
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteVolume",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DescribeAttribute": {
- "request": {
- "operation": "DescribeVolumeAttribute",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DescribeStatus": {
- "request": {
- "operation": "DescribeVolumeStatus",
- "params": [
- { "target": "VolumeIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DetachFromInstance": {
- "request": {
- "operation": "DetachVolume",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "EnableIo": {
- "request": {
- "operation": "EnableVolumeIO",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ModifyAttribute": {
- "request": {
- "operation": "ModifyVolumeAttribute",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "hasMany": {
- "Snapshots": {
- "request": {
- "operation": "DescribeSnapshots",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "volume-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Snapshot",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Snapshots[].SnapshotId" }
- ],
- "path": "Snapshots[]"
- }
- }
- }
- },
- "Vpc": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "VpcId"
- }
- ],
- "shape": "Vpc",
- "load": {
- "request": {
- "operation": "DescribeVpcs",
- "params": [
- { "target": "VpcIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "Vpcs[0]"
- },
- "actions": {
- "AssociateDhcpOptions": {
- "request": {
- "operation": "AssociateDhcpOptions",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "AttachClassicLinkInstance": {
- "request": {
- "operation": "AttachClassicLinkVpc",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "AttachInternetGateway": {
- "request": {
- "operation": "AttachInternetGateway",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateNetworkAcl": {
- "request": {
- "operation": "CreateNetworkAcl",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "NetworkAcl",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkAcl.NetworkAclId" }
- ],
- "path": "NetworkAcl"
- }
- },
- "CreateRouteTable": {
- "request": {
- "operation": "CreateRouteTable",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "RouteTable",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "RouteTable.RouteTableId" }
- ],
- "path": "RouteTable"
- }
- },
- "CreateSecurityGroup": {
- "request": {
- "operation": "CreateSecurityGroup",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "SecurityGroup",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "GroupId" }
- ]
- }
- },
- "CreateSubnet": {
- "request": {
- "operation": "CreateSubnet",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Subnet.SubnetId" }
- ],
- "path": "Subnet"
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteVpc",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DescribeAttribute": {
- "request": {
- "operation": "DescribeVpcAttribute",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DetachClassicLinkInstance": {
- "request": {
- "operation": "DetachClassicLinkVpc",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DetachInternetGateway": {
- "request": {
- "operation": "DetachInternetGateway",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DisableClassicLink": {
- "request": {
- "operation": "DisableVpcClassicLink",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "EnableClassicLink": {
- "request": {
- "operation": "EnableVpcClassicLink",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ModifyAttribute": {
- "request": {
- "operation": "ModifyVpcAttribute",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "RequestVpcPeeringConnection": {
- "request": {
- "operation": "CreateVpcPeeringConnection",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "VpcPeeringConnection",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "VpcPeeringConnection.VpcPeeringConnectionId" }
- ],
- "path": "VpcPeeringConnection"
- }
- }
- },
- "has": {
- "DhcpOptions": {
- "resource": {
- "type": "DhcpOptions",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "DhcpOptionsId" }
- ]
- }
- }
- },
- "hasMany": {
- "AcceptedVpcPeeringConnections": {
- "request": {
- "operation": "DescribeVpcPeeringConnections",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "accepter-vpc-info.vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "VpcPeeringConnection",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "VpcPeeringConnections[].VpcPeeringConnectionId" }
- ],
- "path": "VpcPeeringConnections[]"
- }
- },
- "Instances": {
- "request": {
- "operation": "DescribeInstances",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
- ],
- "path": "Reservations[].Instances[]"
- }
- },
- "InternetGateways": {
- "request": {
- "operation": "DescribeInternetGateways",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "attachment.vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "InternetGateway",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "InternetGateways[].InternetGatewayId" }
- ],
- "path": "InternetGateways[]"
- }
- },
- "NetworkAcls": {
- "request": {
- "operation": "DescribeNetworkAcls",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "NetworkAcl",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkAcls[].NetworkAclId" }
- ],
- "path": "NetworkAcls[]"
- }
- },
- "NetworkInterfaces": {
- "request": {
- "operation": "DescribeNetworkInterfaces",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "NetworkInterface",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkInterfaces[].NetworkInterfaceId" }
- ],
- "path": "NetworkInterfaces[]"
- }
- },
- "RequestedVpcPeeringConnections": {
- "request": {
- "operation": "DescribeVpcPeeringConnections",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "requester-vpc-info.vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "VpcPeeringConnection",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "VpcPeeringConnections[].VpcPeeringConnectionId" }
- ],
- "path": "VpcPeeringConnections[]"
- }
- },
- "RouteTables": {
- "request": {
- "operation": "DescribeRouteTables",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "RouteTable",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "RouteTables[].RouteTableId" }
- ],
- "path": "RouteTables[]"
- }
- },
- "SecurityGroups": {
- "request": {
- "operation": "DescribeSecurityGroups",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "SecurityGroup",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "SecurityGroups[].GroupId" }
- ],
- "path": "SecurityGroups[]"
- }
- },
- "Subnets": {
- "request": {
- "operation": "DescribeSubnets",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Subnets[].SubnetId" }
- ],
- "path": "Subnets[]"
- }
- }
- }
- },
- "VpcPeeringConnection": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "VpcPeeringConnectionId"
- }
- ],
- "shape": "VpcPeeringConnection",
- "load": {
- "request": {
- "operation": "DescribeVpcPeeringConnections",
- "params": [
- { "target": "VpcPeeringConnectionIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "VpcPeeringConnections[0]"
- },
- "actions": {
- "Accept": {
- "request": {
- "operation": "AcceptVpcPeeringConnection",
- "params": [
- { "target": "VpcPeeringConnectionId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteVpcPeeringConnection",
- "params": [
- { "target": "VpcPeeringConnectionId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Reject": {
- "request": {
- "operation": "RejectVpcPeeringConnection",
- "params": [
- { "target": "VpcPeeringConnectionId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "waiters": {
- "Exists": {
- "waiterName": "VpcPeeringConnectionExists",
- "params": [
- { "target": "VpcPeeringConnectionIds[]", "source": "identifier", "name": "Id" }
- ],
- "path": "VpcPeeringConnections[0]"
- }
- },
- "has": {
- "AccepterVpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "AccepterVpcInfo.VpcId" }
- ]
- }
- },
- "RequesterVpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "RequesterVpcInfo.VpcId" }
- ]
- }
- }
- }
- },
- "VpcAddress": {
- "identifiers": [
- {
- "name": "AllocationId"
- }
- ],
- "shape": "Address",
- "load": {
- "request": {
- "operation": "DescribeAddresses",
- "params": [
- { "target": "AllocationIds[0]", "source": "identifier", "name": "AllocationId" }
- ]
- },
- "path": "Addresses[0]"
- },
- "actions": {
- "Associate": {
- "request": {
- "operation": "AssociateAddress",
- "params": [
- { "target": "AllocationId", "source": "identifier", "name": "AllocationId" }
- ]
- }
- },
- "Release": {
- "request": {
- "operation": "ReleaseAddress",
- "params": [
- { "target": "AllocationId", "source": "data", "path": "AllocationId" }
- ]
- }
- }
- },
- "has": {
- "Association": {
- "resource": {
- "type": "NetworkInterfaceAssociation",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "AssociationId" }
- ]
- }
- }
- }
- }
- }
-}
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/ec2/2016-09-15/resources-1.json b/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/ec2/2016-09-15/resources-1.json
deleted file mode 100644
index 4831a36b..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/ec2/2016-09-15/resources-1.json
+++ /dev/null
@@ -1,2567 +0,0 @@
-{
- "service": {
- "actions": {
- "CreateDhcpOptions": {
- "request": { "operation": "CreateDhcpOptions" },
- "resource": {
- "type": "DhcpOptions",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "DhcpOptions.DhcpOptionsId" }
- ],
- "path": "DhcpOptions"
- }
- },
- "CreateInstances": {
- "request": { "operation": "RunInstances" },
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Instances[].InstanceId" }
- ],
- "path": "Instances[]"
- }
- },
- "CreateInternetGateway": {
- "request": { "operation": "CreateInternetGateway" },
- "resource": {
- "type": "InternetGateway",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "InternetGateway.InternetGatewayId" }
- ],
- "path": "InternetGateway"
- }
- },
- "CreateKeyPair": {
- "request": { "operation": "CreateKeyPair" },
- "resource": {
- "type": "KeyPair",
- "identifiers": [
- { "target": "Name", "source": "response", "path": "KeyName" }
- ],
- "path": "@"
- }
- },
- "CreateNetworkAcl": {
- "request": { "operation": "CreateNetworkAcl" },
- "resource": {
- "type": "NetworkAcl",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkAcl.NetworkAclId" }
- ],
- "path": "NetworkAcl"
- }
- },
- "CreateNetworkInterface": {
- "request": { "operation": "CreateNetworkInterface" },
- "resource": {
- "type": "NetworkInterface",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkInterface.NetworkInterfaceId" }
- ],
- "path": "NetworkInterface"
- }
- },
- "CreatePlacementGroup": {
- "request": { "operation": "CreatePlacementGroup" },
- "resource": {
- "type": "PlacementGroup",
- "identifiers": [
- { "target": "Name", "source": "requestParameter", "path": "GroupName" }
- ]
- }
- },
- "CreateRouteTable": {
- "request": { "operation": "CreateRouteTable" },
- "resource": {
- "type": "RouteTable",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "RouteTable.RouteTableId" }
- ],
- "path": "RouteTable"
- }
- },
- "CreateSecurityGroup": {
- "request": { "operation": "CreateSecurityGroup" },
- "resource": {
- "type": "SecurityGroup",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "GroupId" }
- ]
- }
- },
- "CreateSnapshot": {
- "request": { "operation": "CreateSnapshot" },
- "resource": {
- "type": "Snapshot",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "SnapshotId" }
- ],
- "path": "@"
- }
- },
- "CreateSubnet": {
- "request": { "operation": "CreateSubnet" },
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Subnet.SubnetId" }
- ],
- "path": "Subnet"
- }
- },
- "CreateTags": {
- "request": { "operation": "CreateTags" }
- },
- "CreateVolume": {
- "request": { "operation": "CreateVolume" },
- "resource": {
- "type": "Volume",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "VolumeId" }
- ],
- "path": "@"
- }
- },
- "CreateVpc": {
- "request": { "operation": "CreateVpc" },
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Vpc.VpcId" }
- ],
- "path": "Vpc"
- }
- },
- "CreateVpcPeeringConnection": {
- "request": { "operation": "CreateVpcPeeringConnection" },
- "resource": {
- "type": "VpcPeeringConnection",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "VpcPeeringConnection.VpcPeeringConnectionId" }
- ],
- "path": "VpcPeeringConnection"
- }
- },
- "DisassociateRouteTable": {
- "request": { "operation": "DisassociateRouteTable" }
- },
- "ImportKeyPair": {
- "request": { "operation": "ImportKeyPair" },
- "resource": {
- "type": "KeyPairInfo",
- "identifiers": [
- { "target": "Name", "source": "response", "path": "KeyName" }
- ]
- }
- },
- "RegisterImage": {
- "request": { "operation": "RegisterImage" },
- "resource": {
- "type": "Image",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "ImageId" }
- ]
- }
- }
- },
- "has": {
- "DhcpOptions": {
- "resource": {
- "type": "DhcpOptions",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Image": {
- "resource": {
- "type": "Image",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Instance": {
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "InternetGateway": {
- "resource": {
- "type": "InternetGateway",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "KeyPair": {
- "resource": {
- "type": "KeyPairInfo",
- "identifiers": [
- { "target": "Name", "source": "input" }
- ]
- }
- },
- "NetworkAcl": {
- "resource": {
- "type": "NetworkAcl",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "NetworkInterface": {
- "resource": {
- "type": "NetworkInterface",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "PlacementGroup": {
- "resource": {
- "type": "PlacementGroup",
- "identifiers": [
- { "target": "Name", "source": "input" }
- ]
- }
- },
- "RouteTable": {
- "resource": {
- "type": "RouteTable",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "RouteTableAssociation": {
- "resource": {
- "type": "RouteTableAssociation",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "SecurityGroup": {
- "resource": {
- "type": "SecurityGroup",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Snapshot": {
- "resource": {
- "type": "Snapshot",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Subnet": {
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Volume": {
- "resource": {
- "type": "Volume",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Vpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "VpcPeeringConnection": {
- "resource": {
- "type": "VpcPeeringConnection",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- }
- },
- "hasMany": {
- "ClassicAddresses": {
- "request": {
- "operation": "DescribeAddresses",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "domain" },
- { "target": "Filters[0].Values[0]", "source": "string", "value": "standard" }
- ]
- },
- "resource": {
- "type": "ClassicAddress",
- "identifiers": [
- { "target": "PublicIp", "source": "response", "path": "Addresses[].PublicIp" }
- ],
- "path": "Addresses[]"
- }
- },
- "DhcpOptionsSets": {
- "request": { "operation": "DescribeDhcpOptions" },
- "resource": {
- "type": "DhcpOptions",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "DhcpOptions[].DhcpOptionsId" }
- ],
- "path": "DhcpOptions[]"
- }
- },
- "Images": {
- "request": { "operation": "DescribeImages" },
- "resource": {
- "type": "Image",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Images[].ImageId" }
- ],
- "path": "Images[]"
- }
- },
- "Instances": {
- "request": { "operation": "DescribeInstances" },
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
- ],
- "path": "Reservations[].Instances[]"
- }
- },
- "InternetGateways": {
- "request": { "operation": "DescribeInternetGateways" },
- "resource": {
- "type": "InternetGateway",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "InternetGateways[].InternetGatewayId" }
- ],
- "path": "InternetGateways[]"
- }
- },
- "KeyPairs": {
- "request": { "operation": "DescribeKeyPairs" },
- "resource": {
- "type": "KeyPairInfo",
- "identifiers": [
- { "target": "Name", "source": "response", "path": "KeyPairs[].KeyName" }
- ],
- "path": "KeyPairs[]"
- }
- },
- "NetworkAcls": {
- "request": { "operation": "DescribeNetworkAcls" },
- "resource": {
- "type": "NetworkAcl",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkAcls[].NetworkAclId" }
- ],
- "path": "NetworkAcls[]"
- }
- },
- "NetworkInterfaces": {
- "request": { "operation": "DescribeNetworkInterfaces" },
- "resource": {
- "type": "NetworkInterface",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkInterfaces[].NetworkInterfaceId" }
- ],
- "path": "NetworkInterfaces[]"
- }
- },
- "PlacementGroups": {
- "request": { "operation": "DescribePlacementGroups" },
- "resource": {
- "type": "PlacementGroup",
- "identifiers": [
- { "target": "Name", "source": "response", "path": "PlacementGroups[].GroupName" }
- ],
- "path": "PlacementGroups[]"
- }
- },
- "RouteTables": {
- "request": { "operation": "DescribeRouteTables" },
- "resource": {
- "type": "RouteTable",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "RouteTables[].RouteTableId" }
- ],
- "path": "RouteTables[]"
- }
- },
- "SecurityGroups": {
- "request": { "operation": "DescribeSecurityGroups" },
- "resource": {
- "type": "SecurityGroup",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "SecurityGroups[].GroupId" }
- ],
- "path": "SecurityGroups[]"
- }
- },
- "Snapshots": {
- "request": { "operation": "DescribeSnapshots" },
- "resource": {
- "type": "Snapshot",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Snapshots[].SnapshotId" }
- ],
- "path": "Snapshots[]"
- }
- },
- "Subnets": {
- "request": { "operation": "DescribeSubnets" },
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Subnets[].SubnetId" }
- ],
- "path": "Subnets[]"
- }
- },
- "Volumes": {
- "request": { "operation": "DescribeVolumes" },
- "resource": {
- "type": "Volume",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Volumes[].VolumeId" }
- ],
- "path": "Volumes[]"
- }
- },
- "VpcAddresses": {
- "request": {
- "operation": "DescribeAddresses",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "domain" },
- { "target": "Filters[0].Values[0]", "source": "string", "value": "vpc" }
- ]
- },
- "resource": {
- "type": "VpcAddress",
- "identifiers": [
- { "target": "AllocationId", "source": "response", "path": "Addresses[].AllocationId" }
- ],
- "path": "Addresses[]"
- }
- },
- "VpcPeeringConnections": {
- "request": { "operation": "DescribeVpcPeeringConnections" },
- "resource": {
- "type": "VpcPeeringConnection",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "VpcPeeringConnections[].VpcPeeringConnectionId" }
- ],
- "path": "VpcPeeringConnections[]"
- }
- },
- "Vpcs": {
- "request": { "operation": "DescribeVpcs" },
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Vpcs[].VpcId" }
- ],
- "path": "Vpcs[]"
- }
- }
- }
- },
- "resources": {
- "ClassicAddress": {
- "identifiers": [
- {
- "name": "PublicIp"
- }
- ],
- "shape": "Address",
- "load": {
- "request": {
- "operation": "DescribeAddresses",
- "params": [
- { "target": "PublicIps[]", "source": "identifier", "name": "PublicIp" }
- ]
- },
- "path": "Addresses[0]"
- },
- "actions": {
- "Associate": {
- "request": {
- "operation": "AssociateAddress",
- "params": [
- { "target": "PublicIp", "source": "identifier", "name": "PublicIp" }
- ]
- }
- },
- "Disassociate": {
- "request": {
- "operation": "DisassociateAddress",
- "params": [
- { "target": "PublicIp", "source": "data", "path": "PublicIp" }
- ]
- }
- },
- "Release": {
- "request": {
- "operation": "ReleaseAddress",
- "params": [
- { "target": "PublicIp", "source": "data", "path": "PublicIp" }
- ]
- }
- }
- }
- },
- "DhcpOptions": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "DhcpOptionsId"
- }
- ],
- "shape": "DhcpOptions",
- "load": {
- "request": {
- "operation": "DescribeDhcpOptions",
- "params": [
- { "target": "DhcpOptionsIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "DhcpOptions[0]"
- },
- "actions": {
- "AssociateWithVpc": {
- "request": {
- "operation": "AssociateDhcpOptions",
- "params": [
- { "target": "DhcpOptionsId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteDhcpOptions",
- "params": [
- { "target": "DhcpOptionsId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- }
- },
- "Image": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "ImageId"
- }
- ],
- "shape": "Image",
- "load": {
- "request": {
- "operation": "DescribeImages",
- "params": [
- { "target": "ImageIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "Images[0]"
- },
- "actions": {
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Deregister": {
- "request": {
- "operation": "DeregisterImage",
- "params": [
- { "target": "ImageId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DescribeAttribute": {
- "request": {
- "operation": "DescribeImageAttribute",
- "params": [
- { "target": "ImageId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ModifyAttribute": {
- "request": {
- "operation": "ModifyImageAttribute",
- "params": [
- { "target": "ImageId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ResetAttribute": {
- "request": {
- "operation": "ResetImageAttribute",
- "params": [
- { "target": "ImageId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- }
- },
- "Instance": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "InstanceId"
- }
- ],
- "shape": "Instance",
- "load": {
- "request": {
- "operation": "DescribeInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "Reservations[0].Instances[0]"
- },
- "actions": {
- "AttachClassicLinkVpc": {
- "request": {
- "operation": "AttachClassicLinkVpc",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "AttachVolume": {
- "request": {
- "operation": "AttachVolume",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ConsoleOutput": {
- "request": {
- "operation": "GetConsoleOutput",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateImage": {
- "request": {
- "operation": "CreateImage",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Image",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "ImageId" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "DescribeAttribute": {
- "request": {
- "operation": "DescribeInstanceAttribute",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DetachClassicLinkVpc": {
- "request": {
- "operation": "DetachClassicLinkVpc",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DetachVolume": {
- "request": {
- "operation": "DetachVolume",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ModifyAttribute": {
- "request": {
- "operation": "ModifyInstanceAttribute",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Monitor": {
- "request": {
- "operation": "MonitorInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "PasswordData": {
- "request": {
- "operation": "GetPasswordData",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Reboot": {
- "request": {
- "operation": "RebootInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ReportStatus": {
- "request": {
- "operation": "ReportInstanceStatus",
- "params": [
- { "target": "Instances[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ResetAttribute": {
- "request": {
- "operation": "ResetInstanceAttribute",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ResetKernel": {
- "request": {
- "operation": "ResetInstanceAttribute",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" },
- { "target": "Attribute", "source": "string", "value": "kernel" }
- ]
- }
- },
- "ResetRamdisk": {
- "request": {
- "operation": "ResetInstanceAttribute",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" },
- { "target": "Attribute", "source": "string", "value": "ramdisk" }
- ]
- }
- },
- "ResetSourceDestCheck": {
- "request": {
- "operation": "ResetInstanceAttribute",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" },
- { "target": "Attribute", "source": "string", "value": "sourceDestCheck" }
- ]
- }
- },
- "Start": {
- "request": {
- "operation": "StartInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Stop": {
- "request": {
- "operation": "StopInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Terminate": {
- "request": {
- "operation": "TerminateInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Unmonitor": {
- "request": {
- "operation": "UnmonitorInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "batchActions": {
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Monitor": {
- "request": {
- "operation": "MonitorInstances",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Reboot": {
- "request": {
- "operation": "RebootInstances",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Start": {
- "request": {
- "operation": "StartInstances",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Stop": {
- "request": {
- "operation": "StopInstances",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Terminate": {
- "request": {
- "operation": "TerminateInstances",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Unmonitor": {
- "request": {
- "operation": "UnmonitorInstances",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "waiters": {
- "Exists": {
- "waiterName": "InstanceExists",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ],
- "path": "Reservations[0].Instances[0]"
- },
- "Running": {
- "waiterName": "InstanceRunning",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ],
- "path": "Reservations[0].Instances[0]"
- },
- "Stopped": {
- "waiterName": "InstanceStopped",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ],
- "path": "Reservations[0].Instances[0]"
- },
- "Terminated": {
- "waiterName": "InstanceTerminated",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ],
- "path": "Reservations[0].Instances[0]"
- }
- },
- "has": {
- "ClassicAddress": {
- "resource": {
- "type": "ClassicAddress",
- "identifiers": [
- { "target": "PublicIp", "source": "data", "path": "PublicIpAddress" }
- ]
- }
- },
- "Image": {
- "resource": {
- "type": "Image",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "ImageId" }
- ]
- }
- },
- "KeyPair": {
- "resource": {
- "type": "KeyPairInfo",
- "identifiers": [
- { "target": "Name", "source": "data", "path": "KeyName" }
- ]
- }
- },
- "NetworkInterfaces": {
- "resource": {
- "type": "NetworkInterface",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "NetworkInterfaces[].NetworkInterfaceId" }
- ],
- "path": "NetworkInterfaces[]"
- }
- },
- "PlacementGroup": {
- "resource": {
- "type": "PlacementGroup",
- "identifiers": [
- { "target": "Name", "source": "data", "path": "Placement.GroupName" }
- ]
- }
- },
- "Subnet": {
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "SubnetId" }
- ]
- }
- },
- "Vpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "VpcId" }
- ]
- }
- }
- },
- "hasMany": {
- "Volumes": {
- "request": {
- "operation": "DescribeVolumes",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "attachment.instance-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Volume",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Volumes[].VolumeId" }
- ],
- "path": "Volumes[]"
- }
- },
- "VpcAddresses": {
- "request": {
- "operation": "DescribeAddresses",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "instance-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "VpcAddress",
- "identifiers": [
- { "target": "AllocationId", "source": "response", "path": "Addresses[].AllocationId" }
- ],
- "path": "Addresses[]"
- }
- }
- }
- },
- "InternetGateway": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "InternetGatewayId"
- }
- ],
- "shape": "InternetGateway",
- "load": {
- "request": {
- "operation": "DescribeInternetGateways",
- "params": [
- { "target": "InternetGatewayIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "InternetGateways[0]"
- },
- "actions": {
- "AttachToVpc": {
- "request": {
- "operation": "AttachInternetGateway",
- "params": [
- { "target": "InternetGatewayId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteInternetGateway",
- "params": [
- { "target": "InternetGatewayId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DetachFromVpc": {
- "request": {
- "operation": "DetachInternetGateway",
- "params": [
- { "target": "InternetGatewayId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- }
- },
- "KeyPair": {
- "identifiers": [
- {
- "name": "Name",
- "memberName": "KeyName"
- }
- ],
- "shape": "KeyPair",
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeleteKeyPair",
- "params": [
- { "target": "KeyName", "source": "identifier", "name": "Name" }
- ]
- }
- }
- }
- },
- "KeyPairInfo": {
- "identifiers": [
- {
- "name": "Name",
- "memberName": "KeyName"
- }
- ],
- "shape": "KeyPairInfo",
- "load": {
- "request": {
- "operation": "DescribeKeyPairs",
- "params": [
- { "target": "KeyNames[0]", "source": "identifier", "name": "Name" }
- ]
- },
- "path": "KeyPairs[0]"
- },
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeleteKeyPair",
- "params": [
- { "target": "KeyName", "source": "identifier", "name": "Name" }
- ]
- }
- }
- }
- },
- "NetworkAcl": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "NetworkAclId"
- }
- ],
- "shape": "NetworkAcl",
- "load": {
- "request": {
- "operation": "DescribeNetworkAcls",
- "params": [
- { "target": "NetworkAclIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "NetworkAcls[0]"
- },
- "actions": {
- "CreateEntry": {
- "request": {
- "operation": "CreateNetworkAclEntry",
- "params": [
- { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteNetworkAcl",
- "params": [
- { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DeleteEntry": {
- "request": {
- "operation": "DeleteNetworkAclEntry",
- "params": [
- { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ReplaceAssociation": {
- "request": {
- "operation": "ReplaceNetworkAclAssociation",
- "params": [
- { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ReplaceEntry": {
- "request": {
- "operation": "ReplaceNetworkAclEntry",
- "params": [
- { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "has": {
- "Vpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "VpcId" }
- ]
- }
- }
- }
- },
- "NetworkInterface": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "NetworkInterfaceId"
- }
- ],
- "shape": "NetworkInterface",
- "load": {
- "request": {
- "operation": "DescribeNetworkInterfaces",
- "params": [
- { "target": "NetworkInterfaceIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "NetworkInterfaces[0]"
- },
- "actions": {
- "AssignPrivateIpAddresses": {
- "request": {
- "operation": "AssignPrivateIpAddresses",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Attach": {
- "request": {
- "operation": "AttachNetworkInterface",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteNetworkInterface",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DescribeAttribute": {
- "request": {
- "operation": "DescribeNetworkInterfaceAttribute",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Detach": {
- "request": {
- "operation": "DetachNetworkInterface",
- "params": [
- { "target": "AttachmentId", "source": "data", "path": "Attachment.AttachmentId" }
- ]
- }
- },
- "ModifyAttribute": {
- "request": {
- "operation": "ModifyNetworkInterfaceAttribute",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ResetAttribute": {
- "request": {
- "operation": "ResetNetworkInterfaceAttribute",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "UnassignPrivateIpAddresses": {
- "request": {
- "operation": "UnassignPrivateIpAddresses",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "has": {
- "Association": {
- "resource": {
- "type": "NetworkInterfaceAssociation",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "Association.AssociationId" }
- ],
- "path": "Association"
- }
- },
- "Subnet": {
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "SubnetId" }
- ]
- }
- },
- "Vpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "VpcId" }
- ]
- }
- }
- }
- },
- "NetworkInterfaceAssociation": {
- "identifiers": [
- {
- "name": "Id"
- }
- ],
- "shape": "InstanceNetworkInterfaceAssociation",
- "load": {
- "request": {
- "operation": "DescribeNetworkInterfaces",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "association.association-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "NetworkInterfaces[0].Association"
- },
- "actions": {
- "Delete": {
- "request": {
- "operation": "DisassociateAddress",
- "params": [
- { "target": "AssociationId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "has": {
- "Address": {
- "resource": {
- "type": "VpcAddress",
- "identifiers": [
- { "target": "AllocationId", "source": "data", "path": "AllocationId" }
- ]
- }
- }
- }
- },
- "PlacementGroup": {
- "identifiers": [
- {
- "name": "Name",
- "memberName": "GroupName"
- }
- ],
- "shape": "PlacementGroup",
- "load": {
- "request": {
- "operation": "DescribePlacementGroups",
- "params": [
- { "target": "GroupNames[0]", "source": "identifier", "name": "Name" }
- ]
- },
- "path": "PlacementGroups[0]"
- },
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeletePlacementGroup",
- "params": [
- { "target": "GroupName", "source": "identifier", "name": "Name" }
- ]
- }
- }
- },
- "hasMany": {
- "Instances": {
- "request": {
- "operation": "DescribeInstances",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "placement-group-name" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Name" }
- ]
- },
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
- ],
- "path": "Reservations[].Instances[]"
- }
- }
- }
- },
- "Route": {
- "identifiers": [
- { "name": "RouteTableId" },
- {
- "name": "DestinationCidrBlock",
- "memberName": "DestinationCidrBlock"
- }
- ],
- "shape": "Route",
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeleteRoute",
- "params": [
- { "target": "RouteTableId", "source": "identifier", "name": "RouteTableId" },
- { "target": "DestinationCidrBlock", "source": "identifier", "name": "DestinationCidrBlock" }
- ]
- }
- },
- "Replace": {
- "request": {
- "operation": "ReplaceRoute",
- "params": [
- { "target": "RouteTableId", "source": "identifier", "name": "RouteTableId" },
- { "target": "DestinationCidrBlock", "source": "identifier", "name": "DestinationCidrBlock" }
- ]
- }
- }
- },
- "has": {
- "RouteTable": {
- "resource": {
- "type": "RouteTable",
- "identifiers": [
- { "target": "Id", "source": "identifier", "name": "RouteTableId" }
- ]
- }
- }
- }
- },
- "RouteTable": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "RouteTableId"
- }
- ],
- "shape": "RouteTable",
- "load": {
- "request": {
- "operation": "DescribeRouteTables",
- "params": [
- { "target": "RouteTableIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "RouteTables[0]"
- },
- "actions": {
- "AssociateWithSubnet": {
- "request": {
- "operation": "AssociateRouteTable",
- "params": [
- { "target": "RouteTableId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "RouteTableAssociation",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "AssociationId" }
- ]
- }
- },
- "CreateRoute": {
- "request": {
- "operation": "CreateRoute",
- "params": [
- { "target": "RouteTableId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Route",
- "identifiers": [
- { "target": "RouteTableId", "source": "identifier", "name": "Id" },
- { "target": "DestinationCidrBlock", "source": "requestParameter", "path": "DestinationCidrBlock" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteRouteTable",
- "params": [
- { "target": "RouteTableId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "has": {
- "Routes": {
- "resource": {
- "type": "Route",
- "identifiers": [
- { "target": "RouteTableId", "source": "identifier", "name": "Id" },
- { "target": "DestinationCidrBlock", "source": "data", "path": "Routes[].DestinationCidrBlock" }
- ],
- "path": "Routes[]"
- }
- },
- "Vpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "VpcId" }
- ]
- }
- }
- },
- "hasMany": {
- "Associations": {
- "request": {
- "operation": "DescribeRouteTables",
- "params": [
- { "target": "RouteTableIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "RouteTableAssociation",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "RouteTables[0].Associations[].RouteTableAssociationId" }
- ],
- "path": "RouteTables[0].Associations[]"
- }
- }
- }
- },
- "RouteTableAssociation": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "RouteTableAssociationId"
- }
- ],
- "shape": "RouteTableAssociation",
- "actions": {
- "Delete": {
- "request": {
- "operation": "DisassociateRouteTable",
- "params": [
- { "target": "AssociationId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ReplaceSubnet": {
- "request": {
- "operation": "ReplaceRouteTableAssociation",
- "params": [
- { "target": "AssociationId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "RouteTableAssociation",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NewAssociationId" }
- ]
- }
- }
- },
- "has": {
- "RouteTable": {
- "resource": {
- "type": "RouteTable",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "RouteTableId" }
- ]
- }
- },
- "Subnet": {
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "SubnetId" }
- ]
- }
- }
- }
- },
- "SecurityGroup": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "GroupId"
- }
- ],
- "shape": "SecurityGroup",
- "load": {
- "request": {
- "operation": "DescribeSecurityGroups",
- "params": [
- { "target": "GroupIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "SecurityGroups[0]"
- },
- "actions": {
- "AuthorizeEgress": {
- "request": {
- "operation": "AuthorizeSecurityGroupEgress",
- "params": [
- { "target": "GroupId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "AuthorizeIngress": {
- "request": {
- "operation": "AuthorizeSecurityGroupIngress",
- "params": [
- { "target": "GroupId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteSecurityGroup",
- "params": [
- { "target": "GroupId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "RevokeEgress": {
- "request": {
- "operation": "RevokeSecurityGroupEgress",
- "params": [
- { "target": "GroupId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "RevokeIngress": {
- "request": {
- "operation": "RevokeSecurityGroupIngress",
- "params": [
- { "target": "GroupId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- }
- },
- "Snapshot": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "SnapshotId"
- }
- ],
- "shape": "Snapshot",
- "load": {
- "request": {
- "operation": "DescribeSnapshots",
- "params": [
- { "target": "SnapshotIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "Snapshots[0]"
- },
- "actions": {
- "Copy": {
- "request": {
- "operation": "CopySnapshot",
- "params": [
- { "target": "SourceSnapshotId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteSnapshot",
- "params": [
- { "target": "SnapshotId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DescribeAttribute": {
- "request": {
- "operation": "DescribeSnapshotAttribute",
- "params": [
- { "target": "SnapshotId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ModifyAttribute": {
- "request": {
- "operation": "ModifySnapshotAttribute",
- "params": [
- { "target": "SnapshotId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ResetAttribute": {
- "request": {
- "operation": "ResetSnapshotAttribute",
- "params": [
- { "target": "SnapshotId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "waiters": {
- "Completed": {
- "waiterName": "SnapshotCompleted",
- "params": [
- { "target": "SnapshotIds[]", "source": "identifier", "name": "Id" }
- ],
- "path": "Snapshots[]"
- }
- },
- "has": {
- "Volume": {
- "resource": {
- "type": "Volume",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "VolumeId" }
- ]
- }
- }
- }
- },
- "Subnet": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "SubnetId"
- }
- ],
- "shape": "Subnet",
- "load": {
- "request": {
- "operation": "DescribeSubnets",
- "params": [
- { "target": "SubnetIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "Subnets[0]"
- },
- "actions": {
- "CreateInstances": {
- "request": {
- "operation": "RunInstances",
- "params": [
- { "target": "SubnetId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Instances[].InstanceId" }
- ],
- "path": "Instances[]"
- }
- },
- "CreateNetworkInterface": {
- "request": {
- "operation": "CreateNetworkInterface",
- "params": [
- { "target": "SubnetId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "NetworkInterface",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkInterface.NetworkInterfaceId" }
- ],
- "path": "NetworkInterface"
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteSubnet",
- "params": [
- { "target": "SubnetId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "has": {
- "Vpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "VpcId" }
- ]
- }
- }
- },
- "hasMany": {
- "Instances": {
- "request": {
- "operation": "DescribeInstances",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "subnet-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
- ],
- "path": "Reservations[].Instances[]"
- }
- },
- "NetworkInterfaces": {
- "request": {
- "operation": "DescribeNetworkInterfaces",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "subnet-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "NetworkInterface",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkInterfaces[].NetworkInterfaceId" }
- ],
- "path": "NetworkInterfaces[]"
- }
- }
- }
- },
- "Tag": {
- "identifiers": [
- {
- "name": "ResourceId",
- "memberName": "ResourceId"
- },
- {
- "name": "Key",
- "memberName": "Key"
- },
- {
- "name": "Value",
- "memberName": "Value"
- }
- ],
- "shape": "TagDescription",
- "load": {
- "request": {
- "operation": "DescribeTags",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "key" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Key" },
- { "target": "Filters[1].Name", "source": "string", "value": "value" },
- { "target": "Filters[1].Values[0]", "source": "identifier", "name": "Value" }
- ]
- },
- "path": "Tags[0]"
- },
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeleteTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "ResourceId" },
- { "target": "Tags[0].Key", "source": "identifier", "name": "Key" },
- { "target": "Tags[0].Value", "source": "identifier", "name": "Value" }
- ]
- }
- }
- },
- "batchActions": {
- "Delete": {
- "request": {
- "operation": "DeleteTags",
- "params": [
- { "target": "Resources[]", "source": "identifier", "name": "ResourceId" },
- { "target": "Tags[*].Key", "source": "identifier", "name": "Key" },
- { "target": "Tags[*].Value", "source": "identifier", "name": "Value" }
- ]
- }
- }
- }
- },
- "Volume": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "VolumeId"
- }
- ],
- "shape": "Volume",
- "load": {
- "request": {
- "operation": "DescribeVolumes",
- "params": [
- { "target": "VolumeIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "Volumes[0]"
- },
- "actions": {
- "AttachToInstance": {
- "request": {
- "operation": "AttachVolume",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateSnapshot": {
- "request": {
- "operation": "CreateSnapshot",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Snapshot",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "SnapshotId" }
- ],
- "path": "@"
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteVolume",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DescribeAttribute": {
- "request": {
- "operation": "DescribeVolumeAttribute",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DescribeStatus": {
- "request": {
- "operation": "DescribeVolumeStatus",
- "params": [
- { "target": "VolumeIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DetachFromInstance": {
- "request": {
- "operation": "DetachVolume",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "EnableIo": {
- "request": {
- "operation": "EnableVolumeIO",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ModifyAttribute": {
- "request": {
- "operation": "ModifyVolumeAttribute",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "hasMany": {
- "Snapshots": {
- "request": {
- "operation": "DescribeSnapshots",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "volume-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Snapshot",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Snapshots[].SnapshotId" }
- ],
- "path": "Snapshots[]"
- }
- }
- }
- },
- "Vpc": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "VpcId"
- }
- ],
- "shape": "Vpc",
- "load": {
- "request": {
- "operation": "DescribeVpcs",
- "params": [
- { "target": "VpcIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "Vpcs[0]"
- },
- "actions": {
- "AssociateDhcpOptions": {
- "request": {
- "operation": "AssociateDhcpOptions",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "AttachClassicLinkInstance": {
- "request": {
- "operation": "AttachClassicLinkVpc",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "AttachInternetGateway": {
- "request": {
- "operation": "AttachInternetGateway",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateNetworkAcl": {
- "request": {
- "operation": "CreateNetworkAcl",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "NetworkAcl",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkAcl.NetworkAclId" }
- ],
- "path": "NetworkAcl"
- }
- },
- "CreateRouteTable": {
- "request": {
- "operation": "CreateRouteTable",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "RouteTable",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "RouteTable.RouteTableId" }
- ],
- "path": "RouteTable"
- }
- },
- "CreateSecurityGroup": {
- "request": {
- "operation": "CreateSecurityGroup",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "SecurityGroup",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "GroupId" }
- ]
- }
- },
- "CreateSubnet": {
- "request": {
- "operation": "CreateSubnet",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Subnet.SubnetId" }
- ],
- "path": "Subnet"
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteVpc",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DescribeAttribute": {
- "request": {
- "operation": "DescribeVpcAttribute",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DetachClassicLinkInstance": {
- "request": {
- "operation": "DetachClassicLinkVpc",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DetachInternetGateway": {
- "request": {
- "operation": "DetachInternetGateway",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DisableClassicLink": {
- "request": {
- "operation": "DisableVpcClassicLink",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "EnableClassicLink": {
- "request": {
- "operation": "EnableVpcClassicLink",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ModifyAttribute": {
- "request": {
- "operation": "ModifyVpcAttribute",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "RequestVpcPeeringConnection": {
- "request": {
- "operation": "CreateVpcPeeringConnection",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "VpcPeeringConnection",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "VpcPeeringConnection.VpcPeeringConnectionId" }
- ],
- "path": "VpcPeeringConnection"
- }
- }
- },
- "has": {
- "DhcpOptions": {
- "resource": {
- "type": "DhcpOptions",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "DhcpOptionsId" }
- ]
- }
- }
- },
- "hasMany": {
- "AcceptedVpcPeeringConnections": {
- "request": {
- "operation": "DescribeVpcPeeringConnections",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "accepter-vpc-info.vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "VpcPeeringConnection",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "VpcPeeringConnections[].VpcPeeringConnectionId" }
- ],
- "path": "VpcPeeringConnections[]"
- }
- },
- "Instances": {
- "request": {
- "operation": "DescribeInstances",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
- ],
- "path": "Reservations[].Instances[]"
- }
- },
- "InternetGateways": {
- "request": {
- "operation": "DescribeInternetGateways",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "attachment.vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "InternetGateway",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "InternetGateways[].InternetGatewayId" }
- ],
- "path": "InternetGateways[]"
- }
- },
- "NetworkAcls": {
- "request": {
- "operation": "DescribeNetworkAcls",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "NetworkAcl",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkAcls[].NetworkAclId" }
- ],
- "path": "NetworkAcls[]"
- }
- },
- "NetworkInterfaces": {
- "request": {
- "operation": "DescribeNetworkInterfaces",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "NetworkInterface",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkInterfaces[].NetworkInterfaceId" }
- ],
- "path": "NetworkInterfaces[]"
- }
- },
- "RequestedVpcPeeringConnections": {
- "request": {
- "operation": "DescribeVpcPeeringConnections",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "requester-vpc-info.vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "VpcPeeringConnection",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "VpcPeeringConnections[].VpcPeeringConnectionId" }
- ],
- "path": "VpcPeeringConnections[]"
- }
- },
- "RouteTables": {
- "request": {
- "operation": "DescribeRouteTables",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "RouteTable",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "RouteTables[].RouteTableId" }
- ],
- "path": "RouteTables[]"
- }
- },
- "SecurityGroups": {
- "request": {
- "operation": "DescribeSecurityGroups",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "SecurityGroup",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "SecurityGroups[].GroupId" }
- ],
- "path": "SecurityGroups[]"
- }
- },
- "Subnets": {
- "request": {
- "operation": "DescribeSubnets",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Subnets[].SubnetId" }
- ],
- "path": "Subnets[]"
- }
- }
- }
- },
- "VpcPeeringConnection": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "VpcPeeringConnectionId"
- }
- ],
- "shape": "VpcPeeringConnection",
- "load": {
- "request": {
- "operation": "DescribeVpcPeeringConnections",
- "params": [
- { "target": "VpcPeeringConnectionIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "VpcPeeringConnections[0]"
- },
- "actions": {
- "Accept": {
- "request": {
- "operation": "AcceptVpcPeeringConnection",
- "params": [
- { "target": "VpcPeeringConnectionId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteVpcPeeringConnection",
- "params": [
- { "target": "VpcPeeringConnectionId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Reject": {
- "request": {
- "operation": "RejectVpcPeeringConnection",
- "params": [
- { "target": "VpcPeeringConnectionId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "waiters": {
- "Exists": {
- "waiterName": "VpcPeeringConnectionExists",
- "params": [
- { "target": "VpcPeeringConnectionIds[]", "source": "identifier", "name": "Id" }
- ],
- "path": "VpcPeeringConnections[0]"
- }
- },
- "has": {
- "AccepterVpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "AccepterVpcInfo.VpcId" }
- ]
- }
- },
- "RequesterVpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "RequesterVpcInfo.VpcId" }
- ]
- }
- }
- }
- },
- "VpcAddress": {
- "identifiers": [
- {
- "name": "AllocationId"
- }
- ],
- "shape": "Address",
- "load": {
- "request": {
- "operation": "DescribeAddresses",
- "params": [
- { "target": "AllocationIds[0]", "source": "identifier", "name": "AllocationId" }
- ]
- },
- "path": "Addresses[0]"
- },
- "actions": {
- "Associate": {
- "request": {
- "operation": "AssociateAddress",
- "params": [
- { "target": "AllocationId", "source": "identifier", "name": "AllocationId" }
- ]
- }
- },
- "Release": {
- "request": {
- "operation": "ReleaseAddress",
- "params": [
- { "target": "AllocationId", "source": "data", "path": "AllocationId" }
- ]
- }
- }
- },
- "has": {
- "Association": {
- "resource": {
- "type": "NetworkInterfaceAssociation",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "AssociationId" }
- ]
- }
- }
- }
- }
- }
-}
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/ec2/2016-11-15/resources-1.json b/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/ec2/2016-11-15/resources-1.json
deleted file mode 100644
index 9872201d..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/ec2/2016-11-15/resources-1.json
+++ /dev/null
@@ -1,2582 +0,0 @@
-{
- "service": {
- "actions": {
- "CreateDhcpOptions": {
- "request": { "operation": "CreateDhcpOptions" },
- "resource": {
- "type": "DhcpOptions",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "DhcpOptions.DhcpOptionsId" }
- ],
- "path": "DhcpOptions"
- }
- },
- "CreateInstances": {
- "request": { "operation": "RunInstances" },
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Instances[].InstanceId" }
- ],
- "path": "Instances[]"
- }
- },
- "CreateInternetGateway": {
- "request": { "operation": "CreateInternetGateway" },
- "resource": {
- "type": "InternetGateway",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "InternetGateway.InternetGatewayId" }
- ],
- "path": "InternetGateway"
- }
- },
- "CreateKeyPair": {
- "request": { "operation": "CreateKeyPair" },
- "resource": {
- "type": "KeyPair",
- "identifiers": [
- { "target": "Name", "source": "response", "path": "KeyName" }
- ],
- "path": "@"
- }
- },
- "CreateNetworkAcl": {
- "request": { "operation": "CreateNetworkAcl" },
- "resource": {
- "type": "NetworkAcl",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkAcl.NetworkAclId" }
- ],
- "path": "NetworkAcl"
- }
- },
- "CreateNetworkInterface": {
- "request": { "operation": "CreateNetworkInterface" },
- "resource": {
- "type": "NetworkInterface",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkInterface.NetworkInterfaceId" }
- ],
- "path": "NetworkInterface"
- }
- },
- "CreatePlacementGroup": {
- "request": { "operation": "CreatePlacementGroup" },
- "resource": {
- "type": "PlacementGroup",
- "identifiers": [
- { "target": "Name", "source": "requestParameter", "path": "GroupName" }
- ]
- }
- },
- "CreateRouteTable": {
- "request": { "operation": "CreateRouteTable" },
- "resource": {
- "type": "RouteTable",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "RouteTable.RouteTableId" }
- ],
- "path": "RouteTable"
- }
- },
- "CreateSecurityGroup": {
- "request": { "operation": "CreateSecurityGroup" },
- "resource": {
- "type": "SecurityGroup",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "GroupId" }
- ]
- }
- },
- "CreateSnapshot": {
- "request": { "operation": "CreateSnapshot" },
- "resource": {
- "type": "Snapshot",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "SnapshotId" }
- ],
- "path": "@"
- }
- },
- "CreateSubnet": {
- "request": { "operation": "CreateSubnet" },
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Subnet.SubnetId" }
- ],
- "path": "Subnet"
- }
- },
- "CreateTags": {
- "request": { "operation": "CreateTags" }
- },
- "CreateVolume": {
- "request": { "operation": "CreateVolume" },
- "resource": {
- "type": "Volume",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "VolumeId" }
- ],
- "path": "@"
- }
- },
- "CreateVpc": {
- "request": { "operation": "CreateVpc" },
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Vpc.VpcId" }
- ],
- "path": "Vpc"
- }
- },
- "CreateVpcPeeringConnection": {
- "request": { "operation": "CreateVpcPeeringConnection" },
- "resource": {
- "type": "VpcPeeringConnection",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "VpcPeeringConnection.VpcPeeringConnectionId" }
- ],
- "path": "VpcPeeringConnection"
- }
- },
- "DisassociateRouteTable": {
- "request": { "operation": "DisassociateRouteTable" }
- },
- "ImportKeyPair": {
- "request": { "operation": "ImportKeyPair" },
- "resource": {
- "type": "KeyPairInfo",
- "identifiers": [
- { "target": "Name", "source": "response", "path": "KeyName" }
- ]
- }
- },
- "RegisterImage": {
- "request": { "operation": "RegisterImage" },
- "resource": {
- "type": "Image",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "ImageId" }
- ]
- }
- }
- },
- "has": {
- "DhcpOptions": {
- "resource": {
- "type": "DhcpOptions",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Image": {
- "resource": {
- "type": "Image",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Instance": {
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "InternetGateway": {
- "resource": {
- "type": "InternetGateway",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "KeyPair": {
- "resource": {
- "type": "KeyPairInfo",
- "identifiers": [
- { "target": "Name", "source": "input" }
- ]
- }
- },
- "NetworkAcl": {
- "resource": {
- "type": "NetworkAcl",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "NetworkInterface": {
- "resource": {
- "type": "NetworkInterface",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "PlacementGroup": {
- "resource": {
- "type": "PlacementGroup",
- "identifiers": [
- { "target": "Name", "source": "input" }
- ]
- }
- },
- "RouteTable": {
- "resource": {
- "type": "RouteTable",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "RouteTableAssociation": {
- "resource": {
- "type": "RouteTableAssociation",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "SecurityGroup": {
- "resource": {
- "type": "SecurityGroup",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Snapshot": {
- "resource": {
- "type": "Snapshot",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Subnet": {
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Volume": {
- "resource": {
- "type": "Volume",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Vpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "VpcPeeringConnection": {
- "resource": {
- "type": "VpcPeeringConnection",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- }
- },
- "hasMany": {
- "ClassicAddresses": {
- "request": {
- "operation": "DescribeAddresses",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "domain" },
- { "target": "Filters[0].Values[0]", "source": "string", "value": "standard" }
- ]
- },
- "resource": {
- "type": "ClassicAddress",
- "identifiers": [
- { "target": "PublicIp", "source": "response", "path": "Addresses[].PublicIp" }
- ],
- "path": "Addresses[]"
- }
- },
- "DhcpOptionsSets": {
- "request": { "operation": "DescribeDhcpOptions" },
- "resource": {
- "type": "DhcpOptions",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "DhcpOptions[].DhcpOptionsId" }
- ],
- "path": "DhcpOptions[]"
- }
- },
- "Images": {
- "request": { "operation": "DescribeImages" },
- "resource": {
- "type": "Image",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Images[].ImageId" }
- ],
- "path": "Images[]"
- }
- },
- "Instances": {
- "request": { "operation": "DescribeInstances" },
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
- ],
- "path": "Reservations[].Instances[]"
- }
- },
- "InternetGateways": {
- "request": { "operation": "DescribeInternetGateways" },
- "resource": {
- "type": "InternetGateway",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "InternetGateways[].InternetGatewayId" }
- ],
- "path": "InternetGateways[]"
- }
- },
- "KeyPairs": {
- "request": { "operation": "DescribeKeyPairs" },
- "resource": {
- "type": "KeyPairInfo",
- "identifiers": [
- { "target": "Name", "source": "response", "path": "KeyPairs[].KeyName" }
- ],
- "path": "KeyPairs[]"
- }
- },
- "NetworkAcls": {
- "request": { "operation": "DescribeNetworkAcls" },
- "resource": {
- "type": "NetworkAcl",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkAcls[].NetworkAclId" }
- ],
- "path": "NetworkAcls[]"
- }
- },
- "NetworkInterfaces": {
- "request": { "operation": "DescribeNetworkInterfaces" },
- "resource": {
- "type": "NetworkInterface",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkInterfaces[].NetworkInterfaceId" }
- ],
- "path": "NetworkInterfaces[]"
- }
- },
- "PlacementGroups": {
- "request": { "operation": "DescribePlacementGroups" },
- "resource": {
- "type": "PlacementGroup",
- "identifiers": [
- { "target": "Name", "source": "response", "path": "PlacementGroups[].GroupName" }
- ],
- "path": "PlacementGroups[]"
- }
- },
- "RouteTables": {
- "request": { "operation": "DescribeRouteTables" },
- "resource": {
- "type": "RouteTable",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "RouteTables[].RouteTableId" }
- ],
- "path": "RouteTables[]"
- }
- },
- "SecurityGroups": {
- "request": { "operation": "DescribeSecurityGroups" },
- "resource": {
- "type": "SecurityGroup",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "SecurityGroups[].GroupId" }
- ],
- "path": "SecurityGroups[]"
- }
- },
- "Snapshots": {
- "request": { "operation": "DescribeSnapshots" },
- "resource": {
- "type": "Snapshot",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Snapshots[].SnapshotId" }
- ],
- "path": "Snapshots[]"
- }
- },
- "Subnets": {
- "request": { "operation": "DescribeSubnets" },
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Subnets[].SubnetId" }
- ],
- "path": "Subnets[]"
- }
- },
- "Volumes": {
- "request": { "operation": "DescribeVolumes" },
- "resource": {
- "type": "Volume",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Volumes[].VolumeId" }
- ],
- "path": "Volumes[]"
- }
- },
- "VpcAddresses": {
- "request": {
- "operation": "DescribeAddresses",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "domain" },
- { "target": "Filters[0].Values[0]", "source": "string", "value": "vpc" }
- ]
- },
- "resource": {
- "type": "VpcAddress",
- "identifiers": [
- { "target": "AllocationId", "source": "response", "path": "Addresses[].AllocationId" }
- ],
- "path": "Addresses[]"
- }
- },
- "VpcPeeringConnections": {
- "request": { "operation": "DescribeVpcPeeringConnections" },
- "resource": {
- "type": "VpcPeeringConnection",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "VpcPeeringConnections[].VpcPeeringConnectionId" }
- ],
- "path": "VpcPeeringConnections[]"
- }
- },
- "Vpcs": {
- "request": { "operation": "DescribeVpcs" },
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Vpcs[].VpcId" }
- ],
- "path": "Vpcs[]"
- }
- }
- }
- },
- "resources": {
- "ClassicAddress": {
- "identifiers": [
- {
- "name": "PublicIp"
- }
- ],
- "shape": "Address",
- "load": {
- "request": {
- "operation": "DescribeAddresses",
- "params": [
- { "target": "PublicIps[]", "source": "identifier", "name": "PublicIp" }
- ]
- },
- "path": "Addresses[0]"
- },
- "actions": {
- "Associate": {
- "request": {
- "operation": "AssociateAddress",
- "params": [
- { "target": "PublicIp", "source": "identifier", "name": "PublicIp" }
- ]
- }
- },
- "Disassociate": {
- "request": {
- "operation": "DisassociateAddress",
- "params": [
- { "target": "PublicIp", "source": "data", "path": "PublicIp" }
- ]
- }
- },
- "Release": {
- "request": {
- "operation": "ReleaseAddress",
- "params": [
- { "target": "PublicIp", "source": "data", "path": "PublicIp" }
- ]
- }
- }
- }
- },
- "DhcpOptions": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "DhcpOptionsId"
- }
- ],
- "shape": "DhcpOptions",
- "load": {
- "request": {
- "operation": "DescribeDhcpOptions",
- "params": [
- { "target": "DhcpOptionsIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "DhcpOptions[0]"
- },
- "actions": {
- "AssociateWithVpc": {
- "request": {
- "operation": "AssociateDhcpOptions",
- "params": [
- { "target": "DhcpOptionsId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteDhcpOptions",
- "params": [
- { "target": "DhcpOptionsId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- }
- },
- "Image": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "ImageId"
- }
- ],
- "shape": "Image",
- "load": {
- "request": {
- "operation": "DescribeImages",
- "params": [
- { "target": "ImageIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "Images[0]"
- },
- "actions": {
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Deregister": {
- "request": {
- "operation": "DeregisterImage",
- "params": [
- { "target": "ImageId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DescribeAttribute": {
- "request": {
- "operation": "DescribeImageAttribute",
- "params": [
- { "target": "ImageId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ModifyAttribute": {
- "request": {
- "operation": "ModifyImageAttribute",
- "params": [
- { "target": "ImageId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ResetAttribute": {
- "request": {
- "operation": "ResetImageAttribute",
- "params": [
- { "target": "ImageId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "waiters": {
- "Exists": {
- "waiterName": "ImageExists",
- "params": [
- { "target": "ImageIds[]", "source": "identifier", "name": "Id" }
- ],
- "path": "Images[0]"
- }
- }
- },
- "Instance": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "InstanceId"
- }
- ],
- "shape": "Instance",
- "load": {
- "request": {
- "operation": "DescribeInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "Reservations[0].Instances[0]"
- },
- "actions": {
- "AttachClassicLinkVpc": {
- "request": {
- "operation": "AttachClassicLinkVpc",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "AttachVolume": {
- "request": {
- "operation": "AttachVolume",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ConsoleOutput": {
- "request": {
- "operation": "GetConsoleOutput",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateImage": {
- "request": {
- "operation": "CreateImage",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Image",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "ImageId" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "DescribeAttribute": {
- "request": {
- "operation": "DescribeInstanceAttribute",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DetachClassicLinkVpc": {
- "request": {
- "operation": "DetachClassicLinkVpc",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DetachVolume": {
- "request": {
- "operation": "DetachVolume",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ModifyAttribute": {
- "request": {
- "operation": "ModifyInstanceAttribute",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Monitor": {
- "request": {
- "operation": "MonitorInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "PasswordData": {
- "request": {
- "operation": "GetPasswordData",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Reboot": {
- "request": {
- "operation": "RebootInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ReportStatus": {
- "request": {
- "operation": "ReportInstanceStatus",
- "params": [
- { "target": "Instances[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ResetAttribute": {
- "request": {
- "operation": "ResetInstanceAttribute",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ResetKernel": {
- "request": {
- "operation": "ResetInstanceAttribute",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" },
- { "target": "Attribute", "source": "string", "value": "kernel" }
- ]
- }
- },
- "ResetRamdisk": {
- "request": {
- "operation": "ResetInstanceAttribute",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" },
- { "target": "Attribute", "source": "string", "value": "ramdisk" }
- ]
- }
- },
- "ResetSourceDestCheck": {
- "request": {
- "operation": "ResetInstanceAttribute",
- "params": [
- { "target": "InstanceId", "source": "identifier", "name": "Id" },
- { "target": "Attribute", "source": "string", "value": "sourceDestCheck" }
- ]
- }
- },
- "Start": {
- "request": {
- "operation": "StartInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Stop": {
- "request": {
- "operation": "StopInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Terminate": {
- "request": {
- "operation": "TerminateInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Unmonitor": {
- "request": {
- "operation": "UnmonitorInstances",
- "params": [
- { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "batchActions": {
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Monitor": {
- "request": {
- "operation": "MonitorInstances",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Reboot": {
- "request": {
- "operation": "RebootInstances",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Start": {
- "request": {
- "operation": "StartInstances",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Stop": {
- "request": {
- "operation": "StopInstances",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Terminate": {
- "request": {
- "operation": "TerminateInstances",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Unmonitor": {
- "request": {
- "operation": "UnmonitorInstances",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "waiters": {
- "Exists": {
- "waiterName": "InstanceExists",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ],
- "path": "Reservations[0].Instances[0]"
- },
- "Running": {
- "waiterName": "InstanceRunning",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ],
- "path": "Reservations[0].Instances[0]"
- },
- "Stopped": {
- "waiterName": "InstanceStopped",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ],
- "path": "Reservations[0].Instances[0]"
- },
- "Terminated": {
- "waiterName": "InstanceTerminated",
- "params": [
- { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
- ],
- "path": "Reservations[0].Instances[0]"
- }
- },
- "has": {
- "ClassicAddress": {
- "resource": {
- "type": "ClassicAddress",
- "identifiers": [
- { "target": "PublicIp", "source": "data", "path": "PublicIpAddress" }
- ]
- }
- },
- "Image": {
- "resource": {
- "type": "Image",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "ImageId" }
- ]
- }
- },
- "KeyPair": {
- "resource": {
- "type": "KeyPairInfo",
- "identifiers": [
- { "target": "Name", "source": "data", "path": "KeyName" }
- ]
- }
- },
- "NetworkInterfaces": {
- "resource": {
- "type": "NetworkInterface",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "NetworkInterfaces[].NetworkInterfaceId" }
- ],
- "path": "NetworkInterfaces[]"
- }
- },
- "PlacementGroup": {
- "resource": {
- "type": "PlacementGroup",
- "identifiers": [
- { "target": "Name", "source": "data", "path": "Placement.GroupName" }
- ]
- }
- },
- "Subnet": {
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "SubnetId" }
- ]
- }
- },
- "Vpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "VpcId" }
- ]
- }
- }
- },
- "hasMany": {
- "Volumes": {
- "request": {
- "operation": "DescribeVolumes",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "attachment.instance-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Volume",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Volumes[].VolumeId" }
- ],
- "path": "Volumes[]"
- }
- },
- "VpcAddresses": {
- "request": {
- "operation": "DescribeAddresses",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "instance-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "VpcAddress",
- "identifiers": [
- { "target": "AllocationId", "source": "response", "path": "Addresses[].AllocationId" }
- ],
- "path": "Addresses[]"
- }
- }
- }
- },
- "InternetGateway": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "InternetGatewayId"
- }
- ],
- "shape": "InternetGateway",
- "load": {
- "request": {
- "operation": "DescribeInternetGateways",
- "params": [
- { "target": "InternetGatewayIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "InternetGateways[0]"
- },
- "actions": {
- "AttachToVpc": {
- "request": {
- "operation": "AttachInternetGateway",
- "params": [
- { "target": "InternetGatewayId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteInternetGateway",
- "params": [
- { "target": "InternetGatewayId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DetachFromVpc": {
- "request": {
- "operation": "DetachInternetGateway",
- "params": [
- { "target": "InternetGatewayId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- }
- },
- "KeyPair": {
- "identifiers": [
- {
- "name": "Name",
- "memberName": "KeyName"
- }
- ],
- "shape": "KeyPair",
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeleteKeyPair",
- "params": [
- { "target": "KeyName", "source": "identifier", "name": "Name" }
- ]
- }
- }
- }
- },
- "KeyPairInfo": {
- "identifiers": [
- {
- "name": "Name",
- "memberName": "KeyName"
- }
- ],
- "shape": "KeyPairInfo",
- "load": {
- "request": {
- "operation": "DescribeKeyPairs",
- "params": [
- { "target": "KeyNames[0]", "source": "identifier", "name": "Name" }
- ]
- },
- "path": "KeyPairs[0]"
- },
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeleteKeyPair",
- "params": [
- { "target": "KeyName", "source": "identifier", "name": "Name" }
- ]
- }
- }
- }
- },
- "NetworkAcl": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "NetworkAclId"
- }
- ],
- "shape": "NetworkAcl",
- "load": {
- "request": {
- "operation": "DescribeNetworkAcls",
- "params": [
- { "target": "NetworkAclIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "NetworkAcls[0]"
- },
- "actions": {
- "CreateEntry": {
- "request": {
- "operation": "CreateNetworkAclEntry",
- "params": [
- { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteNetworkAcl",
- "params": [
- { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DeleteEntry": {
- "request": {
- "operation": "DeleteNetworkAclEntry",
- "params": [
- { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ReplaceAssociation": {
- "request": {
- "operation": "ReplaceNetworkAclAssociation",
- "params": [
- { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ReplaceEntry": {
- "request": {
- "operation": "ReplaceNetworkAclEntry",
- "params": [
- { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "has": {
- "Vpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "VpcId" }
- ]
- }
- }
- }
- },
- "NetworkInterface": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "NetworkInterfaceId"
- }
- ],
- "shape": "NetworkInterface",
- "load": {
- "request": {
- "operation": "DescribeNetworkInterfaces",
- "params": [
- { "target": "NetworkInterfaceIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "NetworkInterfaces[0]"
- },
- "actions": {
- "AssignPrivateIpAddresses": {
- "request": {
- "operation": "AssignPrivateIpAddresses",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Attach": {
- "request": {
- "operation": "AttachNetworkInterface",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteNetworkInterface",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DescribeAttribute": {
- "request": {
- "operation": "DescribeNetworkInterfaceAttribute",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Detach": {
- "request": {
- "operation": "DetachNetworkInterface",
- "params": [
- { "target": "AttachmentId", "source": "data", "path": "Attachment.AttachmentId" }
- ]
- }
- },
- "ModifyAttribute": {
- "request": {
- "operation": "ModifyNetworkInterfaceAttribute",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ResetAttribute": {
- "request": {
- "operation": "ResetNetworkInterfaceAttribute",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "UnassignPrivateIpAddresses": {
- "request": {
- "operation": "UnassignPrivateIpAddresses",
- "params": [
- { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "has": {
- "Association": {
- "resource": {
- "type": "NetworkInterfaceAssociation",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "Association.AssociationId" }
- ],
- "path": "Association"
- }
- },
- "Subnet": {
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "SubnetId" }
- ]
- }
- },
- "Vpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "VpcId" }
- ]
- }
- }
- }
- },
- "NetworkInterfaceAssociation": {
- "identifiers": [
- {
- "name": "Id"
- }
- ],
- "shape": "InstanceNetworkInterfaceAssociation",
- "load": {
- "request": {
- "operation": "DescribeNetworkInterfaces",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "association.association-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "NetworkInterfaces[0].Association"
- },
- "actions": {
- "Delete": {
- "request": {
- "operation": "DisassociateAddress",
- "params": [
- { "target": "AssociationId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "has": {
- "Address": {
- "resource": {
- "type": "VpcAddress",
- "identifiers": [
- { "target": "AllocationId", "source": "data", "path": "AllocationId" }
- ]
- }
- }
- }
- },
- "PlacementGroup": {
- "identifiers": [
- {
- "name": "Name",
- "memberName": "GroupName"
- }
- ],
- "shape": "PlacementGroup",
- "load": {
- "request": {
- "operation": "DescribePlacementGroups",
- "params": [
- { "target": "GroupNames[0]", "source": "identifier", "name": "Name" }
- ]
- },
- "path": "PlacementGroups[0]"
- },
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeletePlacementGroup",
- "params": [
- { "target": "GroupName", "source": "identifier", "name": "Name" }
- ]
- }
- }
- },
- "hasMany": {
- "Instances": {
- "request": {
- "operation": "DescribeInstances",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "placement-group-name" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Name" }
- ]
- },
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
- ],
- "path": "Reservations[].Instances[]"
- }
- }
- }
- },
- "Route": {
- "identifiers": [
- { "name": "RouteTableId" },
- {
- "name": "DestinationCidrBlock",
- "memberName": "DestinationCidrBlock"
- }
- ],
- "shape": "Route",
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeleteRoute",
- "params": [
- { "target": "RouteTableId", "source": "identifier", "name": "RouteTableId" },
- { "target": "DestinationCidrBlock", "source": "identifier", "name": "DestinationCidrBlock" }
- ]
- }
- },
- "Replace": {
- "request": {
- "operation": "ReplaceRoute",
- "params": [
- { "target": "RouteTableId", "source": "identifier", "name": "RouteTableId" },
- { "target": "DestinationCidrBlock", "source": "identifier", "name": "DestinationCidrBlock" }
- ]
- }
- }
- },
- "has": {
- "RouteTable": {
- "resource": {
- "type": "RouteTable",
- "identifiers": [
- { "target": "Id", "source": "identifier", "name": "RouteTableId" }
- ]
- }
- }
- }
- },
- "RouteTable": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "RouteTableId"
- }
- ],
- "shape": "RouteTable",
- "load": {
- "request": {
- "operation": "DescribeRouteTables",
- "params": [
- { "target": "RouteTableIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "RouteTables[0]"
- },
- "actions": {
- "AssociateWithSubnet": {
- "request": {
- "operation": "AssociateRouteTable",
- "params": [
- { "target": "RouteTableId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "RouteTableAssociation",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "AssociationId" }
- ]
- }
- },
- "CreateRoute": {
- "request": {
- "operation": "CreateRoute",
- "params": [
- { "target": "RouteTableId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Route",
- "identifiers": [
- { "target": "RouteTableId", "source": "identifier", "name": "Id" },
- { "target": "DestinationCidrBlock", "source": "requestParameter", "path": "DestinationCidrBlock" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteRouteTable",
- "params": [
- { "target": "RouteTableId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "has": {
- "Associations": {
- "resource": {
- "type": "RouteTableAssociation",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "Associations[].RouteTableAssociationId" }
- ],
- "path": "Associations[]"
- }
- },
- "Routes": {
- "resource": {
- "type": "Route",
- "identifiers": [
- { "target": "RouteTableId", "source": "identifier", "name": "Id" },
- { "target": "DestinationCidrBlock", "source": "data", "path": "Routes[].DestinationCidrBlock" }
- ],
- "path": "Routes[]"
- }
- },
- "Vpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "VpcId" }
- ]
- }
- }
- }
- },
- "RouteTableAssociation": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "RouteTableAssociationId"
- }
- ],
- "shape": "RouteTableAssociation",
- "actions": {
- "Delete": {
- "request": {
- "operation": "DisassociateRouteTable",
- "params": [
- { "target": "AssociationId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ReplaceSubnet": {
- "request": {
- "operation": "ReplaceRouteTableAssociation",
- "params": [
- { "target": "AssociationId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "RouteTableAssociation",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NewAssociationId" }
- ]
- }
- }
- },
- "has": {
- "RouteTable": {
- "resource": {
- "type": "RouteTable",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "RouteTableId" }
- ]
- }
- },
- "Subnet": {
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "SubnetId" }
- ]
- }
- }
- }
- },
- "SecurityGroup": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "GroupId"
- }
- ],
- "shape": "SecurityGroup",
- "load": {
- "request": {
- "operation": "DescribeSecurityGroups",
- "params": [
- { "target": "GroupIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "SecurityGroups[0]"
- },
- "actions": {
- "AuthorizeEgress": {
- "request": {
- "operation": "AuthorizeSecurityGroupEgress",
- "params": [
- { "target": "GroupId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "AuthorizeIngress": {
- "request": {
- "operation": "AuthorizeSecurityGroupIngress",
- "params": [
- { "target": "GroupId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteSecurityGroup",
- "params": [
- { "target": "GroupId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "RevokeEgress": {
- "request": {
- "operation": "RevokeSecurityGroupEgress",
- "params": [
- { "target": "GroupId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "RevokeIngress": {
- "request": {
- "operation": "RevokeSecurityGroupIngress",
- "params": [
- { "target": "GroupId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- }
- },
- "Snapshot": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "SnapshotId"
- }
- ],
- "shape": "Snapshot",
- "load": {
- "request": {
- "operation": "DescribeSnapshots",
- "params": [
- { "target": "SnapshotIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "Snapshots[0]"
- },
- "actions": {
- "Copy": {
- "request": {
- "operation": "CopySnapshot",
- "params": [
- { "target": "SourceSnapshotId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteSnapshot",
- "params": [
- { "target": "SnapshotId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DescribeAttribute": {
- "request": {
- "operation": "DescribeSnapshotAttribute",
- "params": [
- { "target": "SnapshotId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ModifyAttribute": {
- "request": {
- "operation": "ModifySnapshotAttribute",
- "params": [
- { "target": "SnapshotId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ResetAttribute": {
- "request": {
- "operation": "ResetSnapshotAttribute",
- "params": [
- { "target": "SnapshotId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "waiters": {
- "Completed": {
- "waiterName": "SnapshotCompleted",
- "params": [
- { "target": "SnapshotIds[]", "source": "identifier", "name": "Id" }
- ],
- "path": "Snapshots[]"
- }
- },
- "has": {
- "Volume": {
- "resource": {
- "type": "Volume",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "VolumeId" }
- ]
- }
- }
- }
- },
- "Subnet": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "SubnetId"
- }
- ],
- "shape": "Subnet",
- "load": {
- "request": {
- "operation": "DescribeSubnets",
- "params": [
- { "target": "SubnetIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "Subnets[0]"
- },
- "actions": {
- "CreateInstances": {
- "request": {
- "operation": "RunInstances",
- "params": [
- { "target": "SubnetId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Instances[].InstanceId" }
- ],
- "path": "Instances[]"
- }
- },
- "CreateNetworkInterface": {
- "request": {
- "operation": "CreateNetworkInterface",
- "params": [
- { "target": "SubnetId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "NetworkInterface",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkInterface.NetworkInterfaceId" }
- ],
- "path": "NetworkInterface"
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteSubnet",
- "params": [
- { "target": "SubnetId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "has": {
- "Vpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "VpcId" }
- ]
- }
- }
- },
- "hasMany": {
- "Instances": {
- "request": {
- "operation": "DescribeInstances",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "subnet-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
- ],
- "path": "Reservations[].Instances[]"
- }
- },
- "NetworkInterfaces": {
- "request": {
- "operation": "DescribeNetworkInterfaces",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "subnet-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "NetworkInterface",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkInterfaces[].NetworkInterfaceId" }
- ],
- "path": "NetworkInterfaces[]"
- }
- }
- }
- },
- "Tag": {
- "identifiers": [
- {
- "name": "ResourceId",
- "memberName": "ResourceId"
- },
- {
- "name": "Key",
- "memberName": "Key"
- },
- {
- "name": "Value",
- "memberName": "Value"
- }
- ],
- "shape": "TagDescription",
- "load": {
- "request": {
- "operation": "DescribeTags",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "key" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Key" },
- { "target": "Filters[1].Name", "source": "string", "value": "value" },
- { "target": "Filters[1].Values[0]", "source": "identifier", "name": "Value" }
- ]
- },
- "path": "Tags[0]"
- },
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeleteTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "ResourceId" },
- { "target": "Tags[0].Key", "source": "identifier", "name": "Key" },
- { "target": "Tags[0].Value", "source": "identifier", "name": "Value" }
- ]
- }
- }
- },
- "batchActions": {
- "Delete": {
- "request": {
- "operation": "DeleteTags",
- "params": [
- { "target": "Resources[]", "source": "identifier", "name": "ResourceId" },
- { "target": "Tags[*].Key", "source": "identifier", "name": "Key" },
- { "target": "Tags[*].Value", "source": "identifier", "name": "Value" }
- ]
- }
- }
- }
- },
- "Volume": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "VolumeId"
- }
- ],
- "shape": "Volume",
- "load": {
- "request": {
- "operation": "DescribeVolumes",
- "params": [
- { "target": "VolumeIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "Volumes[0]"
- },
- "actions": {
- "AttachToInstance": {
- "request": {
- "operation": "AttachVolume",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateSnapshot": {
- "request": {
- "operation": "CreateSnapshot",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Snapshot",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "SnapshotId" }
- ],
- "path": "@"
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteVolume",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DescribeAttribute": {
- "request": {
- "operation": "DescribeVolumeAttribute",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DescribeStatus": {
- "request": {
- "operation": "DescribeVolumeStatus",
- "params": [
- { "target": "VolumeIds[0]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DetachFromInstance": {
- "request": {
- "operation": "DetachVolume",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "EnableIo": {
- "request": {
- "operation": "EnableVolumeIO",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ModifyAttribute": {
- "request": {
- "operation": "ModifyVolumeAttribute",
- "params": [
- { "target": "VolumeId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "hasMany": {
- "Snapshots": {
- "request": {
- "operation": "DescribeSnapshots",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "volume-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Snapshot",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Snapshots[].SnapshotId" }
- ],
- "path": "Snapshots[]"
- }
- }
- }
- },
- "Vpc": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "VpcId"
- }
- ],
- "shape": "Vpc",
- "load": {
- "request": {
- "operation": "DescribeVpcs",
- "params": [
- { "target": "VpcIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "Vpcs[0]"
- },
- "actions": {
- "AssociateDhcpOptions": {
- "request": {
- "operation": "AssociateDhcpOptions",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "AttachClassicLinkInstance": {
- "request": {
- "operation": "AttachClassicLinkVpc",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "AttachInternetGateway": {
- "request": {
- "operation": "AttachInternetGateway",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "CreateNetworkAcl": {
- "request": {
- "operation": "CreateNetworkAcl",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "NetworkAcl",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkAcl.NetworkAclId" }
- ],
- "path": "NetworkAcl"
- }
- },
- "CreateRouteTable": {
- "request": {
- "operation": "CreateRouteTable",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "RouteTable",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "RouteTable.RouteTableId" }
- ],
- "path": "RouteTable"
- }
- },
- "CreateSecurityGroup": {
- "request": {
- "operation": "CreateSecurityGroup",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "SecurityGroup",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "GroupId" }
- ]
- }
- },
- "CreateSubnet": {
- "request": {
- "operation": "CreateSubnet",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Subnet.SubnetId" }
- ],
- "path": "Subnet"
- }
- },
- "CreateTags": {
- "request": {
- "operation": "CreateTags",
- "params": [
- { "target": "Resources[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Tag",
- "identifiers": [
- { "target": "ResourceId", "source": "identifier", "name": "Id" },
- { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
- { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteVpc",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DescribeAttribute": {
- "request": {
- "operation": "DescribeVpcAttribute",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DetachClassicLinkInstance": {
- "request": {
- "operation": "DetachClassicLinkVpc",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DetachInternetGateway": {
- "request": {
- "operation": "DetachInternetGateway",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "DisableClassicLink": {
- "request": {
- "operation": "DisableVpcClassicLink",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "EnableClassicLink": {
- "request": {
- "operation": "EnableVpcClassicLink",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "ModifyAttribute": {
- "request": {
- "operation": "ModifyVpcAttribute",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "RequestVpcPeeringConnection": {
- "request": {
- "operation": "CreateVpcPeeringConnection",
- "params": [
- { "target": "VpcId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "VpcPeeringConnection",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "VpcPeeringConnection.VpcPeeringConnectionId" }
- ],
- "path": "VpcPeeringConnection"
- }
- }
- },
- "waiters": {
- "Available": {
- "waiterName": "VpcAvailable",
- "params": [
- { "target": "VpcIds[]", "source": "identifier", "name": "Id" }
- ]
- },
- "Exists": {
- "waiterName": "VpcExists",
- "params": [
- { "target": "VpcIds[]", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "has": {
- "DhcpOptions": {
- "resource": {
- "type": "DhcpOptions",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "DhcpOptionsId" }
- ]
- }
- }
- },
- "hasMany": {
- "AcceptedVpcPeeringConnections": {
- "request": {
- "operation": "DescribeVpcPeeringConnections",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "accepter-vpc-info.vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "VpcPeeringConnection",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "VpcPeeringConnections[].VpcPeeringConnectionId" }
- ],
- "path": "VpcPeeringConnections[]"
- }
- },
- "Instances": {
- "request": {
- "operation": "DescribeInstances",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Instance",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
- ],
- "path": "Reservations[].Instances[]"
- }
- },
- "InternetGateways": {
- "request": {
- "operation": "DescribeInternetGateways",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "attachment.vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "InternetGateway",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "InternetGateways[].InternetGatewayId" }
- ],
- "path": "InternetGateways[]"
- }
- },
- "NetworkAcls": {
- "request": {
- "operation": "DescribeNetworkAcls",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "NetworkAcl",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkAcls[].NetworkAclId" }
- ],
- "path": "NetworkAcls[]"
- }
- },
- "NetworkInterfaces": {
- "request": {
- "operation": "DescribeNetworkInterfaces",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "NetworkInterface",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "NetworkInterfaces[].NetworkInterfaceId" }
- ],
- "path": "NetworkInterfaces[]"
- }
- },
- "RequestedVpcPeeringConnections": {
- "request": {
- "operation": "DescribeVpcPeeringConnections",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "requester-vpc-info.vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "VpcPeeringConnection",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "VpcPeeringConnections[].VpcPeeringConnectionId" }
- ],
- "path": "VpcPeeringConnections[]"
- }
- },
- "RouteTables": {
- "request": {
- "operation": "DescribeRouteTables",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "RouteTable",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "RouteTables[].RouteTableId" }
- ],
- "path": "RouteTables[]"
- }
- },
- "SecurityGroups": {
- "request": {
- "operation": "DescribeSecurityGroups",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "SecurityGroup",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "SecurityGroups[].GroupId" }
- ],
- "path": "SecurityGroups[]"
- }
- },
- "Subnets": {
- "request": {
- "operation": "DescribeSubnets",
- "params": [
- { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
- { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Subnet",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Subnets[].SubnetId" }
- ],
- "path": "Subnets[]"
- }
- }
- }
- },
- "VpcPeeringConnection": {
- "identifiers": [
- {
- "name": "Id",
- "memberName": "VpcPeeringConnectionId"
- }
- ],
- "shape": "VpcPeeringConnection",
- "load": {
- "request": {
- "operation": "DescribeVpcPeeringConnections",
- "params": [
- { "target": "VpcPeeringConnectionIds[0]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "VpcPeeringConnections[0]"
- },
- "actions": {
- "Accept": {
- "request": {
- "operation": "AcceptVpcPeeringConnection",
- "params": [
- { "target": "VpcPeeringConnectionId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteVpcPeeringConnection",
- "params": [
- { "target": "VpcPeeringConnectionId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Reject": {
- "request": {
- "operation": "RejectVpcPeeringConnection",
- "params": [
- { "target": "VpcPeeringConnectionId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "waiters": {
- "Exists": {
- "waiterName": "VpcPeeringConnectionExists",
- "params": [
- { "target": "VpcPeeringConnectionIds[]", "source": "identifier", "name": "Id" }
- ],
- "path": "VpcPeeringConnections[0]"
- }
- },
- "has": {
- "AccepterVpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "AccepterVpcInfo.VpcId" }
- ]
- }
- },
- "RequesterVpc": {
- "resource": {
- "type": "Vpc",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "RequesterVpcInfo.VpcId" }
- ]
- }
- }
- }
- },
- "VpcAddress": {
- "identifiers": [
- {
- "name": "AllocationId"
- }
- ],
- "shape": "Address",
- "load": {
- "request": {
- "operation": "DescribeAddresses",
- "params": [
- { "target": "AllocationIds[0]", "source": "identifier", "name": "AllocationId" }
- ]
- },
- "path": "Addresses[0]"
- },
- "actions": {
- "Associate": {
- "request": {
- "operation": "AssociateAddress",
- "params": [
- { "target": "AllocationId", "source": "identifier", "name": "AllocationId" }
- ]
- }
- },
- "Release": {
- "request": {
- "operation": "ReleaseAddress",
- "params": [
- { "target": "AllocationId", "source": "data", "path": "AllocationId" }
- ]
- }
- }
- },
- "has": {
- "Association": {
- "resource": {
- "type": "NetworkInterfaceAssociation",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "AssociationId" }
- ]
- }
- }
- }
- }
- }
-}
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/glacier/2012-06-01/resources-1.json b/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/glacier/2012-06-01/resources-1.json
deleted file mode 100644
index d1ed48f4..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/glacier/2012-06-01/resources-1.json
+++ /dev/null
@@ -1,581 +0,0 @@
-{
- "service": {
- "actions": {
- "CreateVault": {
- "request": {
- "operation": "CreateVault",
- "params": [
- { "target": "accountId", "source": "string", "value": "-" }
- ]
- },
- "resource": {
- "type": "Vault",
- "identifiers": [
- { "target": "AccountId", "source": "requestParameter", "path": "accountId" },
- { "target": "Name", "source": "requestParameter", "path": "vaultName" }
- ]
- }
- }
- },
- "has": {
- "Account": {
- "resource": {
- "type": "Account",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- }
- },
- "hasMany": {
- "Vaults": {
- "request": {
- "operation": "ListVaults",
- "params": [
- { "target": "accountId", "source": "string", "value": "-" }
- ]
- },
- "resource": {
- "type": "Vault",
- "identifiers": [
- { "target": "AccountId", "source": "requestParameter", "path": "accountId" },
- { "target": "Name", "source": "response", "path": "VaultList[].VaultName" }
- ],
- "path": "VaultList[]"
- }
- }
- }
- },
- "resources": {
- "Account": {
- "identifiers": [
- { "name": "Id" }
- ],
- "actions": {
- "CreateVault": {
- "request": {
- "operation": "CreateVault",
- "params": [
- { "target": "accountId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Vault",
- "identifiers": [
- { "target": "AccountId", "source": "identifier", "name": "Id" },
- { "target": "Name", "source": "requestParameter", "path": "vaultName" }
- ]
- }
- }
- },
- "has": {
- "Vault": {
- "resource": {
- "type": "Vault",
- "identifiers": [
- { "target": "AccountId", "source": "identifier", "name": "Id" },
- { "target": "Name", "source": "input" }
- ]
- }
- }
- },
- "hasMany": {
- "Vaults": {
- "request": {
- "operation": "ListVaults",
- "params": [
- { "target": "accountId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Vault",
- "identifiers": [
- { "target": "AccountId", "source": "identifier", "name": "Id" },
- { "target": "Name", "source": "response", "path": "VaultList[].VaultName" }
- ],
- "path": "VaultList[]"
- }
- }
- }
- },
- "Archive": {
- "identifiers": [
- { "name": "AccountId" },
- { "name": "VaultName" },
- { "name": "Id" }
- ],
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeleteArchive",
- "params": [
- { "target": "accountId", "source": "identifier", "name": "AccountId" },
- { "target": "vaultName", "source": "identifier", "name": "VaultName" },
- { "target": "archiveId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "InitiateArchiveRetrieval": {
- "request": {
- "operation": "InitiateJob",
- "params": [
- { "target": "vaultName", "source": "identifier", "name": "VaultName" },
- { "target": "accountId", "source": "identifier", "name": "AccountId" },
- { "target": "jobParameters.Type", "source": "string", "value": "archive-retrieval" },
- { "target": "jobParameters.ArchiveId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Job",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "jobId" },
- { "target": "AccountId", "source": "identifier", "name": "AccountId" },
- { "target": "VaultName", "source": "identifier", "name": "VaultName" }
- ]
- }
- }
- },
- "has": {
- "Vault": {
- "resource": {
- "type": "Vault",
- "identifiers": [
- { "target": "AccountId", "source": "identifier", "name": "AccountId" },
- { "target": "Name", "source": "identifier", "name": "VaultName" }
- ]
- }
- }
- }
- },
- "Job": {
- "identifiers": [
- { "name": "AccountId" },
- { "name": "VaultName" },
- {
- "name": "Id",
- "memberName": "JobId"
- }
- ],
- "shape": "GlacierJobDescription",
- "load": {
- "request": {
- "operation": "DescribeJob",
- "params": [
- { "target": "accountId", "source": "identifier", "name": "AccountId" },
- { "target": "vaultName", "source": "identifier", "name": "VaultName" },
- { "target": "jobId", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "@"
- },
- "actions": {
- "GetOutput": {
- "request": {
- "operation": "GetJobOutput",
- "params": [
- { "target": "accountId", "source": "identifier", "name": "AccountId" },
- { "target": "vaultName", "source": "identifier", "name": "VaultName" },
- { "target": "jobId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "has": {
- "Vault": {
- "resource": {
- "type": "Vault",
- "identifiers": [
- { "target": "AccountId", "source": "identifier", "name": "AccountId" },
- { "target": "Name", "source": "identifier", "name": "VaultName" }
- ]
- }
- }
- }
- },
- "MultipartUpload": {
- "identifiers": [
- { "name": "AccountId" },
- { "name": "VaultName" },
- {
- "name": "Id",
- "memberName": "MultipartUploadId"
- }
- ],
- "shape": "UploadListElement",
- "actions": {
- "Abort": {
- "request": {
- "operation": "AbortMultipartUpload",
- "params": [
- { "target": "accountId", "source": "identifier", "name": "AccountId" },
- { "target": "vaultName", "source": "identifier", "name": "VaultName" },
- { "target": "uploadId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Complete": {
- "request": {
- "operation": "CompleteMultipartUpload",
- "params": [
- { "target": "accountId", "source": "identifier", "name": "AccountId" },
- { "target": "vaultName", "source": "identifier", "name": "VaultName" },
- { "target": "uploadId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Parts": {
- "request": {
- "operation": "ListParts",
- "params": [
- { "target": "accountId", "source": "identifier", "name": "AccountId" },
- { "target": "vaultName", "source": "identifier", "name": "VaultName" },
- { "target": "uploadId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "UploadPart": {
- "request": {
- "operation": "UploadMultipartPart",
- "params": [
- { "target": "accountId", "source": "identifier", "name": "AccountId" },
- { "target": "vaultName", "source": "identifier", "name": "VaultName" },
- { "target": "uploadId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "has": {
- "Vault": {
- "resource": {
- "type": "Vault",
- "identifiers": [
- { "target": "AccountId", "source": "identifier", "name": "AccountId" },
- { "target": "Name", "source": "identifier", "name": "VaultName" }
- ]
- }
- }
- }
- },
- "Notification": {
- "identifiers": [
- { "name": "AccountId" },
- { "name": "VaultName" }
- ],
- "shape": "VaultNotificationConfig",
- "load": {
- "request": {
- "operation": "GetVaultNotifications",
- "params": [
- { "target": "accountId", "source": "identifier", "name": "AccountId" },
- { "target": "vaultName", "source": "identifier", "name": "VaultName" }
- ]
- },
- "path": "vaultNotificationConfig"
- },
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeleteVaultNotifications",
- "params": [
- { "target": "accountId", "source": "identifier", "name": "AccountId" },
- { "target": "vaultName", "source": "identifier", "name": "VaultName" }
- ]
- }
- },
- "Set": {
- "request": {
- "operation": "SetVaultNotifications",
- "params": [
- { "target": "accountId", "source": "identifier", "name": "AccountId" },
- { "target": "vaultName", "source": "identifier", "name": "VaultName" }
- ]
- }
- }
- },
- "has": {
- "Vault": {
- "resource": {
- "type": "Vault",
- "identifiers": [
- { "target": "AccountId", "source": "identifier", "name": "AccountId" },
- { "target": "Name", "source": "identifier", "name": "VaultName" }
- ]
- }
- }
- }
- },
- "Vault": {
- "identifiers": [
- { "name": "AccountId" },
- {
- "name": "Name",
- "memberName": "VaultName"
- }
- ],
- "shape": "DescribeVaultOutput",
- "load": {
- "request": {
- "operation": "DescribeVault",
- "params": [
- { "target": "vaultName", "source": "identifier", "name": "Name" },
- { "target": "accountId", "source": "identifier", "name": "AccountId" }
- ]
- },
- "path": "@"
- },
- "actions": {
- "Create": {
- "request": {
- "operation": "CreateVault",
- "params": [
- { "target": "vaultName", "source": "identifier", "name": "Name" },
- { "target": "accountId", "source": "identifier", "name": "AccountId" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteVault",
- "params": [
- { "target": "vaultName", "source": "identifier", "name": "Name" },
- { "target": "accountId", "source": "identifier", "name": "AccountId" }
- ]
- }
- },
- "InitiateInventoryRetrieval": {
- "request": {
- "operation": "InitiateJob",
- "params": [
- { "target": "vaultName", "source": "identifier", "name": "Name" },
- { "target": "accountId", "source": "identifier", "name": "AccountId" },
- { "target": "jobParameters.Type", "source": "string", "value": "inventory-retrieval" }
- ]
- },
- "resource": {
- "type": "Job",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "jobId" },
- { "target": "AccountId", "source": "identifier", "name": "AccountId" },
- { "target": "VaultName", "source": "identifier", "name": "Name" }
- ]
- }
- },
- "InitiateMultipartUpload": {
- "request": {
- "operation": "InitiateMultipartUpload",
- "params": [
- { "target": "vaultName", "source": "identifier", "name": "Name" },
- { "target": "accountId", "source": "identifier", "name": "AccountId" }
- ]
- },
- "resource": {
- "type": "MultipartUpload",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "uploadId" },
- { "target": "AccountId", "source": "identifier", "name": "AccountId" },
- { "target": "VaultName", "source": "identifier", "name": "Name" }
- ]
- }
- },
- "UploadArchive": {
- "request": {
- "operation": "UploadArchive",
- "params": [
- { "target": "vaultName", "source": "identifier", "name": "Name" },
- { "target": "accountId", "source": "identifier", "name": "AccountId" }
- ]
- },
- "resource": {
- "type": "Archive",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "archiveId" },
- { "target": "AccountId", "source": "identifier", "name": "AccountId" },
- { "target": "VaultName", "source": "identifier", "name": "Name" }
- ]
- }
- }
- },
- "has": {
- "Account": {
- "resource": {
- "type": "Account",
- "identifiers": [
- { "target": "Id", "source": "identifier", "name": "AccountId" }
- ]
- }
- },
- "Archive": {
- "resource": {
- "type": "Archive",
- "identifiers": [
- { "target": "AccountId", "source": "identifier", "name": "AccountId" },
- { "target": "VaultName", "source": "identifier", "name": "Name" },
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Job": {
- "resource": {
- "type": "Job",
- "identifiers": [
- { "target": "AccountId", "source": "identifier", "name": "AccountId" },
- { "target": "VaultName", "source": "identifier", "name": "Name" },
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "MultipartUpload": {
- "resource": {
- "type": "MultipartUpload",
- "identifiers": [
- { "target": "AccountId", "source": "identifier", "name": "AccountId" },
- { "target": "VaultName", "source": "identifier", "name": "Name" },
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Notification": {
- "resource": {
- "type": "Notification",
- "identifiers": [
- { "target": "AccountId", "source": "identifier", "name": "AccountId" },
- { "target": "VaultName", "source": "identifier", "name": "Name" }
- ]
- }
- }
- },
- "hasMany": {
- "CompletedJobs": {
- "request": {
- "operation": "ListJobs",
- "params": [
- { "target": "accountId", "source": "identifier", "name": "AccountId" },
- { "target": "vaultName", "source": "identifier", "name": "Name" },
- { "target": "completed", "source": "string", "value": "true" }
- ]
- },
- "resource": {
- "type": "Job",
- "identifiers": [
- { "target": "AccountId", "source": "identifier", "name": "AccountId" },
- { "target": "VaultName", "source": "identifier", "name": "Name" },
- { "target": "Id", "source": "response", "path": "JobList[].JobId" }
- ],
- "path": "JobList[]"
- }
- },
- "FailedJobs": {
- "request": {
- "operation": "ListJobs",
- "params": [
- { "target": "accountId", "source": "identifier", "name": "AccountId" },
- { "target": "vaultName", "source": "identifier", "name": "Name" },
- { "target": "statuscode", "source": "string", "value": "Failed" }
- ]
- },
- "resource": {
- "type": "Job",
- "identifiers": [
- { "target": "AccountId", "source": "identifier", "name": "AccountId" },
- { "target": "VaultName", "source": "identifier", "name": "Name" },
- { "target": "Id", "source": "response", "path": "JobList[].JobId" }
- ],
- "path": "JobList[]"
- }
- },
- "Jobs": {
- "request": {
- "operation": "ListJobs",
- "params": [
- { "target": "accountId", "source": "identifier", "name": "AccountId" },
- { "target": "vaultName", "source": "identifier", "name": "Name" }
- ]
- },
- "resource": {
- "type": "Job",
- "identifiers": [
- { "target": "AccountId", "source": "identifier", "name": "AccountId" },
- { "target": "VaultName", "source": "identifier", "name": "Name" },
- { "target": "Id", "source": "response", "path": "JobList[].JobId" }
- ],
- "path": "JobList[]"
- }
- },
- "JobsInProgress": {
- "request": {
- "operation": "ListJobs",
- "params": [
- { "target": "accountId", "source": "identifier", "name": "AccountId" },
- { "target": "vaultName", "source": "identifier", "name": "Name" },
- { "target": "statuscode", "source": "string", "value": "InProgress" }
- ]
- },
- "resource": {
- "type": "Job",
- "identifiers": [
- { "target": "AccountId", "source": "identifier", "name": "AccountId" },
- { "target": "VaultName", "source": "identifier", "name": "Name" },
- { "target": "Id", "source": "response", "path": "JobList[].JobId" }
- ],
- "path": "JobList[]"
- }
- },
- "MultipartUplaods": {
- "request": {
- "operation": "ListMultipartUploads",
- "params": [
- { "target": "vaultName", "source": "identifier", "name": "Name" },
- { "target": "accountId", "source": "identifier", "name": "AccountId" }
- ]
- },
- "resource": {
- "type": "MultipartUpload",
- "identifiers": [
- { "target": "AccountId", "source": "identifier", "name": "AccountId" },
- { "target": "VaultName", "source": "identifier", "name": "Name" },
- { "target": "Id", "source": "response", "path": "UploadsList[].MultipartUploadId" }
- ],
- "path": "UploadsList[]"
- }
- },
- "MultipartUploads": {
- "request": {
- "operation": "ListMultipartUploads",
- "params": [
- { "target": "vaultName", "source": "identifier", "name": "Name" },
- { "target": "accountId", "source": "identifier", "name": "AccountId" }
- ]
- },
- "resource": {
- "type": "MultipartUpload",
- "identifiers": [
- { "target": "AccountId", "source": "identifier", "name": "AccountId" },
- { "target": "VaultName", "source": "identifier", "name": "Name" },
- { "target": "Id", "source": "response", "path": "UploadsList[].MultipartUploadId" }
- ],
- "path": "UploadsList[]"
- }
- },
- "SucceededJobs": {
- "request": {
- "operation": "ListJobs",
- "params": [
- { "target": "accountId", "source": "identifier", "name": "AccountId" },
- { "target": "vaultName", "source": "identifier", "name": "Name" },
- { "target": "statuscode", "source": "string", "value": "Succeeded" }
- ]
- },
- "resource": {
- "type": "Job",
- "identifiers": [
- { "target": "AccountId", "source": "identifier", "name": "AccountId" },
- { "target": "VaultName", "source": "identifier", "name": "Name" },
- { "target": "Id", "source": "response", "path": "JobList[].JobId" }
- ],
- "path": "JobList[]"
- }
- }
- }
- }
- }
-}
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/iam/2010-05-08/resources-1.json b/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/iam/2010-05-08/resources-1.json
deleted file mode 100644
index 59d18556..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/iam/2010-05-08/resources-1.json
+++ /dev/null
@@ -1,1721 +0,0 @@
-{
- "service": {
- "actions": {
- "ChangePassword": {
- "request": { "operation": "ChangePassword" }
- },
- "CreateAccountAlias": {
- "request": { "operation": "CreateAccountAlias" }
- },
- "CreateAccountPasswordPolicy": {
- "request": { "operation": "UpdateAccountPasswordPolicy" },
- "resource": {
- "type": "AccountPasswordPolicy",
- "identifiers": [ ]
- }
- },
- "CreateGroup": {
- "request": { "operation": "CreateGroup" },
- "resource": {
- "type": "Group",
- "identifiers": [
- { "target": "Name", "source": "requestParameter", "path": "GroupName" }
- ],
- "path": "Group"
- }
- },
- "CreateInstanceProfile": {
- "request": { "operation": "CreateInstanceProfile" },
- "resource": {
- "type": "InstanceProfile",
- "identifiers": [
- { "target": "Name", "source": "requestParameter", "path": "InstanceProfileName" }
- ],
- "path": "InstanceProfile"
- }
- },
- "CreatePolicy": {
- "request": { "operation": "CreatePolicy" },
- "resource": {
- "type": "Policy",
- "identifiers": [
- { "target": "Arn", "source": "response", "path": "Policy.Arn" }
- ]
- }
- },
- "CreateRole": {
- "request": { "operation": "CreateRole" },
- "resource": {
- "type": "Role",
- "identifiers": [
- { "target": "Name", "source": "requestParameter", "path": "RoleName" }
- ],
- "path": "Role"
- }
- },
- "CreateSamlProvider": {
- "request": { "operation": "CreateSAMLProvider" },
- "resource": {
- "type": "SamlProvider",
- "identifiers": [
- { "target": "Arn", "source": "response", "path": "SAMLProviderArn" }
- ]
- }
- },
- "CreateServerCertificate": {
- "request": { "operation": "UploadServerCertificate" },
- "resource": {
- "type": "ServerCertificate",
- "identifiers": [
- { "target": "Name", "source": "requestParameter", "path": "ServerCertificateName" }
- ]
- }
- },
- "CreateSigningCertificate": {
- "request": { "operation": "UploadSigningCertificate" },
- "resource": {
- "type": "SigningCertificate",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Certificate.CertificateId" }
- ],
- "path": "Certificate"
- }
- },
- "CreateUser": {
- "request": { "operation": "CreateUser" },
- "resource": {
- "type": "User",
- "identifiers": [
- { "target": "Name", "source": "requestParameter", "path": "UserName" }
- ],
- "path": "User"
- }
- },
- "CreateVirtualMfaDevice": {
- "request": { "operation": "CreateVirtualMFADevice" },
- "resource": {
- "type": "VirtualMfaDevice",
- "identifiers": [
- { "target": "SerialNumber", "source": "response", "path": "VirtualMFADevice.SerialNumber" }
- ],
- "path": "VirtualMFADevice"
- }
- }
- },
- "has": {
- "AccountPasswordPolicy": {
- "resource": {
- "type": "AccountPasswordPolicy",
- "identifiers": [ ]
- }
- },
- "AccountSummary": {
- "resource": {
- "type": "AccountSummary",
- "identifiers": [ ]
- }
- },
- "CurrentUser": {
- "resource": {
- "type": "CurrentUser",
- "identifiers": [ ]
- }
- },
- "Group": {
- "resource": {
- "type": "Group",
- "identifiers": [
- { "target": "Name", "source": "input" }
- ]
- }
- },
- "InstanceProfile": {
- "resource": {
- "type": "InstanceProfile",
- "identifiers": [
- { "target": "Name", "source": "input" }
- ]
- }
- },
- "Policy": {
- "resource": {
- "type": "Policy",
- "identifiers": [
- { "target": "PolicyArn", "source": "input" }
- ]
- }
- },
- "Role": {
- "resource": {
- "type": "Role",
- "identifiers": [
- { "target": "Name", "source": "input" }
- ]
- }
- },
- "SamlProvider": {
- "resource": {
- "type": "SamlProvider",
- "identifiers": [
- { "target": "Arn", "source": "input" }
- ]
- }
- },
- "ServerCertificate": {
- "resource": {
- "type": "ServerCertificate",
- "identifiers": [
- { "target": "Name", "source": "input" }
- ]
- }
- },
- "User": {
- "resource": {
- "type": "User",
- "identifiers": [
- { "target": "Name", "source": "input" }
- ]
- }
- },
- "VirtualMfaDevice": {
- "resource": {
- "type": "VirtualMfaDevice",
- "identifiers": [
- { "target": "SerialNumber", "source": "input" }
- ]
- }
- }
- },
- "hasMany": {
- "Groups": {
- "request": { "operation": "ListGroups" },
- "resource": {
- "type": "Group",
- "identifiers": [
- { "target": "Name", "source": "response", "path": "Groups[].GroupName" }
- ],
- "path": "Groups[]"
- }
- },
- "InstanceProfiles": {
- "request": { "operation": "ListInstanceProfiles" },
- "resource": {
- "type": "InstanceProfile",
- "identifiers": [
- { "target": "Name", "source": "response", "path": "InstanceProfiles[].InstanceProfileName" }
- ],
- "path": "InstanceProfiles[]"
- }
- },
- "Policies": {
- "request": { "operation": "ListPolicies" },
- "resource": {
- "type": "Policy",
- "identifiers": [
- { "target": "Arn", "source": "response", "path": "Policies[].Arn" }
- ],
- "path": "Policies[]"
- }
- },
- "Roles": {
- "request": { "operation": "ListRoles" },
- "resource": {
- "type": "Role",
- "identifiers": [
- { "target": "Name", "source": "response", "path": "Roles[].RoleName" }
- ],
- "path": "Roles[]"
- }
- },
- "SamlProviders": {
- "request": { "operation": "ListSAMLProviders" },
- "resource": {
- "type": "SamlProvider",
- "identifiers": [
- { "target": "Arn", "source": "response", "path": "SAMLProviderList[].Arn" }
- ]
- }
- },
- "ServerCertificates": {
- "request": { "operation": "ListServerCertificates" },
- "resource": {
- "type": "ServerCertificate",
- "identifiers": [
- { "target": "Name", "source": "response", "path": "ServerCertificateMetadataList[].ServerCertificateName" }
- ]
- }
- },
- "Users": {
- "request": { "operation": "ListUsers" },
- "resource": {
- "type": "User",
- "identifiers": [
- { "target": "Name", "source": "response", "path": "Users[].UserName" }
- ],
- "path": "Users[]"
- }
- },
- "VirtualMfaDevices": {
- "request": { "operation": "ListVirtualMFADevices" },
- "resource": {
- "type": "VirtualMfaDevice",
- "identifiers": [
- { "target": "SerialNumber", "source": "response", "path": "VirtualMFADevices[].SerialNumber" }
- ],
- "path": "VirtualMFADevices[]"
- }
- }
- }
- },
- "resources": {
- "AccessKey": {
- "identifiers": [
- {
- "name": "UserName",
- "memberName": "UserName"
- },
- {
- "name": "Id",
- "memberName": "AccessKeyId"
- }
- ],
- "shape": "AccessKeyMetadata",
- "actions": {
- "Activate": {
- "request": {
- "operation": "UpdateAccessKey",
- "params": [
- { "target": "UserName", "source": "identifier", "name": "UserName" },
- { "target": "AccessKeyId", "source": "identifier", "name": "Id" },
- { "target": "Status", "source": "string", "value": "Active" }
- ]
- }
- },
- "Deactivate": {
- "request": {
- "operation": "UpdateAccessKey",
- "params": [
- { "target": "UserName", "source": "identifier", "name": "UserName" },
- { "target": "AccessKeyId", "source": "identifier", "name": "Id" },
- { "target": "Status", "source": "string", "value": "Inactive" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteAccessKey",
- "params": [
- { "target": "UserName", "source": "identifier", "name": "UserName" },
- { "target": "AccessKeyId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "has": {
- "User": {
- "resource": {
- "type": "User",
- "identifiers": [
- { "target": "Name", "source": "identifier", "name": "UserName" }
- ]
- }
- }
- }
- },
- "AccessKeyPair": {
- "identifiers": [
- {
- "name": "UserName",
- "memberName": "UserName"
- },
- {
- "name": "Id",
- "memberName": "AccessKeyId"
- },
- {
- "name": "Secret",
- "memberName": "SecretAccessKey"
- }
- ],
- "shape": "AccessKey",
- "actions": {
- "Activate": {
- "request": {
- "operation": "UpdateAccessKey",
- "params": [
- { "target": "UserName", "source": "identifier", "name": "UserName" },
- { "target": "AccessKeyId", "source": "identifier", "name": "Id" },
- { "target": "Status", "source": "string", "value": "Active" }
- ]
- }
- },
- "Deactivate": {
- "request": {
- "operation": "UpdateAccessKey",
- "params": [
- { "target": "UserName", "source": "identifier", "name": "UserName" },
- { "target": "AccessKeyId", "source": "identifier", "name": "Id" },
- { "target": "Status", "source": "string", "value": "Inactive" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteAccessKey",
- "params": [
- { "target": "UserName", "source": "identifier", "name": "UserName" },
- { "target": "AccessKeyId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- }
- },
- "AccountPasswordPolicy": {
- "identifiers": [ ],
- "shape": "PasswordPolicy",
- "load": {
- "request": { "operation": "GetAccountPasswordPolicy" },
- "path": "PasswordPolicy"
- },
- "actions": {
- "Delete": {
- "request": { "operation": "DeleteAccountPasswordPolicy" }
- },
- "Update": {
- "request": { "operation": "UpdateAccountPasswordPolicy" }
- }
- }
- },
- "AccountSummary": {
- "identifiers": [ ],
- "shape": "GetAccountSummaryResponse",
- "load": {
- "request": { "operation": "GetAccountSummary" },
- "path": "@"
- }
- },
- "AssumeRolePolicy": {
- "identifiers": [
- { "name": "RoleName" }
- ],
- "actions": {
- "Update": {
- "request": {
- "operation": "UpdateAssumeRolePolicy",
- "params": [
- { "target": "RoleName", "source": "identifier", "name": "RoleName" }
- ]
- }
- }
- },
- "has": {
- "Role": {
- "resource": {
- "type": "Role",
- "identifiers": [
- { "target": "Name", "source": "identifier", "name": "RoleName" }
- ]
- }
- }
- }
- },
- "CurrentUser": {
- "identifiers": [ ],
- "shape": "User",
- "load": {
- "request": { "operation": "GetUser" },
- "path": "User"
- },
- "has": {
- "User": {
- "resource": {
- "type": "User",
- "identifiers": [
- { "target": "Name", "source": "data", "path": "UserName" }
- ]
- }
- }
- },
- "hasMany": {
- "AccessKeys": {
- "request": { "operation": "ListAccessKeys" },
- "resource": {
- "type": "AccessKey",
- "identifiers": [
- { "target": "UserName", "source": "response", "path": "AccessKeyMetadata[].UserName" },
- { "target": "Id", "source": "response", "path": "AccessKeyMetadata[].AccessKeyId" }
- ],
- "path": "AccessKeyMetadata[]"
- }
- },
- "MfaDevices": {
- "request": { "operation": "ListMFADevices" },
- "resource": {
- "type": "MfaDevice",
- "identifiers": [
- { "target": "UserName", "source": "response", "path": "MFADevices[].UserName" },
- { "target": "SerialNumber", "source": "response", "path": "MFADevices[].SerialNumber" }
- ],
- "path": "MFADevices[]"
- }
- },
- "SigningCertificates": {
- "request": { "operation": "ListSigningCertificates" },
- "resource": {
- "type": "SigningCertificate",
- "identifiers": [
- { "target": "UserName", "source": "response", "path": "Certificates[].UserName" },
- { "target": "Id", "source": "response", "path": "Certificates[].CertificateId" }
- ],
- "path": "Certificates[]"
- }
- }
- }
- },
- "Group": {
- "identifiers": [
- {
- "name": "Name",
- "memberName": "GroupName"
- }
- ],
- "shape": "Group",
- "load": {
- "request": {
- "operation": "GetGroup",
- "params": [
- { "target": "GroupName", "source": "identifier", "name": "Name" }
- ]
- },
- "path": "Group"
- },
- "actions": {
- "AddUser": {
- "request": {
- "operation": "AddUserToGroup",
- "params": [
- { "target": "GroupName", "source": "identifier", "name": "Name" }
- ]
- }
- },
- "AttachPolicy": {
- "request": {
- "operation": "AttachGroupPolicy",
- "params": [
- { "target": "GroupName", "source": "identifier", "name": "Name" }
- ]
- }
- },
- "Create": {
- "request": {
- "operation": "CreateGroup",
- "params": [
- { "target": "GroupName", "source": "identifier", "name": "Name" }
- ]
- },
- "resource": {
- "type": "Group",
- "identifiers": [
- { "target": "Name", "source": "requestParameter", "path": "GroupName" }
- ],
- "path": "Group"
- }
- },
- "CreatePolicy": {
- "request": {
- "operation": "PutGroupPolicy",
- "params": [
- { "target": "GroupName", "source": "identifier", "name": "Name" }
- ]
- },
- "resource": {
- "type": "GroupPolicy",
- "identifiers": [
- { "target": "GroupName", "source": "identifier", "name": "Name" },
- { "target": "Name", "source": "requestParameter", "path": "PolicyName" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteGroup",
- "params": [
- { "target": "GroupName", "source": "identifier", "name": "Name" }
- ]
- }
- },
- "DetachPolicy": {
- "request": {
- "operation": "DetachGroupPolicy",
- "params": [
- { "target": "GroupName", "source": "identifier", "name": "Name" }
- ]
- }
- },
- "RemoveUser": {
- "request": {
- "operation": "RemoveUserFromGroup",
- "params": [
- { "target": "GroupName", "source": "identifier", "name": "Name" }
- ]
- }
- },
- "Update": {
- "request": {
- "operation": "UpdateGroup",
- "params": [
- { "target": "GroupName", "source": "identifier", "name": "Name" }
- ]
- },
- "resource": {
- "type": "Group",
- "identifiers": [
- { "target": "Name", "source": "requestParameter", "path": "NewGroupName" }
- ]
- }
- }
- },
- "has": {
- "Policy": {
- "resource": {
- "type": "GroupPolicy",
- "identifiers": [
- { "target": "GroupName", "source": "identifier", "name": "Name" },
- { "target": "Name", "source": "input" }
- ]
- }
- }
- },
- "hasMany": {
- "AttachedPolicies": {
- "request": {
- "operation": "ListAttachedGroupPolicies",
- "params": [
- { "target": "GroupName", "source": "identifier", "name": "Name" }
- ]
- },
- "resource": {
- "type": "Policy",
- "identifiers": [
- { "target": "Arn", "source": "response", "path": "AttachedPolicies[].PolicyArn" }
- ]
- }
- },
- "Policies": {
- "request": {
- "operation": "ListGroupPolicies",
- "params": [
- { "target": "GroupName", "source": "identifier", "name": "Name" }
- ]
- },
- "resource": {
- "type": "GroupPolicy",
- "identifiers": [
- { "target": "GroupName", "source": "identifier", "name": "Name" },
- { "target": "Name", "source": "response", "path": "PolicyNames[]" }
- ]
- }
- },
- "Users": {
- "request": {
- "operation": "GetGroup",
- "params": [
- { "target": "GroupName", "source": "identifier", "name": "Name" }
- ]
- },
- "resource": {
- "type": "User",
- "identifiers": [
- { "target": "Name", "source": "response", "path": "Users[].UserName" }
- ],
- "path": "Users[]"
- }
- }
- }
- },
- "GroupPolicy": {
- "identifiers": [
- {
- "name": "GroupName",
- "memberName": "GroupName"
- },
- {
- "name": "Name",
- "memberName": "PolicyName"
- }
- ],
- "shape": "GetGroupPolicyResponse",
- "load": {
- "request": {
- "operation": "GetGroupPolicy",
- "params": [
- { "target": "GroupName", "source": "identifier", "name": "GroupName" },
- { "target": "PolicyName", "source": "identifier", "name": "Name" }
- ]
- },
- "path": "@"
- },
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeleteGroupPolicy",
- "params": [
- { "target": "GroupName", "source": "identifier", "name": "GroupName" },
- { "target": "PolicyName", "source": "identifier", "name": "Name" }
- ]
- }
- },
- "Put": {
- "request": {
- "operation": "PutGroupPolicy",
- "params": [
- { "target": "GroupName", "source": "identifier", "name": "GroupName" },
- { "target": "PolicyName", "source": "identifier", "name": "Name" }
- ]
- }
- }
- },
- "has": {
- "Group": {
- "resource": {
- "type": "Group",
- "identifiers": [
- { "target": "Name", "source": "identifier", "name": "GroupName" }
- ]
- }
- }
- }
- },
- "InstanceProfile": {
- "identifiers": [
- {
- "name": "Name",
- "memberName": "InstanceProfileName"
- }
- ],
- "shape": "InstanceProfile",
- "load": {
- "request": {
- "operation": "GetInstanceProfile",
- "params": [
- { "target": "InstanceProfileName", "source": "identifier", "name": "Name" }
- ]
- },
- "path": "InstanceProfile"
- },
- "actions": {
- "AddRole": {
- "request": {
- "operation": "AddRoleToInstanceProfile",
- "params": [
- { "target": "InstanceProfileName", "source": "identifier", "name": "Name" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteInstanceProfile",
- "params": [
- { "target": "InstanceProfileName", "source": "identifier", "name": "Name" }
- ]
- }
- },
- "RemoveRole": {
- "request": {
- "operation": "RemoveRoleFromInstanceProfile",
- "params": [
- { "target": "InstanceProfileName", "source": "identifier", "name": "Name" }
- ]
- }
- }
- },
- "has": {
- "Roles": {
- "resource": {
- "type": "Role",
- "identifiers": [
- { "target": "Name", "source": "data", "path": "Roles[].RoleName" }
- ],
- "path": "Roles[]"
- }
- }
- }
- },
- "LoginProfile": {
- "identifiers": [
- {
- "name": "UserName",
- "memberName": "UserName"
- }
- ],
- "shape": "LoginProfile",
- "load": {
- "request": {
- "operation": "GetLoginProfile",
- "params": [
- { "target": "UserName", "source": "identifier", "name": "UserName" }
- ]
- },
- "path": "LoginProfile"
- },
- "actions": {
- "Create": {
- "request": {
- "operation": "CreateLoginProfile",
- "params": [
- { "target": "UserName", "source": "identifier", "name": "UserName" }
- ]
- },
- "resource": {
- "type": "LoginProfile",
- "identifiers": [
- { "target": "UserName", "source": "response", "path": "LoginProfile.UserName" }
- ],
- "path": "LoginProfile"
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteLoginProfile",
- "params": [
- { "target": "UserName", "source": "identifier", "name": "UserName" }
- ]
- }
- },
- "Update": {
- "request": {
- "operation": "UpdateLoginProfile",
- "params": [
- { "target": "UserName", "source": "identifier", "name": "UserName" }
- ]
- }
- }
- },
- "has": {
- "User": {
- "resource": {
- "type": "User",
- "identifiers": [
- { "target": "Name", "source": "identifier", "name": "UserName" }
- ]
- }
- }
- }
- },
- "MfaDevice": {
- "identifiers": [
- {
- "name": "UserName",
- "memberName": "UserName"
- },
- {
- "name": "SerialNumber",
- "memberName": "SerialNumber"
- }
- ],
- "shape": "MFADevice",
- "actions": {
- "Associate": {
- "request": {
- "operation": "EnableMFADevice",
- "params": [
- { "target": "UserName", "source": "identifier", "name": "UserName" },
- { "target": "SerialNumber", "source": "identifier", "name": "SerialNumber" }
- ]
- }
- },
- "Disassociate": {
- "request": {
- "operation": "DeactivateMFADevice",
- "params": [
- { "target": "UserName", "source": "identifier", "name": "UserName" },
- { "target": "SerialNumber", "source": "identifier", "name": "SerialNumber" }
- ]
- }
- },
- "Resync": {
- "request": {
- "operation": "ResyncMFADevice",
- "params": [
- { "target": "UserName", "source": "identifier", "name": "UserName" },
- { "target": "SerialNumber", "source": "identifier", "name": "SerialNumber" }
- ]
- }
- }
- },
- "has": {
- "User": {
- "resource": {
- "type": "User",
- "identifiers": [
- { "target": "Name", "source": "identifier", "name": "UserName" }
- ]
- }
- }
- }
- },
- "Policy": {
- "identifiers": [
- {
- "name": "Arn",
- "memberName": "Arn"
- }
- ],
- "shape": "Policy",
- "load": {
- "request": {
- "operation": "GetPolicy",
- "params": [
- { "target": "PolicyArn", "source": "identifier", "name": "Arn" }
- ]
- },
- "path": "Policy"
- },
- "actions": {
- "AttachGroup": {
- "request": {
- "operation": "AttachGroupPolicy",
- "params": [
- { "target": "PolicyArn", "source": "identifier", "name": "Arn" }
- ]
- }
- },
- "AttachRole": {
- "request": {
- "operation": "AttachRolePolicy",
- "params": [
- { "target": "PolicyArn", "source": "identifier", "name": "Arn" }
- ]
- }
- },
- "AttachUser": {
- "request": {
- "operation": "AttachUserPolicy",
- "params": [
- { "target": "PolicyArn", "source": "identifier", "name": "Arn" }
- ]
- }
- },
- "CreateVersion": {
- "request": {
- "operation": "CreatePolicyVersion",
- "params": [
- { "target": "PolicyArn", "source": "identifier", "name": "Arn" }
- ]
- },
- "resource": {
- "type": "PolicyVersion",
- "identifiers": [
- { "target": "Arn", "source": "identifier", "name": "Arn" },
- { "target": "VersionId", "source": "response", "path": "PolicyVersion.VersionId" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeletePolicy",
- "params": [
- { "target": "PolicyArn", "source": "identifier", "name": "Arn" }
- ]
- }
- },
- "DetachGroup": {
- "request": {
- "operation": "DetachGroupPolicy",
- "params": [
- { "target": "PolicyArn", "source": "identifier", "name": "Arn" }
- ]
- }
- },
- "DetachRole": {
- "request": {
- "operation": "DetachRolePolicy",
- "params": [
- { "target": "PolicyArn", "source": "identifier", "name": "Arn" }
- ]
- }
- },
- "DetachUser": {
- "request": {
- "operation": "DetachUserPolicy",
- "params": [
- { "target": "PolicyArn", "source": "identifier", "name": "Arn" }
- ]
- }
- }
- },
- "has": {
- "DefaultVersion": {
- "resource": {
- "type": "PolicyVersion",
- "identifiers": [
- { "target": "Arn", "source": "identifier", "name": "Arn" },
- { "target": "VersionId", "source": "data", "path": "DefaultVersionId" }
- ]
- }
- }
- },
- "hasMany": {
- "AttachedGroups": {
- "request": {
- "operation": "ListEntitiesForPolicy",
- "params": [
- { "target": "PolicyArn", "source": "identifier", "name": "Arn" },
- { "target": "EntityFilter", "source": "string", "value": "Group" }
- ]
- },
- "resource": {
- "type": "Group",
- "identifiers": [
- { "target": "Name", "source": "response", "path": "PolicyGroups[].GroupName" }
- ]
- }
- },
- "AttachedRoles": {
- "request": {
- "operation": "ListEntitiesForPolicy",
- "params": [
- { "target": "PolicyArn", "source": "identifier", "name": "Arn" },
- { "target": "EntityFilter", "source": "string", "value": "Role" }
- ]
- },
- "resource": {
- "type": "Role",
- "identifiers": [
- { "target": "Name", "source": "response", "path": "PolicyRoles[].RoleName" }
- ]
- }
- },
- "AttachedUsers": {
- "request": {
- "operation": "ListEntitiesForPolicy",
- "params": [
- { "target": "PolicyArn", "source": "identifier", "name": "Arn" },
- { "target": "EntityFilter", "source": "string", "value": "User" }
- ]
- },
- "resource": {
- "type": "User",
- "identifiers": [
- { "target": "Name", "source": "response", "path": "PolicyUsers[].UserName" }
- ]
- }
- },
- "Versions": {
- "request": {
- "operation": "ListPolicyVersions",
- "params": [
- { "target": "PolicyArn", "source": "identifier", "name": "Arn" }
- ]
- },
- "resource": {
- "type": "PolicyVersion",
- "identifiers": [
- { "target": "Arn", "source": "identifier", "name": "Arn" },
- { "target": "VersionId", "source": "response", "path": "Versions[].VersionId" }
- ],
- "path": "Versions[]"
- }
- }
- }
- },
- "PolicyVersion": {
- "identifiers": [
- { "name": "Arn" },
- { "name": "VersionId" }
- ],
- "shape": "PolicyVersion",
- "load": {
- "request": {
- "operation": "GetPolicyVersion",
- "params": [
- { "target": "PolicyArn", "source": "identifier", "name": "Arn" },
- { "target": "VersionId", "source": "identifier", "name": "VersionId" }
- ]
- },
- "path": "PolicyVersion"
- },
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeletePolicyVersion",
- "params": [
- { "target": "PolicyArn", "source": "identifier", "name": "Arn" },
- { "target": "VersionId", "source": "identifier", "name": "VersionId" }
- ]
- }
- },
- "SetAsDefault": {
- "request": {
- "operation": "SetDefaultPolicyVersion",
- "params": [
- { "target": "PolicyArn", "source": "identifier", "name": "Arn" },
- { "target": "VersionId", "source": "identifier", "name": "VersionId" }
- ]
- }
- }
- }
- },
- "Role": {
- "identifiers": [
- {
- "name": "Name",
- "memberName": "RoleName"
- }
- ],
- "shape": "Role",
- "load": {
- "request": {
- "operation": "GetRole",
- "params": [
- { "target": "RoleName", "source": "identifier", "name": "Name" }
- ]
- },
- "path": "Role"
- },
- "actions": {
- "AttachPolicy": {
- "request": {
- "operation": "AttachRolePolicy",
- "params": [
- { "target": "RoleName", "source": "identifier", "name": "Name" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteRole",
- "params": [
- { "target": "RoleName", "source": "identifier", "name": "Name" }
- ]
- }
- },
- "DetachPolicy": {
- "request": {
- "operation": "DetachRolePolicy",
- "params": [
- { "target": "RoleName", "source": "identifier", "name": "Name" }
- ]
- }
- }
- },
- "has": {
- "AssumeRolePolicy": {
- "resource": {
- "type": "AssumeRolePolicy",
- "identifiers": [
- { "target": "RoleName", "source": "identifier", "name": "Name" }
- ]
- }
- },
- "Policy": {
- "resource": {
- "type": "RolePolicy",
- "identifiers": [
- { "target": "RoleName", "source": "identifier", "name": "Name" },
- { "target": "Name", "source": "input" }
- ]
- }
- }
- },
- "hasMany": {
- "AttachedPolicies": {
- "request": {
- "operation": "ListAttachedRolePolicies",
- "params": [
- { "target": "RoleName", "source": "identifier", "name": "Name" }
- ]
- },
- "resource": {
- "type": "Policy",
- "identifiers": [
- { "target": "Arn", "source": "response", "path": "AttachedPolicies[].PolicyArn" }
- ]
- }
- },
- "InstanceProfiles": {
- "request": {
- "operation": "ListInstanceProfilesForRole",
- "params": [
- { "target": "RoleName", "source": "identifier", "name": "Name" }
- ]
- },
- "resource": {
- "type": "InstanceProfile",
- "identifiers": [
- { "target": "Name", "source": "response", "path": "InstanceProfiles[].InstanceProfileName" }
- ],
- "path": "InstanceProfiles[]"
- }
- },
- "Policies": {
- "request": {
- "operation": "ListRolePolicies",
- "params": [
- { "target": "RoleName", "source": "identifier", "name": "Name" }
- ]
- },
- "resource": {
- "type": "RolePolicy",
- "identifiers": [
- { "target": "RoleName", "source": "identifier", "name": "Name" },
- { "target": "Name", "source": "response", "path": "PolicyNames[]" }
- ]
- }
- }
- }
- },
- "RolePolicy": {
- "identifiers": [
- {
- "name": "RoleName",
- "memberName": "RoleName"
- },
- {
- "name": "Name",
- "memberName": "PolicyName"
- }
- ],
- "shape": "GetRolePolicyResponse",
- "load": {
- "request": {
- "operation": "GetRolePolicy",
- "params": [
- { "target": "RoleName", "source": "identifier", "name": "RoleName" },
- { "target": "PolicyName", "source": "identifier", "name": "Name" }
- ]
- },
- "path": "@"
- },
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeleteRolePolicy",
- "params": [
- { "target": "RoleName", "source": "identifier", "name": "RoleName" },
- { "target": "PolicyName", "source": "identifier", "name": "Name" }
- ]
- }
- },
- "Put": {
- "request": {
- "operation": "PutRolePolicy",
- "params": [
- { "target": "RoleName", "source": "identifier", "name": "RoleName" },
- { "target": "PolicyName", "source": "identifier", "name": "Name" }
- ]
- }
- }
- },
- "has": {
- "Role": {
- "resource": {
- "type": "Role",
- "identifiers": [
- { "target": "Name", "source": "identifier", "name": "RoleName" }
- ]
- }
- }
- }
- },
- "SamlProvider": {
- "identifiers": [
- { "name": "Arn" }
- ],
- "shape": "GetSAMLProviderResponse",
- "load": {
- "request": {
- "operation": "GetSAMLProvider",
- "params": [
- { "target": "SAMLProviderArn", "source": "identifier", "name": "Arn" }
- ]
- },
- "path": "@"
- },
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeleteSAMLProvider",
- "params": [
- { "target": "SAMLProviderArn", "source": "identifier", "name": "Arn" }
- ]
- }
- },
- "Update": {
- "request": {
- "operation": "UpdateSAMLProvider",
- "params": [
- { "target": "SAMLProviderArn", "source": "identifier", "name": "Arn" }
- ]
- }
- }
- }
- },
- "ServerCertificate": {
- "identifiers": [
- { "name": "Name" }
- ],
- "shape": "ServerCertificate",
- "load": {
- "request": {
- "operation": "GetServerCertificate",
- "params": [
- { "target": "ServerCertificateName", "source": "identifier", "name": "Name" }
- ]
- },
- "path": "ServerCertificate"
- },
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeleteServerCertificate",
- "params": [
- { "target": "ServerCertificateName", "source": "identifier", "name": "Name" }
- ]
- }
- },
- "Update": {
- "request": {
- "operation": "UpdateServerCertificate",
- "params": [
- { "target": "ServerCertificateName", "source": "identifier", "name": "Name" }
- ]
- },
- "resource": {
- "type": "ServerCertificate",
- "identifiers": [
- { "target": "Name", "source": "requestParameter", "path": "NewServerCertificateName" }
- ]
- }
- }
- }
- },
- "SigningCertificate": {
- "identifiers": [
- {
- "name": "UserName",
- "memberName": "UserName"
- },
- {
- "name": "Id",
- "memberName": "CertificateId"
- }
- ],
- "shape": "SigningCertificate",
- "actions": {
- "Activate": {
- "request": {
- "operation": "UpdateSigningCertificate",
- "params": [
- { "target": "UserName", "source": "identifier", "name": "UserName" },
- { "target": "CertificateId", "source": "identifier", "name": "Id" },
- { "target": "Status", "source": "string", "value": "Active" }
- ]
- }
- },
- "Deactivate": {
- "request": {
- "operation": "UpdateSigningCertificate",
- "params": [
- { "target": "UserName", "source": "identifier", "name": "UserName" },
- { "target": "CertificateId", "source": "identifier", "name": "Id" },
- { "target": "Status", "source": "string", "value": "Inactive" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteSigningCertificate",
- "params": [
- { "target": "UserName", "source": "identifier", "name": "UserName" },
- { "target": "CertificateId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "has": {
- "User": {
- "resource": {
- "type": "User",
- "identifiers": [
- { "target": "Name", "source": "identifier", "name": "UserName" }
- ]
- }
- }
- }
- },
- "User": {
- "identifiers": [
- {
- "name": "Name",
- "memberName": "UserName"
- }
- ],
- "shape": "User",
- "load": {
- "request": {
- "operation": "GetUser",
- "params": [
- { "target": "UserName", "source": "identifier", "name": "Name" }
- ]
- },
- "path": "User"
- },
- "actions": {
- "AddGroup": {
- "request": {
- "operation": "AddUserToGroup",
- "params": [
- { "target": "UserName", "source": "identifier", "name": "Name" }
- ]
- }
- },
- "AttachPolicy": {
- "request": {
- "operation": "AttachUserPolicy",
- "params": [
- { "target": "UserName", "source": "identifier", "name": "Name" }
- ]
- }
- },
- "Create": {
- "request": {
- "operation": "CreateUser",
- "params": [
- { "target": "UserName", "source": "identifier", "name": "Name" }
- ]
- },
- "resource": {
- "type": "User",
- "identifiers": [
- { "target": "Name", "source": "requestParameter", "path": "UserName" }
- ],
- "path": "User"
- }
- },
- "CreateAccessKeyPair": {
- "request": {
- "operation": "CreateAccessKey",
- "params": [
- { "target": "UserName", "source": "identifier", "name": "Name" }
- ]
- },
- "resource": {
- "type": "AccessKeyPair",
- "identifiers": [
- { "target": "UserName", "source": "identifier", "name": "Name" },
- { "target": "Id", "source": "response", "path": "AccessKey.AccessKeyId" },
- { "target": "Secret", "source": "response", "path": "AccessKey.SecretAccessKey" }
- ],
- "path": "AccessKey"
- }
- },
- "CreateLoginProfile": {
- "request": {
- "operation": "CreateLoginProfile",
- "params": [
- { "target": "UserName", "source": "identifier", "name": "Name" }
- ]
- },
- "resource": {
- "type": "LoginProfile",
- "identifiers": [
- { "target": "UserName", "source": "response", "path": "LoginProfile.UserName" }
- ],
- "path": "LoginProfile"
- }
- },
- "CreatePolicy": {
- "request": {
- "operation": "PutUserPolicy",
- "params": [
- { "target": "UserName", "source": "identifier", "name": "Name" }
- ]
- },
- "resource": {
- "type": "UserPolicy",
- "identifiers": [
- { "target": "UserName", "source": "identifier", "name": "Name" },
- { "target": "Name", "source": "requestParameter", "path": "PolicyName" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteUser",
- "params": [
- { "target": "UserName", "source": "identifier", "name": "Name" }
- ]
- }
- },
- "DetachPolicy": {
- "request": {
- "operation": "DetachUserPolicy",
- "params": [
- { "target": "UserName", "source": "identifier", "name": "Name" }
- ]
- }
- },
- "EnableMfa": {
- "request": {
- "operation": "EnableMFADevice",
- "params": [
- { "target": "UserName", "source": "identifier", "name": "Name" }
- ]
- },
- "resource": {
- "type": "MfaDevice",
- "identifiers": [
- { "target": "UserName", "source": "identifier", "name": "Name" },
- { "target": "SerialNumber", "source": "requestParameter", "path": "SerialNumber" }
- ]
- }
- },
- "RemoveGroup": {
- "request": {
- "operation": "RemoveUserFromGroup",
- "params": [
- { "target": "UserName", "source": "identifier", "name": "Name" }
- ]
- }
- },
- "Update": {
- "request": {
- "operation": "UpdateUser",
- "params": [
- { "target": "UserName", "source": "identifier", "name": "Name" }
- ]
- },
- "resource": {
- "type": "User",
- "identifiers": [
- { "target": "Name", "source": "requestParameter", "path": "NewUserName" }
- ]
- }
- }
- },
- "has": {
- "AccessKey": {
- "resource": {
- "type": "AccessKey",
- "identifiers": [
- { "target": "UserName", "source": "identifier", "name": "Name" },
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "LoginProfile": {
- "resource": {
- "type": "LoginProfile",
- "identifiers": [
- { "target": "UserName", "source": "identifier", "name": "Name" }
- ]
- }
- },
- "MfaDevice": {
- "resource": {
- "type": "MfaDevice",
- "identifiers": [
- { "target": "UserName", "source": "identifier", "name": "Name" },
- { "target": "SerialNumber", "source": "input" }
- ]
- }
- },
- "Policy": {
- "resource": {
- "type": "UserPolicy",
- "identifiers": [
- { "target": "UserName", "source": "identifier", "name": "Name" },
- { "target": "Name", "source": "input" }
- ]
- }
- },
- "SigningCertificate": {
- "resource": {
- "type": "SigningCertificate",
- "identifiers": [
- { "target": "UserName", "source": "identifier", "name": "Name" },
- { "target": "Id", "source": "input" }
- ]
- }
- }
- },
- "hasMany": {
- "AccessKeys": {
- "request": {
- "operation": "ListAccessKeys",
- "params": [
- { "target": "UserName", "source": "identifier", "name": "Name" }
- ]
- },
- "resource": {
- "type": "AccessKey",
- "identifiers": [
- { "target": "UserName", "source": "identifier", "name": "Name" },
- { "target": "Id", "source": "response", "path": "AccessKeyMetadata[].AccessKeyId" }
- ],
- "path": "AccessKeyMetadata[]"
- }
- },
- "AttachedPolicies": {
- "request": {
- "operation": "ListAttachedUserPolicies",
- "params": [
- { "target": "UserName", "source": "identifier", "name": "Name" }
- ]
- },
- "resource": {
- "type": "Policy",
- "identifiers": [
- { "target": "Arn", "source": "response", "path": "AttachedPolicies[].PolicyArn" }
- ]
- }
- },
- "Groups": {
- "request": {
- "operation": "ListGroupsForUser",
- "params": [
- { "target": "UserName", "source": "identifier", "name": "Name" }
- ]
- },
- "resource": {
- "type": "Group",
- "identifiers": [
- { "target": "Name", "source": "response", "path": "Groups[].GroupName" }
- ],
- "path": "Groups[]"
- }
- },
- "MfaDevices": {
- "request": {
- "operation": "ListMFADevices",
- "params": [
- { "target": "UserName", "source": "identifier", "name": "Name" }
- ]
- },
- "resource": {
- "type": "MfaDevice",
- "identifiers": [
- { "target": "UserName", "source": "identifier", "name": "Name" },
- { "target": "SerialNumber", "source": "response", "path": "MFADevices[].SerialNumber" }
- ],
- "path": "MFADevices[]"
- }
- },
- "Policies": {
- "request": {
- "operation": "ListUserPolicies",
- "params": [
- { "target": "UserName", "source": "identifier", "name": "Name" }
- ]
- },
- "resource": {
- "type": "UserPolicy",
- "identifiers": [
- { "target": "UserName", "source": "identifier", "name": "Name" },
- { "target": "Name", "source": "response", "path": "PolicyNames[]" }
- ]
- }
- },
- "SigningCertificates": {
- "request": {
- "operation": "ListSigningCertificates",
- "params": [
- { "target": "UserName", "source": "identifier", "name": "Name" }
- ]
- },
- "resource": {
- "type": "SigningCertificate",
- "identifiers": [
- { "target": "UserName", "source": "identifier", "name": "Name" },
- { "target": "Id", "source": "response", "path": "Certificates[].CertificateId" }
- ],
- "path": "Certificates[]"
- }
- }
- }
- },
- "UserPolicy": {
- "identifiers": [
- {
- "name": "UserName",
- "memberName": "UserName"
- },
- {
- "name": "Name",
- "memberName": "PolicyName"
- }
- ],
- "shape": "GetUserPolicyResponse",
- "load": {
- "request": {
- "operation": "GetUserPolicy",
- "params": [
- { "target": "UserName", "source": "identifier", "name": "UserName" },
- { "target": "PolicyName", "source": "identifier", "name": "Name" }
- ]
- },
- "path": "@"
- },
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeleteUserPolicy",
- "params": [
- { "target": "UserName", "source": "identifier", "name": "UserName" },
- { "target": "PolicyName", "source": "identifier", "name": "Name" }
- ]
- }
- },
- "Put": {
- "request": {
- "operation": "PutUserPolicy",
- "params": [
- { "target": "UserName", "source": "identifier", "name": "UserName" },
- { "target": "PolicyName", "source": "identifier", "name": "Name" }
- ]
- }
- }
- },
- "has": {
- "User": {
- "resource": {
- "type": "User",
- "identifiers": [
- { "target": "Name", "source": "identifier", "name": "UserName" }
- ]
- }
- }
- }
- },
- "VirtualMfaDevice": {
- "identifiers": [
- {
- "name": "SerialNumber",
- "memberName": "SerialNumber"
- }
- ],
- "shape": "VirtualMFADevice",
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeleteVirtualMFADevice",
- "params": [
- { "target": "SerialNumber", "source": "identifier", "name": "SerialNumber" }
- ]
- }
- }
- },
- "has": {
- "User": {
- "resource": {
- "type": "User",
- "identifiers": [
- { "target": "Name", "source": "data", "path": "User.UserName" }
- ]
- }
- }
- }
- }
- }
-}
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/opsworks/2013-02-18/resources-1.json b/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/opsworks/2013-02-18/resources-1.json
deleted file mode 100644
index 0435b13b..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/opsworks/2013-02-18/resources-1.json
+++ /dev/null
@@ -1,173 +0,0 @@
-{
- "service": {
- "actions": {
- "CreateStack": {
- "request": { "operation": "CreateStack" },
- "resource": {
- "type": "Stack",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "StackId" }
- ]
- }
- }
- },
- "has": {
- "Layer": {
- "resource": {
- "type": "Layer",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Stack": {
- "resource": {
- "type": "Stack",
- "identifiers": [
- { "target": "Id", "source": "input" }
- ]
- }
- }
- },
- "hasMany": {
- "Stacks": {
- "request": { "operation": "DescribeStacks" },
- "resource": {
- "type": "Stack",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Stacks[].StackId" }
- ],
- "path": "Stacks[]"
- }
- }
- }
- },
- "resources": {
- "Layer": {
- "identifiers": [
- { "name": "Id" }
- ],
- "shape": "Layer",
- "load": {
- "request": {
- "operation": "DescribeLayers",
- "params": [
- { "target": "LayerIds[]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "Layers[0]"
- },
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeleteLayer",
- "params": [
- { "target": "LayerId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "has": {
- "Stack": {
- "resource": {
- "type": "Stack",
- "identifiers": [
- { "target": "Id", "source": "data", "path": "StackId" }
- ]
- }
- }
- }
- },
- "Stack": {
- "identifiers": [
- { "name": "Id" }
- ],
- "shape": "Stack",
- "load": {
- "request": {
- "operation": "DescribeStacks",
- "params": [
- { "target": "StackIds[]", "source": "identifier", "name": "Id" }
- ]
- },
- "path": "Stacks[0]"
- },
- "actions": {
- "CreateLayer": {
- "request": {
- "operation": "CreateLayer",
- "params": [
- { "target": "StackId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Layer",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "LayerId" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteStack",
- "params": [
- { "target": "StackId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "has": {
- "Summary": {
- "resource": {
- "type": "StackSummary",
- "identifiers": [
- { "target": "StackId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "hasMany": {
- "Layers": {
- "request": {
- "operation": "DescribeLayers",
- "params": [
- { "target": "StackId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Layer",
- "identifiers": [
- { "target": "Id", "source": "response", "path": "Layers[].LayerId" }
- ],
- "path": "Layers[]"
- }
- }
- }
- },
- "StackSummary": {
- "identifiers": [
- { "name": "StackId" }
- ],
- "shape": "StackSummary",
- "load": {
- "request": {
- "operation": "DescribeStackSummary",
- "params": [
- { "target": "StackId", "source": "identifier", "name": "StackId" }
- ]
- },
- "path": "StackSummary"
- },
- "has": {
- "Stack": {
- "resource": {
- "type": "Stack",
- "identifiers": [
- { "target": "Id", "source": "identifier", "name": "StackId" }
- ]
- }
- }
- }
- }
- }
-}
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/s3/2006-03-01/resources-1.json b/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/s3/2006-03-01/resources-1.json
deleted file mode 100644
index f1e88c63..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/s3/2006-03-01/resources-1.json
+++ /dev/null
@@ -1,1249 +0,0 @@
-{
- "service": {
- "actions": {
- "CreateBucket": {
- "request": { "operation": "CreateBucket" },
- "resource": {
- "type": "Bucket",
- "identifiers": [
- { "target": "Name", "source": "requestParameter", "path": "Bucket" }
- ]
- }
- }
- },
- "has": {
- "Bucket": {
- "resource": {
- "type": "Bucket",
- "identifiers": [
- { "target": "Name", "source": "input" }
- ]
- }
- }
- },
- "hasMany": {
- "Buckets": {
- "request": { "operation": "ListBuckets" },
- "resource": {
- "type": "Bucket",
- "identifiers": [
- { "target": "Name", "source": "response", "path": "Buckets[].Name" }
- ],
- "path": "Buckets[]"
- }
- }
- }
- },
- "resources": {
- "Bucket": {
- "identifiers": [
- { "name": "Name" }
- ],
- "shape": "Bucket",
- "actions": {
- "Create": {
- "request": {
- "operation": "CreateBucket",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "Name" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteBucket",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "Name" }
- ]
- }
- },
- "DeleteObjects": {
- "request": {
- "operation": "DeleteObjects",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "Name" }
- ]
- }
- },
- "PutObject": {
- "request": {
- "operation": "PutObject",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "Name" }
- ]
- },
- "resource": {
- "type": "Object",
- "identifiers": [
- { "target": "BucketName", "source": "identifier", "name": "Name" },
- { "target": "Key", "source": "requestParameter", "path": "Key" }
- ]
- }
- }
- },
- "waiters": {
- "Exists": {
- "waiterName": "BucketExists",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "Name" }
- ]
- },
- "NotExists": {
- "waiterName": "BucketNotExists",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "Name" }
- ]
- }
- },
- "has": {
- "Acl": {
- "resource": {
- "type": "BucketAcl",
- "identifiers": [
- { "target": "BucketName", "source": "identifier", "name": "Name" }
- ]
- }
- },
- "Cors": {
- "resource": {
- "type": "BucketCors",
- "identifiers": [
- { "target": "BucketName", "source": "identifier", "name": "Name" }
- ]
- }
- },
- "Lifecycle": {
- "resource": {
- "type": "BucketLifecycle",
- "identifiers": [
- { "target": "BucketName", "source": "identifier", "name": "Name" }
- ]
- }
- },
- "LifecycleConfiguration": {
- "resource": {
- "type": "BucketLifecycleConfiguration",
- "identifiers": [
- {
- "target": "BucketName",
- "source": "identifier",
- "name": "Name"
- }
- ]
- }
- },
- "Logging": {
- "resource": {
- "type": "BucketLogging",
- "identifiers": [
- { "target": "BucketName", "source": "identifier", "name": "Name" }
- ]
- }
- },
- "Notification": {
- "resource": {
- "type": "BucketNotification",
- "identifiers": [
- { "target": "BucketName", "source": "identifier", "name": "Name" }
- ]
- }
- },
- "Object": {
- "resource": {
- "type": "Object",
- "identifiers": [
- { "target": "BucketName", "source": "identifier", "name": "Name" },
- { "target": "Key", "source": "input" }
- ]
- }
- },
- "Policy": {
- "resource": {
- "type": "BucketPolicy",
- "identifiers": [
- { "target": "BucketName", "source": "identifier", "name": "Name" }
- ]
- }
- },
- "RequestPayment": {
- "resource": {
- "type": "BucketRequestPayment",
- "identifiers": [
- { "target": "BucketName", "source": "identifier", "name": "Name" }
- ]
- }
- },
- "Tagging": {
- "resource": {
- "type": "BucketTagging",
- "identifiers": [
- { "target": "BucketName", "source": "identifier", "name": "Name" }
- ]
- }
- },
- "Versioning": {
- "resource": {
- "type": "BucketVersioning",
- "identifiers": [
- { "target": "BucketName", "source": "identifier", "name": "Name" }
- ]
- }
- },
- "Website": {
- "resource": {
- "type": "BucketWebsite",
- "identifiers": [
- { "target": "BucketName", "source": "identifier", "name": "Name" }
- ]
- }
- }
- },
- "hasMany": {
- "MultipartUploads": {
- "request": {
- "operation": "ListMultipartUploads",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "Name" }
- ]
- },
- "resource": {
- "type": "MultipartUpload",
- "identifiers": [
- { "target": "BucketName", "source": "identifier", "name": "Name" },
- { "target": "ObjectKey", "source": "response", "path": "Uploads[].Key" },
- { "target": "Id", "source": "response", "path": "Uploads[].UploadId" }
- ],
- "path": "Uploads[]"
- }
- },
- "ObjectVersions": {
- "request": {
- "operation": "ListObjectVersions",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "Name" }
- ]
- },
- "resource": {
- "type": "ObjectVersion",
- "identifiers": [
- { "target": "BucketName", "source": "identifier", "name": "Name" },
- { "target": "ObjectKey", "source": "response", "path": "[Versions,DeleteMarkers]|[].Key" },
- { "target": "Id", "source": "response", "path": "[Versions,DeleteMarkers]|[].VersionId" }
- ],
- "path": "[Versions,DeleteMarkers]|[]"
- }
- },
- "Objects": {
- "request": {
- "operation": "ListObjects",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "Name" }
- ]
- },
- "resource": {
- "type": "ObjectSummary",
- "identifiers": [
- { "target": "BucketName", "source": "identifier", "name": "Name" },
- { "target": "Key", "source": "response", "path": "Contents[].Key" }
- ],
- "path": "Contents[]"
- }
- }
- }
- },
- "BucketAcl": {
- "identifiers": [
- { "name": "BucketName" }
- ],
- "shape": "GetBucketAclOutput",
- "load": {
- "request": {
- "operation": "GetBucketAcl",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" }
- ]
- },
- "path": "@"
- },
- "actions": {
- "Put": {
- "request": {
- "operation": "PutBucketAcl",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" }
- ]
- }
- }
- },
- "has": {
- "Bucket": {
- "resource": {
- "type": "Bucket",
- "identifiers": [
- { "target": "Name", "source": "identifier", "name": "BucketName" }
- ]
- }
- }
- }
- },
- "BucketCors": {
- "identifiers": [
- { "name": "BucketName" }
- ],
- "shape": "GetBucketCorsOutput",
- "load": {
- "request": {
- "operation": "GetBucketCors",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" }
- ]
- },
- "path": "@"
- },
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeleteBucketCors",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" }
- ]
- }
- },
- "Put": {
- "request": {
- "operation": "PutBucketCors",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" }
- ]
- }
- }
- },
- "has": {
- "Bucket": {
- "resource": {
- "type": "Bucket",
- "identifiers": [
- { "target": "Name", "source": "identifier", "name": "BucketName" }
- ]
- }
- }
- }
- },
- "BucketLifecycle": {
- "identifiers": [
- { "name": "BucketName" }
- ],
- "shape": "GetBucketLifecycleOutput",
- "load": {
- "request": {
- "operation": "GetBucketLifecycle",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" }
- ]
- },
- "path": "@"
- },
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeleteBucketLifecycle",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" }
- ]
- }
- },
- "Put": {
- "request": {
- "operation": "PutBucketLifecycle",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" }
- ]
- }
- }
- },
- "has": {
- "Bucket": {
- "resource": {
- "type": "Bucket",
- "identifiers": [
- { "target": "Name", "source": "identifier", "name": "BucketName" }
- ]
- }
- }
- }
- },
- "BucketLifecycleConfiguration": {
- "identifiers": [
- {
- "name": "BucketName"
- }
- ],
- "shape": "GetBucketLifecycleConfigurationOutput",
- "load": {
- "request": {
- "operation": "GetBucketLifecycleConfiguration",
- "params": [
- {
- "target": "Bucket",
- "source": "identifier",
- "name": "BucketName"
- }
- ]
- },
- "path": "@"
- },
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeleteBucketLifecycle",
- "params": [
- {
- "target": "Bucket",
- "source": "identifier",
- "name": "BucketName"
- }
- ]
- }
- },
- "Put": {
- "request": {
- "operation": "PutBucketLifecycleConfiguration",
- "params": [
- {
- "target": "Bucket",
- "source": "identifier",
- "name": "BucketName"
- }
- ]
- }
- }
- },
- "has": {
- "Bucket": {
- "resource": {
- "type": "Bucket",
- "identifiers": [
- {
- "target": "Name",
- "source": "identifier",
- "name": "BucketName"
- }
- ]
- }
- }
- }
- },
- "BucketLogging": {
- "identifiers": [
- { "name": "BucketName" }
- ],
- "shape": "GetBucketLoggingOutput",
- "load": {
- "request": {
- "operation": "GetBucketLogging",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" }
- ]
- },
- "path": "@"
- },
- "actions": {
- "Put": {
- "request": {
- "operation": "PutBucketLogging",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" }
- ]
- }
- }
- },
- "has": {
- "Bucket": {
- "resource": {
- "type": "Bucket",
- "identifiers": [
- { "target": "Name", "source": "identifier", "name": "BucketName" }
- ]
- }
- }
- }
- },
- "BucketNotification": {
- "identifiers": [
- { "name": "BucketName" }
- ],
- "shape": "NotificationConfiguration",
- "load": {
- "request": {
- "operation": "GetBucketNotificationConfiguration",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" }
- ]
- },
- "path": "@"
- },
- "actions": {
- "Put": {
- "request": {
- "operation": "PutBucketNotificationConfiguration",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" }
- ]
- }
- }
- },
- "has": {
- "Bucket": {
- "resource": {
- "type": "Bucket",
- "identifiers": [
- { "target": "Name", "source": "identifier", "name": "BucketName" }
- ]
- }
- }
- }
- },
- "BucketPolicy": {
- "identifiers": [
- { "name": "BucketName" }
- ],
- "shape": "GetBucketPolicyOutput",
- "load": {
- "request": {
- "operation": "GetBucketPolicy",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" }
- ]
- },
- "path": "@"
- },
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeleteBucketPolicy",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" }
- ]
- }
- },
- "Put": {
- "request": {
- "operation": "PutBucketPolicy",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" }
- ]
- }
- }
- },
- "has": {
- "Bucket": {
- "resource": {
- "type": "Bucket",
- "identifiers": [
- { "target": "Name", "source": "identifier", "name": "BucketName" }
- ]
- }
- }
- }
- },
- "BucketRequestPayment": {
- "identifiers": [
- { "name": "BucketName" }
- ],
- "shape": "GetBucketRequestPaymentOutput",
- "load": {
- "request": {
- "operation": "GetBucketRequestPayment",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" }
- ]
- },
- "path": "@"
- },
- "actions": {
- "Put": {
- "request": {
- "operation": "PutBucketRequestPayment",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" }
- ]
- }
- }
- },
- "has": {
- "Bucket": {
- "resource": {
- "type": "Bucket",
- "identifiers": [
- { "target": "Name", "source": "identifier", "name": "BucketName" }
- ]
- }
- }
- }
- },
- "BucketTagging": {
- "identifiers": [
- { "name": "BucketName" }
- ],
- "shape": "GetBucketTaggingOutput",
- "load": {
- "request": {
- "operation": "GetBucketTagging",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" }
- ]
- },
- "path": "@"
- },
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeleteBucketTagging",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" }
- ]
- }
- },
- "Put": {
- "request": {
- "operation": "PutBucketTagging",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" }
- ]
- }
- }
- },
- "has": {
- "Bucket": {
- "resource": {
- "type": "Bucket",
- "identifiers": [
- { "target": "Name", "source": "identifier", "name": "BucketName" }
- ]
- }
- }
- }
- },
- "BucketVersioning": {
- "identifiers": [
- { "name": "BucketName" }
- ],
- "shape": "GetBucketVersioningOutput",
- "load": {
- "request": {
- "operation": "GetBucketVersioning",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" }
- ]
- },
- "path": "@"
- },
- "actions": {
- "Enable": {
- "request": {
- "operation": "PutBucketVersioning",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" },
- { "target": "VersioningConfiguration.Status", "source": "string", "value": "Enabled" }
- ]
- }
- },
- "Put": {
- "request": {
- "operation": "PutBucketVersioning",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" }
- ]
- }
- },
- "Suspend": {
- "request": {
- "operation": "PutBucketVersioning",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" },
- { "target": "VersioningConfiguration.Status", "source": "string", "value": "Suspended" }
- ]
- }
- }
- },
- "has": {
- "Bucket": {
- "resource": {
- "type": "Bucket",
- "identifiers": [
- { "target": "Name", "source": "identifier", "name": "BucketName" }
- ]
- }
- }
- }
- },
- "BucketWebsite": {
- "identifiers": [
- { "name": "BucketName" }
- ],
- "shape": "GetBucketWebsiteOutput",
- "load": {
- "request": {
- "operation": "GetBucketWebsite",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" }
- ]
- },
- "path": "@"
- },
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeleteBucketWebsite",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" }
- ]
- }
- },
- "Put": {
- "request": {
- "operation": "PutBucketWebsite",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" }
- ]
- }
- }
- },
- "has": {
- "Bucket": {
- "resource": {
- "type": "Bucket",
- "identifiers": [
- { "target": "Name", "source": "identifier", "name": "BucketName" }
- ]
- }
- }
- }
- },
- "MultipartUpload": {
- "identifiers": [
- { "name": "BucketName" },
- { "name": "ObjectKey" },
- { "name": "Id" }
- ],
- "shape": "MultipartUpload",
- "actions": {
- "Abort": {
- "request": {
- "operation": "AbortMultipartUpload",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" },
- { "target": "Key", "source": "identifier", "name": "ObjectKey" },
- { "target": "UploadId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Complete": {
- "request": {
- "operation": "CompleteMultipartUpload",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" },
- { "target": "Key", "source": "identifier", "name": "ObjectKey" },
- { "target": "UploadId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "Object",
- "identifiers": [
- { "target": "BucketName", "source": "identifier", "name": "BucketName" },
- { "target": "Key", "source": "identifier", "name": "ObjectKey" }
- ]
- }
- }
- },
- "has": {
- "Object": {
- "resource": {
- "type": "Object",
- "identifiers": [
- { "target": "BucketName", "source": "identifier", "name": "BucketName" },
- { "target": "Key", "source": "identifier", "name": "ObjectKey" }
- ]
- }
- },
- "Part": {
- "resource": {
- "type": "MultipartUploadPart",
- "identifiers": [
- { "target": "BucketName", "source": "identifier", "name": "BucketName" },
- { "target": "ObjectKey", "source": "identifier", "name": "ObjectKey" },
- { "target": "MultipartUploadId", "source": "identifier", "name": "Id" },
- { "target": "PartNumber", "source": "input" }
- ]
- }
- }
- },
- "hasMany": {
- "Parts": {
- "request": {
- "operation": "ListParts",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" },
- { "target": "Key", "source": "identifier", "name": "ObjectKey" },
- { "target": "UploadId", "source": "identifier", "name": "Id" }
- ]
- },
- "resource": {
- "type": "MultipartUploadPart",
- "identifiers": [
- { "target": "BucketName", "source": "requestParameter", "path": "Bucket" },
- { "target": "ObjectKey", "source": "requestParameter", "path": "Key" },
- { "target": "MultipartUploadId", "source": "requestParameter", "path": "UploadId" },
- { "target": "PartNumber", "source": "response", "path": "Parts[].PartNumber" }
- ],
- "path": "Parts[]"
- }
- }
- }
- },
- "MultipartUploadPart": {
- "identifiers": [
- { "name": "BucketName" },
- { "name": "ObjectKey" },
- { "name": "MultipartUploadId" },
- {
- "name": "PartNumber",
- "type": "integer",
- "memberName": "PartNumber"
- }
- ],
- "shape": "Part",
- "actions": {
- "CopyFrom": {
- "request": {
- "operation": "UploadPartCopy",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" },
- { "target": "Key", "source": "identifier", "name": "ObjectKey" },
- { "target": "UploadId", "source": "identifier", "name": "MultipartUploadId" },
- { "target": "PartNumber", "source": "identifier", "name": "PartNumber" }
- ]
- }
- },
- "Upload": {
- "request": {
- "operation": "UploadPart",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" },
- { "target": "Key", "source": "identifier", "name": "ObjectKey" },
- { "target": "UploadId", "source": "identifier", "name": "MultipartUploadId" },
- { "target": "PartNumber", "source": "identifier", "name": "PartNumber" }
- ]
- }
- }
- },
- "has": {
- "MultipartUpload": {
- "resource": {
- "type": "MultipartUpload",
- "identifiers": [
- { "target": "BucketName", "source": "identifier", "name": "BucketName" },
- { "target": "ObjectKey", "source": "identifier", "name": "ObjectKey" },
- { "target": "Id", "source": "identifier", "name": "MultipartUploadId" }
- ]
- }
- }
- }
- },
- "Object": {
- "identifiers": [
- { "name": "BucketName" },
- { "name": "Key" }
- ],
- "shape": "HeadObjectOutput",
- "load": {
- "request": {
- "operation": "HeadObject",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" },
- { "target": "Key", "source": "identifier", "name": "Key" }
- ]
- },
- "path": "@"
- },
- "actions": {
- "CopyFrom": {
- "request": {
- "operation": "CopyObject",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" },
- { "target": "Key", "source": "identifier", "name": "Key" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteObject",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" },
- { "target": "Key", "source": "identifier", "name": "Key" }
- ]
- }
- },
- "Get": {
- "request": {
- "operation": "GetObject",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" },
- { "target": "Key", "source": "identifier", "name": "Key" }
- ]
- }
- },
- "InitiateMultipartUpload": {
- "request": {
- "operation": "CreateMultipartUpload",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" },
- { "target": "Key", "source": "identifier", "name": "Key" }
- ]
- },
- "resource": {
- "type": "MultipartUpload",
- "identifiers": [
- { "target": "BucketName", "source": "identifier", "name": "BucketName" },
- { "target": "ObjectKey", "source": "identifier", "name": "Key" },
- { "target": "Id", "source": "response", "path": "UploadId" }
- ]
- }
- },
- "Put": {
- "request": {
- "operation": "PutObject",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" },
- { "target": "Key", "source": "identifier", "name": "Key" }
- ]
- }
- },
- "RestoreObject": {
- "request": {
- "operation": "RestoreObject",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" },
- { "target": "Key", "source": "identifier", "name": "Key" }
- ]
- }
- }
- },
- "batchActions": {
- "Delete": {
- "request": {
- "operation": "DeleteObjects",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" },
- { "target": "Delete.Objects[].Key", "source": "identifier", "name": "Key" }
- ]
- }
- }
- },
- "waiters": {
- "Exists": {
- "waiterName": "ObjectExists",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" },
- { "target": "Key", "source": "identifier", "name": "Key" }
- ]
- },
- "NotExists": {
- "waiterName": "ObjectNotExists",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" },
- { "target": "Key", "source": "identifier", "name": "Key" }
- ]
- }
- },
- "has": {
- "Acl": {
- "resource": {
- "type": "ObjectAcl",
- "identifiers": [
- { "target": "BucketName", "source": "identifier", "name": "BucketName" },
- { "target": "ObjectKey", "source": "identifier", "name": "Key" }
- ]
- }
- },
- "Bucket": {
- "resource": {
- "type": "Bucket",
- "identifiers": [
- { "target": "Name", "source": "identifier", "name": "BucketName" }
- ]
- }
- },
- "MultipartUpload": {
- "resource": {
- "type": "MultipartUpload",
- "identifiers": [
- { "target": "BucketName", "source": "identifier", "name": "BucketName" },
- { "target": "ObjectKey", "source": "identifier", "name": "Key" },
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Version": {
- "resource": {
- "type": "ObjectVersion",
- "identifiers": [
- { "target": "BucketName", "source": "identifier", "name": "BucketName" },
- { "target": "ObjectKey", "source": "identifier", "name": "Key" },
- { "target": "Id", "source": "input" }
- ]
- }
- }
- }
- },
- "ObjectAcl": {
- "identifiers": [
- { "name": "BucketName" },
- { "name": "ObjectKey" }
- ],
- "shape": "GetObjectAclOutput",
- "load": {
- "request": {
- "operation": "GetObjectAcl",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" },
- { "target": "Key", "source": "identifier", "name": "ObjectKey" }
- ]
- },
- "path": "@"
- },
- "actions": {
- "Put": {
- "request": {
- "operation": "PutObjectAcl",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" },
- { "target": "Key", "source": "identifier", "name": "ObjectKey" }
- ]
- }
- }
- },
- "has": {
- "Object": {
- "resource": {
- "type": "Object",
- "identifiers": [
- { "target": "BucketName", "source": "identifier", "name": "BucketName" },
- { "target": "Key", "source": "identifier", "name": "ObjectKey" }
- ]
- }
- }
- }
- },
- "ObjectSummary": {
- "identifiers": [
- { "name": "BucketName" },
- { "name": "Key" }
- ],
- "shape": "Object",
- "actions": {
- "CopyFrom": {
- "request": {
- "operation": "CopyObject",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" },
- { "target": "Key", "source": "identifier", "name": "Key" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteObject",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" },
- { "target": "Key", "source": "identifier", "name": "Key" }
- ]
- }
- },
- "Get": {
- "request": {
- "operation": "GetObject",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" },
- { "target": "Key", "source": "identifier", "name": "Key" }
- ]
- }
- },
- "InitiateMultipartUpload": {
- "request": {
- "operation": "CreateMultipartUpload",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" },
- { "target": "Key", "source": "identifier", "name": "Key" }
- ]
- },
- "resource": {
- "type": "MultipartUpload",
- "identifiers": [
- { "target": "BucketName", "source": "identifier", "name": "BucketName" },
- { "target": "ObjectKey", "source": "identifier", "name": "Key" },
- { "target": "Id", "source": "response", "path": "UploadId" }
- ]
- }
- },
- "Put": {
- "request": {
- "operation": "PutObject",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" },
- { "target": "Key", "source": "identifier", "name": "Key" }
- ]
- }
- },
- "RestoreObject": {
- "request": {
- "operation": "RestoreObject",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" },
- { "target": "Key", "source": "identifier", "name": "Key" }
- ]
- }
- }
- },
- "batchActions": {
- "Delete": {
- "request": {
- "operation": "DeleteObjects",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" },
- { "target": "Delete.Objects[].Key", "source": "identifier", "name": "Key" }
- ]
- }
- }
- },
- "waiters": {
- "Exists": {
- "waiterName": "ObjectExists",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" },
- { "target": "Key", "source": "identifier", "name": "Key" }
- ]
- },
- "NotExists": {
- "waiterName": "ObjectNotExists",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" },
- { "target": "Key", "source": "identifier", "name": "Key" }
- ]
- }
- },
- "has": {
- "Acl": {
- "resource": {
- "type": "ObjectAcl",
- "identifiers": [
- { "target": "BucketName", "source": "identifier", "name": "BucketName" },
- { "target": "ObjectKey", "source": "identifier", "name": "Key" }
- ]
- }
- },
- "Bucket": {
- "resource": {
- "type": "Bucket",
- "identifiers": [
- { "target": "Name", "source": "identifier", "name": "BucketName" }
- ]
- }
- },
- "MultipartUpload": {
- "resource": {
- "type": "MultipartUpload",
- "identifiers": [
- { "target": "BucketName", "source": "identifier", "name": "BucketName" },
- { "target": "ObjectKey", "source": "identifier", "name": "Key" },
- { "target": "Id", "source": "input" }
- ]
- }
- },
- "Object": {
- "resource": {
- "type": "Object",
- "identifiers": [
- { "target": "BucketName", "source": "identifier", "name": "BucketName" },
- { "target": "Key", "source": "identifier", "name": "Key" }
- ]
- }
- },
- "Version": {
- "resource": {
- "type": "ObjectVersion",
- "identifiers": [
- { "target": "BucketName", "source": "identifier", "name": "BucketName" },
- { "target": "ObjectKey", "source": "identifier", "name": "Key" },
- { "target": "Id", "source": "input" }
- ]
- }
- }
- }
- },
- "ObjectVersion": {
- "identifiers": [
- { "name": "BucketName" },
- { "name": "ObjectKey" },
- { "name": "Id" }
- ],
- "shape": "ObjectVersion",
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeleteObject",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" },
- { "target": "Key", "source": "identifier", "name": "ObjectKey" },
- { "target": "VersionId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Get": {
- "request": {
- "operation": "GetObject",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" },
- { "target": "Key", "source": "identifier", "name": "ObjectKey" },
- { "target": "VersionId", "source": "identifier", "name": "Id" }
- ]
- }
- },
- "Head": {
- "request": {
- "operation": "HeadObject",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" },
- { "target": "Key", "source": "identifier", "name": "ObjectKey" },
- { "target": "VersionId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "batchActions": {
- "Delete": {
- "request": {
- "operation": "DeleteObjects",
- "params": [
- { "target": "Bucket", "source": "identifier", "name": "BucketName" },
- { "target": "Delete.Objects[*].Key", "source": "identifier", "name": "ObjectKey" },
- { "target": "Delete.Objects[*].VersionId", "source": "identifier", "name": "Id" }
- ]
- }
- }
- },
- "has": {
- "Object": {
- "resource": {
- "type": "Object",
- "identifiers": [
- { "target": "BucketName", "source": "identifier", "name": "BucketName" },
- { "target": "Key", "source": "identifier", "name": "ObjectKey" }
- ]
- }
- }
- }
- }
- }
-}
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/sns/2010-03-31/resources-1.json b/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/sns/2010-03-31/resources-1.json
deleted file mode 100644
index cee300a8..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/sns/2010-03-31/resources-1.json
+++ /dev/null
@@ -1,327 +0,0 @@
-{
- "service": {
- "actions": {
- "CreatePlatformApplication": {
- "request": { "operation": "CreatePlatformApplication" },
- "resource": {
- "type": "PlatformApplication",
- "identifiers": [
- { "target": "Arn", "source": "response", "path": "PlatformApplicationArn" }
- ]
- }
- },
- "CreateTopic": {
- "request": { "operation": "CreateTopic" },
- "resource": {
- "type": "Topic",
- "identifiers": [
- { "target": "Arn", "source": "response", "path": "TopicArn" }
- ]
- }
- }
- },
- "has": {
- "PlatformApplication": {
- "resource": {
- "type": "PlatformApplication",
- "identifiers": [
- { "target": "Arn", "source": "input" }
- ]
- }
- },
- "PlatformEndpoint": {
- "resource": {
- "type": "PlatformEndpoint",
- "identifiers": [
- { "target": "Arn", "source": "input" }
- ]
- }
- },
- "Subscription": {
- "resource": {
- "type": "Subscription",
- "identifiers": [
- { "target": "Arn", "source": "input" }
- ]
- }
- },
- "Topic": {
- "resource": {
- "type": "Topic",
- "identifiers": [
- { "target": "Arn", "source": "input" }
- ]
- }
- }
- },
- "hasMany": {
- "PlatformApplications": {
- "request": { "operation": "ListPlatformApplications" },
- "resource": {
- "type": "PlatformApplication",
- "identifiers": [
- { "target": "Arn", "source": "response", "path": "PlatformApplications[].PlatformApplicationArn" }
- ]
- }
- },
- "Subscriptions": {
- "request": { "operation": "ListSubscriptions" },
- "resource": {
- "type": "Subscription",
- "identifiers": [
- { "target": "Arn", "source": "response", "path": "Subscriptions[].SubscriptionArn" }
- ]
- }
- },
- "Topics": {
- "request": { "operation": "ListTopics" },
- "resource": {
- "type": "Topic",
- "identifiers": [
- { "target": "Arn", "source": "response", "path": "Topics[].TopicArn" }
- ]
- }
- }
- }
- },
- "resources": {
- "PlatformApplication": {
- "identifiers": [
- { "name": "Arn" }
- ],
- "shape": "GetPlatformApplicationAttributesResponse",
- "load": {
- "request": {
- "operation": "GetPlatformApplicationAttributes",
- "params": [
- { "target": "PlatformApplicationArn", "source": "identifier", "name": "Arn" }
- ]
- },
- "path": "@"
- },
- "actions": {
- "CreatePlatformEndpoint": {
- "request": {
- "operation": "CreatePlatformEndpoint",
- "params": [
- { "target": "PlatformApplicationArn", "source": "identifier", "name": "Arn" }
- ]
- },
- "resource": {
- "type": "PlatformEndpoint",
- "identifiers": [
- { "target": "Arn", "source": "response", "path": "EndpointArn" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeletePlatformApplication",
- "params": [
- { "target": "PlatformApplicationArn", "source": "identifier", "name": "Arn" }
- ]
- }
- },
- "SetAttributes": {
- "request": {
- "operation": "SetPlatformApplicationAttributes",
- "params": [
- { "target": "PlatformApplicationArn", "source": "identifier", "name": "Arn" }
- ]
- }
- }
- },
- "hasMany": {
- "Endpoints": {
- "request": {
- "operation": "ListEndpointsByPlatformApplication",
- "params": [
- { "target": "PlatformApplicationArn", "source": "identifier", "name": "Arn" }
- ]
- },
- "resource": {
- "type": "PlatformEndpoint",
- "identifiers": [
- { "target": "Arn", "source": "response", "path": "Endpoints[].EndpointArn" }
- ]
- }
- }
- }
- },
- "PlatformEndpoint": {
- "identifiers": [
- { "name": "Arn" }
- ],
- "shape": "GetEndpointAttributesResponse",
- "load": {
- "request": {
- "operation": "GetEndpointAttributes",
- "params": [
- { "target": "EndpointArn", "source": "identifier", "name": "Arn" }
- ]
- },
- "path": "@"
- },
- "actions": {
- "Delete": {
- "request": {
- "operation": "DeleteEndpoint",
- "params": [
- { "target": "EndpointArn", "source": "identifier", "name": "Arn" }
- ]
- }
- },
- "Publish": {
- "request": {
- "operation": "Publish",
- "params": [
- { "target": "TargetArn", "source": "identifier", "name": "Arn" }
- ]
- }
- },
- "SetAttributes": {
- "request": {
- "operation": "SetEndpointAttributes",
- "params": [
- { "target": "EndpointArn", "source": "identifier", "name": "Arn" }
- ]
- }
- }
- }
- },
- "Subscription": {
- "identifiers": [
- { "name": "Arn" }
- ],
- "shape": "GetSubscriptionAttributesResponse",
- "load": {
- "request": {
- "operation": "GetSubscriptionAttributes",
- "params": [
- { "target": "SubscriptionArn", "source": "identifier", "name": "Arn" }
- ]
- },
- "path": "@"
- },
- "actions": {
- "Delete": {
- "request": {
- "operation": "Unsubscribe",
- "params": [
- { "target": "SubscriptionArn", "source": "identifier", "name": "Arn" }
- ]
- }
- },
- "SetAttributes": {
- "request": {
- "operation": "SetSubscriptionAttributes",
- "params": [
- { "target": "SubscriptionArn", "source": "identifier", "name": "Arn" }
- ]
- }
- }
- }
- },
- "Topic": {
- "identifiers": [
- { "name": "Arn" }
- ],
- "shape": "GetTopicAttributesResponse",
- "load": {
- "request": {
- "operation": "GetTopicAttributes",
- "params": [
- { "target": "TopicArn", "source": "identifier", "name": "Arn" }
- ]
- },
- "path": "@"
- },
- "actions": {
- "AddPermission": {
- "request": {
- "operation": "AddPermission",
- "params": [
- { "target": "TopicArn", "source": "identifier", "name": "Arn" }
- ]
- }
- },
- "ConfirmSubscription": {
- "request": {
- "operation": "ConfirmSubscription",
- "params": [
- { "target": "TopicArn", "source": "identifier", "name": "Arn" }
- ]
- },
- "resource": {
- "type": "Subscription",
- "identifiers": [
- { "target": "Arn", "source": "response", "path": "SubscriptionArn" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteTopic",
- "params": [
- { "target": "TopicArn", "source": "identifier", "name": "Arn" }
- ]
- }
- },
- "Publish": {
- "request": {
- "operation": "Publish",
- "params": [
- { "target": "TopicArn", "source": "identifier", "name": "Arn" }
- ]
- }
- },
- "RemovePermission": {
- "request": {
- "operation": "RemovePermission",
- "params": [
- { "target": "TopicArn", "source": "identifier", "name": "Arn" }
- ]
- }
- },
- "SetAttributes": {
- "request": {
- "operation": "SetTopicAttributes",
- "params": [
- { "target": "TopicArn", "source": "identifier", "name": "Arn" }
- ]
- }
- },
- "Subscribe": {
- "request": {
- "operation": "Subscribe",
- "params": [
- { "target": "TopicArn", "source": "identifier", "name": "Arn" }
- ]
- },
- "resource": {
- "type": "Subscription",
- "identifiers": [
- { "target": "Arn", "source": "response", "path": "SubscriptionArn" }
- ]
- }
- }
- },
- "hasMany": {
- "Subscriptions": {
- "request": {
- "operation": "ListSubscriptionsByTopic",
- "params": [
- { "target": "TopicArn", "source": "identifier", "name": "Arn" }
- ]
- },
- "resource": {
- "type": "Subscription",
- "identifiers": [
- { "target": "Arn", "source": "response", "path": "Subscriptions[].SubscriptionArn" }
- ]
- }
- }
- }
- }
- }
-}
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/sqs/2012-11-05/resources-1.json b/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/sqs/2012-11-05/resources-1.json
deleted file mode 100644
index b1e74ab0..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/data/sqs/2012-11-05/resources-1.json
+++ /dev/null
@@ -1,232 +0,0 @@
-{
- "service": {
- "actions": {
- "CreateQueue": {
- "request": { "operation": "CreateQueue" },
- "resource": {
- "type": "Queue",
- "identifiers": [
- { "target": "Url", "source": "response", "path": "QueueUrl" }
- ]
- }
- },
- "GetQueueByName": {
- "request": { "operation": "GetQueueUrl" },
- "resource": {
- "type": "Queue",
- "identifiers": [
- { "target": "Url", "source": "response", "path": "QueueUrl" }
- ]
- }
- }
- },
- "has": {
- "Queue": {
- "resource": {
- "type": "Queue",
- "identifiers": [
- { "target": "Url", "source": "input" }
- ]
- }
- }
- },
- "hasMany": {
- "Queues": {
- "request": { "operation": "ListQueues" },
- "resource": {
- "type": "Queue",
- "identifiers": [
- { "target": "Url", "source": "response", "path": "QueueUrls[]" }
- ]
- }
- }
- }
- },
- "resources": {
- "Message": {
- "identifiers": [
- { "name": "QueueUrl" },
- {
- "name": "ReceiptHandle",
- "memberName": "ReceiptHandle"
- }
- ],
- "shape": "Message",
- "actions": {
- "ChangeVisibility": {
- "request": {
- "operation": "ChangeMessageVisibility",
- "params": [
- { "target": "QueueUrl", "source": "identifier", "name": "QueueUrl" },
- { "target": "ReceiptHandle", "source": "identifier", "name": "ReceiptHandle" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteMessage",
- "params": [
- { "target": "QueueUrl", "source": "identifier", "name": "QueueUrl" },
- { "target": "ReceiptHandle", "source": "identifier", "name": "ReceiptHandle" }
- ]
- }
- }
- },
- "batchActions": {
- "Delete": {
- "request": {
- "operation": "DeleteMessageBatch",
- "params": [
- { "target": "QueueUrl", "source": "identifier", "name": "QueueUrl" },
- { "target": "Entries[*].Id", "source": "data", "path": "MessageId" },
- { "target": "Entries[*].ReceiptHandle", "source": "identifier", "name": "ReceiptHandle" }
- ]
- }
- }
- },
- "has": {
- "Queue": {
- "resource": {
- "type": "Queue",
- "identifiers": [
- { "target": "Url", "source": "identifier", "name": "QueueUrl" }
- ]
- }
- }
- }
- },
- "Queue": {
- "identifiers": [
- { "name": "Url" }
- ],
- "shape": "GetQueueAttributesResult",
- "load": {
- "request": {
- "operation": "GetQueueAttributes",
- "params": [
- { "target": "QueueUrl", "source": "identifier", "name": "Url" },
- { "target": "AttributeNames[]", "source": "string", "value": "All" }
- ]
- },
- "path": "@"
- },
- "actions": {
- "AddPermission": {
- "request": {
- "operation": "AddPermission",
- "params": [
- { "target": "QueueUrl", "source": "identifier", "name": "Url" }
- ]
- }
- },
- "ChangeMessageVisibilityBatch": {
- "request": {
- "operation": "ChangeMessageVisibilityBatch",
- "params": [
- { "target": "QueueUrl", "source": "identifier", "name": "Url" }
- ]
- }
- },
- "Delete": {
- "request": {
- "operation": "DeleteQueue",
- "params": [
- { "target": "QueueUrl", "source": "identifier", "name": "Url" }
- ]
- }
- },
- "DeleteMessages": {
- "request": {
- "operation": "DeleteMessageBatch",
- "params": [
- { "target": "QueueUrl", "source": "identifier", "name": "Url" }
- ]
- }
- },
- "Purge": {
- "request": {
- "operation": "PurgeQueue",
- "params": [
- { "target": "QueueUrl", "source": "identifier", "name": "Url" }
- ]
- }
- },
- "ReceiveMessages": {
- "request": {
- "operation": "ReceiveMessage",
- "params": [
- { "target": "QueueUrl", "source": "identifier", "name": "Url" }
- ]
- },
- "resource": {
- "type": "Message",
- "identifiers": [
- { "target": "QueueUrl", "source": "identifier", "name": "Url" },
- { "target": "ReceiptHandle", "source": "response", "path": "Messages[].ReceiptHandle" }
- ],
- "path": "Messages[]"
- }
- },
- "RemovePermission": {
- "request": {
- "operation": "RemovePermission",
- "params": [
- { "target": "QueueUrl", "source": "identifier", "name": "Url" }
- ]
- }
- },
- "SendMessage": {
- "request": {
- "operation": "SendMessage",
- "params": [
- { "target": "QueueUrl", "source": "identifier", "name": "Url" }
- ]
- }
- },
- "SendMessages": {
- "request": {
- "operation": "SendMessageBatch",
- "params": [
- { "target": "QueueUrl", "source": "identifier", "name": "Url" }
- ]
- }
- },
- "SetAttributes": {
- "request": {
- "operation": "SetQueueAttributes",
- "params": [
- { "target": "QueueUrl", "source": "identifier", "name": "Url" }
- ]
- }
- }
- },
- "has": {
- "Message": {
- "resource": {
- "type": "Message",
- "identifiers": [
- { "target": "QueueUrl", "source": "identifier", "name": "Url" },
- { "target": "ReceiptHandle", "source": "input" }
- ]
- }
- }
- },
- "hasMany": {
- "DeadLetterSourceQueues": {
- "request": {
- "operation": "ListDeadLetterSourceQueues",
- "params": [
- { "target": "QueueUrl", "source": "identifier", "name": "Url" }
- ]
- },
- "resource": {
- "type": "Queue",
- "identifiers": [
- { "target": "Url", "source": "response", "path": "queueUrls[]" }
- ]
- }
- }
- }
- }
- }
-}
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/docs/__init__.py b/.eggs/boto3-1.7.75-py2.7.egg/boto3/docs/__init__.py
deleted file mode 100644
index c18c86e1..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/docs/__init__.py
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"). You
-# may not use this file except in compliance with the License. A copy of
-# the License is located at
-#
-# http://aws.amazon.com/apache2.0/
-#
-# or in the "license" file accompanying this file. This file 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.
-import os
-
-from boto3.docs.service import ServiceDocumenter
-
-
-def generate_docs(root_dir, session):
- """Generates the reference documentation for botocore
-
- This will go through every available AWS service and output ReSTructured
- text files documenting each service.
-
- :param root_dir: The directory to write the reference files to. Each
- service's reference documentation is loacated at
- root_dir/reference/services/service-name.rst
-
- :param session: The boto3 session
- """
- services_doc_path = os.path.join(root_dir, 'reference', 'services')
- if not os.path.exists(services_doc_path):
- os.makedirs(services_doc_path)
-
- for service_name in session.get_available_services():
- docs = ServiceDocumenter(service_name, session).document_service()
- service_doc_path = os.path.join(
- services_doc_path, service_name + '.rst')
- with open(service_doc_path, 'wb') as f:
- f.write(docs)
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/docs/action.py b/.eggs/boto3-1.7.75-py2.7.egg/boto3/docs/action.py
deleted file mode 100644
index a1a51ccd..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/docs/action.py
+++ /dev/null
@@ -1,148 +0,0 @@
-# Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"). You
-# may not use this file except in compliance with the License. A copy of
-# the License is located at
-#
-# http://aws.amazon.com/apache2.0/
-#
-# or in the "license" file accompanying this file. This file 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.
-from botocore import xform_name
-from botocore.model import OperationModel
-from botocore.utils import get_service_module_name
-from botocore.docs.method import document_model_driven_method
-from botocore.docs.method import document_custom_method
-
-from boto3.docs.base import BaseDocumenter
-from boto3.docs.method import document_model_driven_resource_method
-from boto3.docs.utils import get_resource_ignore_params
-from boto3.docs.utils import get_resource_public_actions
-from boto3.docs.utils import add_resource_type_overview
-
-
-class ActionDocumenter(BaseDocumenter):
- def document_actions(self, section):
- modeled_actions_list = self._resource_model.actions
- modeled_actions = {}
- for modeled_action in modeled_actions_list:
- modeled_actions[modeled_action.name] = modeled_action
- resource_actions = get_resource_public_actions(
- self._resource.__class__)
- self.member_map['actions'] = sorted(resource_actions)
- add_resource_type_overview(
- section=section,
- resource_type='Actions',
- description=(
- 'Actions call operations on resources. They may '
- 'automatically handle the passing in of arguments set '
- 'from identifiers and some attributes.'),
- intro_link='actions_intro')
-
- for action_name in sorted(resource_actions):
- action_section = section.add_new_section(action_name)
- if action_name in ['load', 'reload'] and self._resource_model.load:
- document_load_reload_action(
- section=action_section,
- action_name=action_name,
- resource_name=self._resource_name,
- event_emitter=self._resource.meta.client.meta.events,
- load_model=self._resource_model.load,
- service_model=self._service_model
- )
- elif action_name in modeled_actions:
- document_action(
- section=action_section,
- resource_name=self._resource_name,
- event_emitter=self._resource.meta.client.meta.events,
- action_model=modeled_actions[action_name],
- service_model=self._service_model,
- )
- else:
- document_custom_method(
- action_section, action_name, resource_actions[action_name])
-
-
-def document_action(section, resource_name, event_emitter, action_model,
- service_model, include_signature=True):
- """Documents a resource action
-
- :param section: The section to write to
-
- :param resource_name: The name of the resource
-
- :param event_emitter: The event emitter to use to emit events
-
- :param action_model: The model of the action
-
- :param service_model: The model of the service
-
- :param include_signature: Whether or not to include the signature.
- It is useful for generating docstrings.
- """
- operation_model = service_model.operation_model(
- action_model.request.operation)
- ignore_params = get_resource_ignore_params(action_model.request.params)
-
- example_return_value = 'response'
- if action_model.resource:
- example_return_value = xform_name(action_model.resource.type)
- example_resource_name = xform_name(resource_name)
- if service_model.service_name == resource_name:
- example_resource_name = resource_name
- example_prefix = '%s = %s.%s' % (
- example_return_value, example_resource_name, action_model.name)
- document_model_driven_resource_method(
- section=section, method_name=action_model.name,
- operation_model=operation_model,
- event_emitter=event_emitter,
- method_description=operation_model.documentation,
- example_prefix=example_prefix,
- exclude_input=ignore_params,
- resource_action_model=action_model,
- include_signature=include_signature
- )
-
-
-def document_load_reload_action(section, action_name, resource_name,
- event_emitter, load_model, service_model,
- include_signature=True):
- """Documents the resource load action
-
- :param section: The section to write to
-
- :param action_name: The name of the loading action should be load or reload
-
- :param resource_name: The name of the resource
-
- :param event_emitter: The event emitter to use to emit events
-
- :param load_model: The model of the load action
-
- :param service_model: The model of the service
-
- :param include_signature: Whether or not to include the signature.
- It is useful for generating docstrings.
- """
- description = (
- 'Calls :py:meth:`%s.Client.%s` to update the attributes of the'
- ' %s resource. Note that the load and reload methods are '
- 'the same method and can be used interchangeably.' % (
- get_service_module_name(service_model),
- xform_name(load_model.request.operation),
- resource_name)
- )
- example_resource_name = xform_name(resource_name)
- if service_model.service_name == resource_name:
- example_resource_name = resource_name
- example_prefix = '%s.%s' % (example_resource_name, action_name)
- document_model_driven_method(
- section=section, method_name=action_name,
- operation_model=OperationModel({}, service_model),
- event_emitter=event_emitter,
- method_description=description,
- example_prefix=example_prefix,
- include_signature=include_signature
- )
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/docs/attr.py b/.eggs/boto3-1.7.75-py2.7.egg/boto3/docs/attr.py
deleted file mode 100644
index 4ebbc7d5..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/docs/attr.py
+++ /dev/null
@@ -1,54 +0,0 @@
-# Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"). You
-# may not use this file except in compliance with the License. A copy of
-# the License is located at
-#
-# http://aws.amazon.com/apache2.0/
-#
-# or in the "license" file accompanying this file. This file 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.
-from botocore.docs.params import ResponseParamsDocumenter
-
-from boto3.docs.utils import get_identifier_description
-
-
-class ResourceShapeDocumenter(ResponseParamsDocumenter):
- EVENT_NAME = 'resource-shape'
-
-
-def document_attribute(section, service_name, resource_name, attr_name,
- event_emitter, attr_model, include_signature=True):
- if include_signature:
- section.style.start_sphinx_py_attr(attr_name)
- # Note that an attribute may have one, may have many, or may have no
- # operations that back the resource's shape. So we just set the
- # operation_name to the resource name if we ever to hook in and modify
- # a particular attribute.
- ResourceShapeDocumenter(
- service_name=service_name, operation_name=resource_name,
- event_emitter=event_emitter).document_params(
- section=section,
- shape=attr_model)
-
-
-def document_identifier(section, resource_name, identifier_model,
- include_signature=True):
- if include_signature:
- section.style.start_sphinx_py_attr(identifier_model.name)
- description = get_identifier_description(
- resource_name, identifier_model.name)
- description = '*(string)* ' + description
- section.write(description)
-
-
-def document_reference(section, reference_model, include_signature=True):
- if include_signature:
- section.style.start_sphinx_py_attr(reference_model.name)
- reference_type = '(:py:class:`%s`) ' % reference_model.resource.type
- section.write(reference_type)
- section.include_doc_string(
- 'The related %s if set, otherwise ``None``.' % reference_model.name
- )
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/docs/base.py b/.eggs/boto3-1.7.75-py2.7.egg/boto3/docs/base.py
deleted file mode 100644
index 1ebd4222..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/docs/base.py
+++ /dev/null
@@ -1,31 +0,0 @@
-# Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"). You
-# may not use this file except in compliance with the License. A copy of
-# the License is located at
-#
-# http://aws.amazon.com/apache2.0/
-#
-# or in the "license" file accompanying this file. This file 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.
-from botocore.compat import OrderedDict
-
-
-class BaseDocumenter(object):
- def __init__(self, resource):
- self._resource = resource
- self._client = self._resource.meta.client
- self._resource_model = self._resource.meta.resource_model
- self._service_model = self._client.meta.service_model
- self._resource_name = self._resource.meta.resource_model.name
- self._service_name = self._service_model.service_name
- self._service_docs_name = self._client.__class__.__name__
- self.member_map = OrderedDict()
- self.represents_service_resource = (
- self._service_name == self._resource_name)
-
- @property
- def class_name(self):
- return '%s.%s' % (self._service_docs_name, self._resource_name)
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/docs/client.py b/.eggs/boto3-1.7.75-py2.7.egg/boto3/docs/client.py
deleted file mode 100644
index 7db8c1f1..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/docs/client.py
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"). You
-# may not use this file except in compliance with the License. A copy of
-# the License is located at
-#
-# http://aws.amazon.com/apache2.0/
-#
-# or in the "license" file accompanying this file. This file 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.
-from botocore.docs.client import ClientDocumenter
-
-
-class Boto3ClientDocumenter(ClientDocumenter):
- def _add_client_creation_example(self, section):
- section.style.start_codeblock()
- section.style.new_line()
- section.write('import boto3')
- section.style.new_line()
- section.style.new_line()
- section.write(
- 'client = boto3.client(\'{service}\')'.format(
- service=self._service_name)
- )
- section.style.end_codeblock()
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/docs/collection.py b/.eggs/boto3-1.7.75-py2.7.egg/boto3/docs/collection.py
deleted file mode 100644
index 1825ec24..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/docs/collection.py
+++ /dev/null
@@ -1,234 +0,0 @@
-# Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"). You
-# may not use this file except in compliance with the License. A copy of
-# the License is located at
-#
-# http://aws.amazon.com/apache2.0/
-#
-# or in the "license" file accompanying this file. This file 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.
-from botocore import xform_name
-from botocore.docs.method import get_instance_public_methods
-from botocore.docs.utils import DocumentedShape
-
-from boto3.docs.base import BaseDocumenter
-from boto3.docs.utils import get_resource_ignore_params
-from boto3.docs.method import document_model_driven_resource_method
-from boto3.docs.utils import add_resource_type_overview
-
-
-class CollectionDocumenter(BaseDocumenter):
- def document_collections(self, section):
- collections = self._resource.meta.resource_model.collections
- collections_list = []
- add_resource_type_overview(
- section=section,
- resource_type='Collections',
- description=(
- 'Collections provide an interface to iterate over and '
- 'manipulate groups of resources. '),
- intro_link='guide_collections')
- self.member_map['collections'] = collections_list
- for collection in collections:
- collection_section = section.add_new_section(collection.name)
- collections_list.append(collection.name)
- self._document_collection(collection_section, collection)
-
- def _document_collection(self, section, collection):
- methods = get_instance_public_methods(
- getattr(self._resource, collection.name))
- document_collection_object(section, collection)
- batch_actions = {}
- for batch_action in collection.batch_actions:
- batch_actions[batch_action.name] = batch_action
-
- for method in sorted(methods):
- method_section = section.add_new_section(method)
- if method in batch_actions:
- document_batch_action(
- section=method_section,
- resource_name=self._resource_name,
- event_emitter=self._resource.meta.client.meta.events,
- batch_action_model=batch_actions[method],
- collection_model=collection,
- service_model=self._resource.meta.client.meta.service_model
- )
- else:
- document_collection_method(
- section=method_section,
- resource_name=self._resource_name,
- action_name=method,
- event_emitter=self._resource.meta.client.meta.events,
- collection_model=collection,
- service_model=self._resource.meta.client.meta.service_model
- )
-
-
-def document_collection_object(section, collection_model,
- include_signature=True):
- """Documents a collection resource object
-
- :param section: The section to write to
-
- :param collection_model: The model of the collection
-
- :param include_signature: Whether or not to include the signature.
- It is useful for generating docstrings.
- """
- if include_signature:
- section.style.start_sphinx_py_attr(collection_model.name)
- section.include_doc_string(
- 'A collection of %s resources' % collection_model.resource.type)
-
-
-def document_batch_action(section, resource_name, event_emitter,
- batch_action_model, service_model, collection_model,
- include_signature=True):
- """Documents a collection's batch action
-
- :param section: The section to write to
-
- :param resource_name: The name of the resource
-
- :param action_name: The name of collection action. Currently only
- can be all, filter, limit, or page_size
-
- :param event_emitter: The event emitter to use to emit events
-
- :param batch_action_model: The model of the batch action
-
- :param collection_model: The model of the collection
-
- :param service_model: The model of the service
-
- :param include_signature: Whether or not to include the signature.
- It is useful for generating docstrings.
- """
- operation_model = service_model.operation_model(
- batch_action_model.request.operation)
- ignore_params = get_resource_ignore_params(
- batch_action_model.request.params)
-
- example_return_value = 'response'
- if batch_action_model.resource:
- example_return_value = xform_name(batch_action_model.resource.type)
-
- example_resource_name = xform_name(resource_name)
- if service_model.service_name == resource_name:
- example_resource_name = resource_name
- example_prefix = '%s = %s.%s.%s' % (
- example_return_value, example_resource_name,
- collection_model.name, batch_action_model.name
- )
- document_model_driven_resource_method(
- section=section, method_name=batch_action_model.name,
- operation_model=operation_model,
- event_emitter=event_emitter,
- method_description=operation_model.documentation,
- example_prefix=example_prefix,
- exclude_input=ignore_params,
- resource_action_model=batch_action_model,
- include_signature=include_signature
- )
-
-
-def document_collection_method(section, resource_name, action_name,
- event_emitter, collection_model, service_model,
- include_signature=True):
- """Documents a collection method
-
- :param section: The section to write to
-
- :param resource_name: The name of the resource
-
- :param action_name: The name of collection action. Currently only
- can be all, filter, limit, or page_size
-
- :param event_emitter: The event emitter to use to emit events
-
- :param collection_model: The model of the collection
-
- :param service_model: The model of the service
-
- :param include_signature: Whether or not to include the signature.
- It is useful for generating docstrings.
- """
- operation_model = service_model.operation_model(
- collection_model.request.operation)
-
- underlying_operation_members = []
- if operation_model.input_shape:
- underlying_operation_members = operation_model.input_shape.members
-
- example_resource_name = xform_name(resource_name)
- if service_model.service_name == resource_name:
- example_resource_name = resource_name
-
- custom_action_info_dict = {
- 'all': {
- 'method_description': (
- 'Creates an iterable of all %s resources '
- 'in the collection.' % collection_model.resource.type),
- 'example_prefix': '%s_iterator = %s.%s.all' % (
- xform_name(collection_model.resource.type),
- example_resource_name, collection_model.name),
- 'exclude_input': underlying_operation_members
- },
- 'filter': {
- 'method_description': (
- 'Creates an iterable of all %s resources '
- 'in the collection filtered by kwargs passed to '
- 'method.' % collection_model.resource.type),
- 'example_prefix': '%s_iterator = %s.%s.filter' % (
- xform_name(collection_model.resource.type),
- example_resource_name, collection_model.name),
- 'exclude_input': get_resource_ignore_params(
- collection_model.request.params)
- },
- 'limit': {
- 'method_description': (
- 'Creates an iterable up to a specified amount of '
- '%s resources in the collection.' %
- collection_model.resource.type),
- 'example_prefix': '%s_iterator = %s.%s.limit' % (
- xform_name(collection_model.resource.type),
- example_resource_name, collection_model.name),
- 'include_input': [
- DocumentedShape(
- name='count', type_name='integer',
- documentation=(
- 'The limit to the number of resources '
- 'in the iterable.'))],
- 'exclude_input': underlying_operation_members
- },
- 'page_size': {
- 'method_description': (
- 'Creates an iterable of all %s resources '
- 'in the collection, but limits the number of '
- 'items returned by each service call by the specified '
- 'amount.' % collection_model.resource.type),
- 'example_prefix': '%s_iterator = %s.%s.page_size' % (
- xform_name(collection_model.resource.type),
- example_resource_name, collection_model.name),
- 'include_input': [
- DocumentedShape(
- name='count', type_name='integer',
- documentation=(
- 'The number of items returned by each '
- 'service call'))],
- 'exclude_input': underlying_operation_members
- }
- }
- if action_name in custom_action_info_dict:
- action_info = custom_action_info_dict[action_name]
- document_model_driven_resource_method(
- section=section, method_name=action_name,
- operation_model=operation_model,
- event_emitter=event_emitter,
- resource_action_model=collection_model,
- include_signature=include_signature,
- **action_info
- )
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/docs/docstring.py b/.eggs/boto3-1.7.75-py2.7.egg/boto3/docs/docstring.py
deleted file mode 100644
index 9dd4d396..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/docs/docstring.py
+++ /dev/null
@@ -1,74 +0,0 @@
-# Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"). You
-# may not use this file except in compliance with the License. A copy of
-# the License is located at
-#
-# http://aws.amazon.com/apache2.0/
-#
-# or in the "license" file accompanying this file. This file 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.
-from botocore.docs.docstring import LazyLoadedDocstring
-
-from boto3.docs.action import document_action
-from boto3.docs.action import document_load_reload_action
-from boto3.docs.subresource import document_sub_resource
-from boto3.docs.attr import document_attribute
-from boto3.docs.attr import document_identifier
-from boto3.docs.attr import document_reference
-from boto3.docs.collection import document_collection_object
-from boto3.docs.collection import document_collection_method
-from boto3.docs.collection import document_batch_action
-from boto3.docs.waiter import document_resource_waiter
-
-
-class ActionDocstring(LazyLoadedDocstring):
- def _write_docstring(self, *args, **kwargs):
- document_action(*args, **kwargs)
-
-
-class LoadReloadDocstring(LazyLoadedDocstring):
- def _write_docstring(self, *args, **kwargs):
- document_load_reload_action(*args, **kwargs)
-
-
-class SubResourceDocstring(LazyLoadedDocstring):
- def _write_docstring(self, *args, **kwargs):
- document_sub_resource(*args, **kwargs)
-
-
-class AttributeDocstring(LazyLoadedDocstring):
- def _write_docstring(self, *args, **kwargs):
- document_attribute(*args, **kwargs)
-
-
-class IdentifierDocstring(LazyLoadedDocstring):
- def _write_docstring(self, *args, **kwargs):
- document_identifier(*args, **kwargs)
-
-
-class ReferenceDocstring(LazyLoadedDocstring):
- def _write_docstring(self, *args, **kwargs):
- document_reference(*args, **kwargs)
-
-
-class CollectionDocstring(LazyLoadedDocstring):
- def _write_docstring(self, *args, **kwargs):
- document_collection_object(*args, **kwargs)
-
-
-class CollectionMethodDocstring(LazyLoadedDocstring):
- def _write_docstring(self, *args, **kwargs):
- document_collection_method(*args, **kwargs)
-
-
-class BatchActionDocstring(LazyLoadedDocstring):
- def _write_docstring(self, *args, **kwargs):
- document_batch_action(*args, **kwargs)
-
-
-class ResourceWaiterDocstring(LazyLoadedDocstring):
- def _write_docstring(self, *args, **kwargs):
- document_resource_waiter(*args, **kwargs)
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/docs/method.py b/.eggs/boto3-1.7.75-py2.7.egg/boto3/docs/method.py
deleted file mode 100644
index fcc398c7..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/docs/method.py
+++ /dev/null
@@ -1,71 +0,0 @@
-# Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"). You
-# may not use this file except in compliance with the License. A copy of
-# the License is located at
-#
-# http://aws.amazon.com/apache2.0/
-#
-# or in the "license" file accompanying this file. This file 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.
-from botocore.docs.method import document_model_driven_method
-
-
-def document_model_driven_resource_method(
- section, method_name, operation_model, event_emitter,
- method_description=None, example_prefix=None, include_input=None,
- include_output=None, exclude_input=None, exclude_output=None,
- document_output=True, resource_action_model=None,
- include_signature=True):
-
- document_model_driven_method(
- section=section, method_name=method_name,
- operation_model=operation_model,
- event_emitter=event_emitter,
- method_description=method_description,
- example_prefix=example_prefix,
- include_input=include_input,
- include_output=include_output,
- exclude_input=exclude_input,
- exclude_output=exclude_output,
- document_output=document_output,
- include_signature=include_signature
- )
-
- # If this action returns a resource modify the return example to
- # appropriately reflect that.
- if resource_action_model.resource:
- if 'return' in section.available_sections:
- section.delete_section('return')
- resource_type = resource_action_model.resource.type
-
- new_return_section = section.add_new_section('return')
- return_resource_type = '%s.%s' % (
- operation_model.service_model.service_name,
- resource_type)
-
- return_type = ':py:class:`%s`' % return_resource_type
- return_description = '%s resource' % (resource_type)
-
- if _method_returns_resource_list(resource_action_model.resource):
- return_type = 'list(%s)' % return_type
- return_description = 'A list of %s resources' % (
- resource_type)
-
- new_return_section.style.new_line()
- new_return_section.write(
- ':rtype: %s' % return_type)
- new_return_section.style.new_line()
- new_return_section.write(
- ':returns: %s' % return_description)
- new_return_section.style.new_line()
-
-
-def _method_returns_resource_list(resource):
- for identifier in resource.identifiers:
- if identifier.path and '[]' in identifier.path:
- return True
-
- return False
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/docs/resource.py b/.eggs/boto3-1.7.75-py2.7.egg/boto3/docs/resource.py
deleted file mode 100644
index 17ecc0ae..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/docs/resource.py
+++ /dev/null
@@ -1,259 +0,0 @@
-# Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"). You
-# may not use this file except in compliance with the License. A copy of
-# the License is located at
-#
-# http://aws.amazon.com/apache2.0/
-#
-# or in the "license" file accompanying this file. This file 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.
-from botocore import xform_name
-from botocore.docs.utils import get_official_service_name
-
-from boto3.docs.base import BaseDocumenter
-from boto3.docs.action import ActionDocumenter
-from boto3.docs.waiter import WaiterResourceDocumenter
-from boto3.docs.collection import CollectionDocumenter
-from boto3.docs.subresource import SubResourceDocumenter
-from boto3.docs.attr import document_attribute
-from boto3.docs.attr import document_identifier
-from boto3.docs.attr import document_reference
-from boto3.docs.utils import get_identifier_args_for_signature
-from boto3.docs.utils import get_identifier_values_for_example
-from boto3.docs.utils import get_identifier_description
-from boto3.docs.utils import add_resource_type_overview
-
-
-class ResourceDocumenter(BaseDocumenter):
- def __init__(self, resource, botocore_session):
- super(ResourceDocumenter, self).__init__(resource)
- self._botocore_session = botocore_session
-
- def document_resource(self, section):
- self._add_title(section)
- self._add_intro(section)
- overview_section = section.add_new_section('member-overview')
- self._add_identifiers(section)
- self._add_attributes(section)
- self._add_references(section)
- self._add_actions(section)
- self._add_sub_resources(section)
- self._add_collections(section)
- self._add_waiters(section)
- self._add_overview_of_members(overview_section)
-
- def _add_title(self, section):
- section.style.h2(self._resource_name)
-
- def _add_intro(self, section):
- identifier_names = []
- if self._resource_model.identifiers:
- for identifier in self._resource_model.identifiers:
- identifier_names.append(identifier.name)
-
- # Write out the class signature.
- class_args = get_identifier_args_for_signature(identifier_names)
- section.style.start_sphinx_py_class(
- class_name='%s(%s)' % (self.class_name, class_args))
-
- # Add as short description about the resource
- description_section = section.add_new_section('description')
- self._add_description(description_section)
-
- # Add an example of how to instantiate the resource
- example_section = section.add_new_section('example')
- self._add_example(example_section, identifier_names)
-
- # Add the description for the parameters to instantiate the
- # resource.
- param_section = section.add_new_section('params')
- self._add_params_description(param_section, identifier_names)
-
- def _add_description(self, section):
- official_service_name = get_official_service_name(
- self._service_model)
- section.write(
- 'A resource representing an %s %s' % (
- official_service_name, self._resource_name))
-
- def _add_example(self, section, identifier_names):
- section.style.start_codeblock()
- section.style.new_line()
- section.write('import boto3')
- section.style.new_line()
- section.style.new_line()
- section.write(
- '%s = boto3.resource(\'%s\')' % (
- self._service_name, self._service_name)
- )
- section.style.new_line()
- example_values = get_identifier_values_for_example(identifier_names)
- section.write(
- '%s = %s.%s(%s)' % (
- xform_name(self._resource_name), self._service_name,
- self._resource_name, example_values))
- section.style.end_codeblock()
-
- def _add_params_description(self, section, identifier_names):
- for identifier_name in identifier_names:
- description = get_identifier_description(
- self._resource_name, identifier_name)
- section.write(':type %s: string' % identifier_name)
- section.style.new_line()
- section.write(':param %s: %s' % (
- identifier_name, description))
- section.style.new_line()
-
- def _add_overview_of_members(self, section):
- for resource_member_type in self.member_map:
- section.style.new_line()
- section.write('These are the resource\'s available %s:' % (
- resource_member_type))
- section.style.new_line()
- for member in self.member_map[resource_member_type]:
- if resource_member_type in ['identifiers', 'attributes',
- 'references', 'collections']:
- section.style.li(':py:attr:`%s`' % member)
- else:
- section.style.li(':py:meth:`%s()`' % member)
-
- def _add_identifiers(self, section):
- identifiers = self._resource.meta.resource_model.identifiers
- section = section.add_new_section('identifiers')
- member_list = []
- if identifiers:
- self.member_map['identifiers'] = member_list
- add_resource_type_overview(
- section=section,
- resource_type='Identifiers',
- description=(
- 'Identifiers are properties of a resource that are '
- 'set upon instantation of the resource.'),
- intro_link='identifiers_attributes_intro')
- for identifier in identifiers:
- identifier_section = section.add_new_section(identifier.name)
- member_list.append(identifier.name)
- document_identifier(
- section=identifier_section,
- resource_name=self._resource_name,
- identifier_model=identifier
- )
-
- def _add_attributes(self, section):
- service_model = self._resource.meta.client.meta.service_model
- attributes = {}
- if self._resource.meta.resource_model.shape:
- shape = service_model.shape_for(
- self._resource.meta.resource_model.shape)
- attributes = self._resource.meta.resource_model.get_attributes(
- shape)
- section = section.add_new_section('attributes')
- attribute_list = []
- if attributes:
- add_resource_type_overview(
- section=section,
- resource_type='Attributes',
- description=(
- 'Attributes provide access'
- ' to the properties of a resource. Attributes are lazy-'
- 'loaded the first time one is accessed via the'
- ' :py:meth:`load` method.'),
- intro_link='identifiers_attributes_intro')
- self.member_map['attributes'] = attribute_list
- for attr_name in sorted(attributes):
- _, attr_shape = attributes[attr_name]
- attribute_section = section.add_new_section(attr_name)
- attribute_list.append(attr_name)
- document_attribute(
- section=attribute_section,
- service_name=self._service_name,
- resource_name=self._resource_name,
- attr_name=attr_name,
- event_emitter=self._resource.meta.client.meta.events,
- attr_model=attr_shape
- )
-
- def _add_references(self, section):
- section = section.add_new_section('references')
- references = self._resource.meta.resource_model.references
- reference_list = []
- if references:
- add_resource_type_overview(
- section=section,
- resource_type='References',
- description=(
- 'References are related resource instances that have '
- 'a belongs-to relationship.'),
- intro_link='references_intro')
- self.member_map['references'] = reference_list
- for reference in references:
- reference_section = section.add_new_section(reference.name)
- reference_list.append(reference.name)
- document_reference(
- section=reference_section,
- reference_model=reference
- )
-
- def _add_actions(self, section):
- section = section.add_new_section('actions')
- actions = self._resource.meta.resource_model.actions
- if actions:
- documenter = ActionDocumenter(self._resource)
- documenter.member_map = self.member_map
- documenter.document_actions(section)
-
- def _add_sub_resources(self, section):
- section = section.add_new_section('sub-resources')
- sub_resources = self._resource.meta.resource_model.subresources
- if sub_resources:
- documenter = SubResourceDocumenter(self._resource)
- documenter.member_map = self.member_map
- documenter.document_sub_resources(section)
-
- def _add_collections(self, section):
- section = section.add_new_section('collections')
- collections = self._resource.meta.resource_model.collections
- if collections:
- documenter = CollectionDocumenter(self._resource)
- documenter.member_map = self.member_map
- documenter.document_collections(section)
-
- def _add_waiters(self, section):
- section = section.add_new_section('waiters')
- waiters = self._resource.meta.resource_model.waiters
- if waiters:
- service_waiter_model = self._botocore_session.get_waiter_model(
- self._service_name)
- documenter = WaiterResourceDocumenter(
- self._resource, service_waiter_model)
- documenter.member_map = self.member_map
- documenter.document_resource_waiters(section)
-
-
-class ServiceResourceDocumenter(ResourceDocumenter):
- @property
- def class_name(self):
- return '%s.ServiceResource' % self._service_docs_name
-
- def _add_title(self, section):
- section.style.h2('Service Resource')
-
- def _add_description(self, section):
- official_service_name = get_official_service_name(
- self._service_model)
- section.write(
- 'A resource representing %s' % official_service_name)
-
- def _add_example(self, section, identifier_names):
- section.style.start_codeblock()
- section.style.new_line()
- section.write('import boto3')
- section.style.new_line()
- section.style.new_line()
- section.write(
- '%s = boto3.resource(\'%s\')' % (
- self._service_name, self._service_name))
- section.style.end_codeblock()
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/docs/service.py b/.eggs/boto3-1.7.75-py2.7.egg/boto3/docs/service.py
deleted file mode 100644
index 9c0fbbe0..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/docs/service.py
+++ /dev/null
@@ -1,129 +0,0 @@
-# Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"). You
-# may not use this file except in compliance with the License. A copy of
-# the License is located at
-#
-# http://aws.amazon.com/apache2.0/
-#
-# or in the "license" file accompanying this file. This file 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.
-import os
-
-import boto3
-from botocore.exceptions import DataNotFoundError
-from botocore.docs.service import ServiceDocumenter as BaseServiceDocumenter
-from botocore.docs.bcdoc.restdoc import DocumentStructure
-
-from boto3.utils import ServiceContext
-from boto3.docs.client import Boto3ClientDocumenter
-from boto3.docs.resource import ResourceDocumenter
-from boto3.docs.resource import ServiceResourceDocumenter
-
-
-class ServiceDocumenter(BaseServiceDocumenter):
- # The path used to find examples
- EXAMPLE_PATH = os.path.join(os.path.dirname(boto3.__file__), 'examples')
-
- def __init__(self, service_name, session):
- self._service_name = service_name
- self._boto3_session = session
- # I know that this is an internal attribute, but the botocore session
- # is needed to load the paginator and waiter models.
- self._session = session._session
- self._client = self._boto3_session.client(service_name)
- self._service_resource = None
- if self._service_name in self._boto3_session.get_available_resources():
- self._service_resource = self._boto3_session.resource(service_name)
- self.sections = [
- 'title',
- 'table-of-contents',
- 'client',
- 'paginators',
- 'waiters',
- 'service-resource',
- 'resources',
- 'examples'
- ]
-
- def document_service(self):
- """Documents an entire service.
-
- :returns: The reStructured text of the documented service.
- """
- doc_structure = DocumentStructure(
- self._service_name, section_names=self.sections,
- target='html')
- self.title(doc_structure.get_section('title'))
- self.table_of_contents(doc_structure.get_section('table-of-contents'))
-
- self.client_api(doc_structure.get_section('client'))
- self.paginator_api(doc_structure.get_section('paginators'))
- self.waiter_api(doc_structure.get_section('waiters'))
- if self._service_resource:
- self._document_service_resource(
- doc_structure.get_section('service-resource'))
- self._document_resources(doc_structure.get_section('resources'))
- self._document_examples(doc_structure.get_section('examples'))
- return doc_structure.flush_structure()
-
- def client_api(self, section):
- examples = None
- try:
- examples = self.get_examples(self._service_name)
- except DataNotFoundError:
- pass
-
- Boto3ClientDocumenter(self._client, examples).document_client(section)
-
- def _document_service_resource(self, section):
- ServiceResourceDocumenter(
- self._service_resource, self._session).document_resource(
- section)
-
- def _document_resources(self, section):
- temp_identifier_value = 'foo'
- loader = self._session.get_component('data_loader')
- json_resource_model = loader.load_service_model(
- self._service_name, 'resources-1')
- service_model = self._service_resource.meta.client.meta.service_model
- for resource_name in json_resource_model['resources']:
- resource_model = json_resource_model['resources'][resource_name]
- resource_cls = self._boto3_session.resource_factory.\
- load_from_definition(
- resource_name=resource_name,
- single_resource_json_definition=resource_model,
- service_context=ServiceContext(
- service_name=self._service_name,
- resource_json_definitions=json_resource_model[
- 'resources'],
- service_model=service_model,
- service_waiter_model=None
- )
- )
- identifiers = resource_cls.meta.resource_model.identifiers
- args = []
- for _ in identifiers:
- args.append(temp_identifier_value)
- resource = resource_cls(*args, client=self._client)
- ResourceDocumenter(
- resource, self._session).document_resource(
- section.add_new_section(resource.meta.resource_model.name))
-
- def _get_example_file(self):
- return os.path.realpath(
- os.path.join(self.EXAMPLE_PATH,
- self._service_name + '.rst'))
-
- def _document_examples(self, section):
- examples_file = self._get_example_file()
- if os.path.isfile(examples_file):
- section.style.h2('Examples')
- section.style.new_line()
- section.write(".. contents::\n :local:\n :depth: 1")
- section.style.new_line()
- section.style.new_line()
- with open(examples_file, 'r') as f:
- section.write(f.read())
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/docs/subresource.py b/.eggs/boto3-1.7.75-py2.7.egg/boto3/docs/subresource.py
deleted file mode 100644
index 72416067..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/docs/subresource.py
+++ /dev/null
@@ -1,112 +0,0 @@
-# Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"). You
-# may not use this file except in compliance with the License. A copy of
-# the License is located at
-#
-# http://aws.amazon.com/apache2.0/
-#
-# or in the "license" file accompanying this file. This file 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.
-from botocore import xform_name
-from botocore.utils import get_service_module_name
-
-from boto3.docs.base import BaseDocumenter
-from boto3.docs.utils import get_identifier_args_for_signature
-from boto3.docs.utils import get_identifier_values_for_example
-from boto3.docs.utils import get_identifier_description
-from boto3.docs.utils import add_resource_type_overview
-
-
-class SubResourceDocumenter(BaseDocumenter):
- def document_sub_resources(self, section):
- add_resource_type_overview(
- section=section,
- resource_type='Sub-resources',
- description=(
- 'Sub-resources are methods that create a new instance of a'
- ' child resource. This resource\'s identifiers get passed'
- ' along to the child.'),
- intro_link='subresources_intro')
- sub_resources = sorted(
- self._resource.meta.resource_model.subresources,
- key=lambda sub_resource: sub_resource.name
- )
- sub_resources_list = []
- self.member_map['sub-resources'] = sub_resources_list
- for sub_resource in sub_resources:
- sub_resource_section = section.add_new_section(sub_resource.name)
- sub_resources_list.append(sub_resource.name)
- document_sub_resource(
- section=sub_resource_section,
- resource_name=self._resource_name,
- sub_resource_model=sub_resource,
- service_model=self._service_model
- )
-
-
-def document_sub_resource(section, resource_name, sub_resource_model,
- service_model, include_signature=True):
- """Documents a resource action
-
- :param section: The section to write to
-
- :param resource_name: The name of the resource
-
- :param sub_resource_model: The model of the subresource
-
- :param service_model: The model of the service
-
- :param include_signature: Whether or not to include the signature.
- It is useful for generating docstrings.
- """
- identifiers_needed = []
- for identifier in sub_resource_model.resource.identifiers:
- if identifier.source == 'input':
- identifiers_needed.append(xform_name(identifier.target))
-
- if include_signature:
- signature_args = get_identifier_args_for_signature(identifiers_needed)
- section.style.start_sphinx_py_method(
- sub_resource_model.name, signature_args)
-
- method_intro_section = section.add_new_section(
- 'method-intro')
- description = 'Creates a %s resource.' % sub_resource_model.resource.type
- method_intro_section.include_doc_string(description)
- example_section = section.add_new_section('example')
- example_values = get_identifier_values_for_example(identifiers_needed)
- example_resource_name = xform_name(resource_name)
- if service_model.service_name == resource_name:
- example_resource_name = resource_name
- example = '%s = %s.%s(%s)' % (
- xform_name(sub_resource_model.resource.type),
- example_resource_name,
- sub_resource_model.name, example_values
- )
- example_section.style.start_codeblock()
- example_section.write(example)
- example_section.style.end_codeblock()
-
- param_section = section.add_new_section('params')
- for identifier in identifiers_needed:
- description = get_identifier_description(
- sub_resource_model.name, identifier)
- param_section.write(':type %s: string' % identifier)
- param_section.style.new_line()
- param_section.write(':param %s: %s' % (
- identifier, description))
- param_section.style.new_line()
-
- return_section = section.add_new_section('return')
- return_section.style.new_line()
- return_section.write(
- ':rtype: :py:class:`%s.%s`' % (
- get_service_module_name(service_model),
- sub_resource_model.resource.type))
- return_section.style.new_line()
- return_section.write(
- ':returns: A %s resource' % sub_resource_model.resource.type)
- return_section.style.new_line()
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/docs/utils.py b/.eggs/boto3-1.7.75-py2.7.egg/boto3/docs/utils.py
deleted file mode 100644
index 8c96a121..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/docs/utils.py
+++ /dev/null
@@ -1,142 +0,0 @@
-# Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"). You
-# may not use this file except in compliance with the License. A copy of
-# the License is located at
-#
-# http://aws.amazon.com/apache2.0/
-#
-# or in the "license" file accompanying this file. This file 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.
-import inspect
-
-import jmespath
-
-from botocore.compat import six
-
-
-def get_resource_ignore_params(params):
- """Helper method to determine which parameters to ignore for actions
-
- :returns: A list of the parameter names that does not need to be
- included in a resource's method call for documentation purposes.
- """
- ignore_params = []
- for param in params:
- result = jmespath.compile(param.target)
- current = result.parsed
- # Use JMESPath to find the left most element in the target expression
- # which will be the parameter to ignore in the action call.
- while current['children']:
- current = current['children'][0]
- # Make sure the parameter we are about to ignore is a field.
- # If it is not, we should ignore the result to avoid false positives.
- if current['type'] == 'field':
- ignore_params.append(current['value'])
- return ignore_params
-
-
-def is_resource_action(action_handle):
- if six.PY3:
- return inspect.isfunction(action_handle)
- else:
- return inspect.ismethod(action_handle)
-
-
-def get_resource_public_actions(resource_class):
- resource_class_members = inspect.getmembers(resource_class)
- resource_methods = {}
- for name, member in resource_class_members:
- if not name.startswith('_'):
- if not name[0].isupper():
- if not name.startswith('wait_until'):
- if is_resource_action(member):
- resource_methods[name] = member
- return resource_methods
-
-
-def get_identifier_values_for_example(identifier_names):
- example_values = ['\'%s\'' % identifier for identifier in identifier_names]
- return ','.join(example_values)
-
-
-def get_identifier_args_for_signature(identifier_names):
- return ','.join(identifier_names)
-
-
-def get_identifier_description(resource_name, identifier_name):
- return "The %s's %s identifier. This **must** be set." % (
- resource_name, identifier_name)
-
-
-def add_resource_type_overview(section, resource_type, description,
- intro_link=None):
- section.style.new_line()
- section.write('.. rst-class:: admonition-title')
- section.style.new_line()
- section.style.new_line()
- section.write(resource_type)
- section.style.new_line()
- section.style.new_line()
- section.write(description)
- section.style.new_line()
- if intro_link is not None:
- section.write('For more information about %s refer to the '
- ':ref:`Resources Introduction Guide<%s>`.' % (
- resource_type.lower(), intro_link))
- section.style.new_line()
-
-
-class DocumentModifiedShape(object):
- def __init__(self, shape_name, new_type, new_description,
- new_example_value):
- self._shape_name = shape_name
- self._new_type = new_type
- self._new_description = new_description
- self._new_example_value = new_example_value
-
- def replace_documentation_for_matching_shape(self, event_name, section,
- **kwargs):
- if self._shape_name == section.context.get('shape'):
- self._replace_documentation(event_name, section)
- for section_name in section.available_sections:
- sub_section = section.get_section(section_name)
- if self._shape_name == sub_section.context.get('shape'):
- self._replace_documentation(event_name, sub_section)
- else:
- self.replace_documentation_for_matching_shape(
- event_name, sub_section)
-
- def _replace_documentation(self, event_name, section):
- if event_name.startswith('docs.request-example') or \
- event_name.startswith('docs.response-example'):
- section.remove_all_sections()
- section.clear_text()
- section.write(self._new_example_value)
-
- if event_name.startswith('docs.request-params') or \
- event_name.startswith('docs.response-params'):
- for section_name in section.available_sections:
- # Delete any extra members as a new shape is being
- # used.
- if section_name not in ['param-name', 'param-documentation',
- 'end-structure', 'param-type',
- 'end-param']:
- section.delete_section(section_name)
-
- # Update the documentation
- description_section = section.get_section('param-documentation')
- description_section.clear_text()
- description_section.write(self._new_description)
-
- # Update the param type
- type_section = section.get_section('param-type')
- if type_section.getvalue().decode('utf-8').startswith(':type'):
- type_section.clear_text()
- type_section.write(':type %s: %s' % (
- section.name, self._new_type))
- else:
- type_section.clear_text()
- type_section.style.italics('(%s) -- ' % self._new_type)
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/docs/waiter.py b/.eggs/boto3-1.7.75-py2.7.egg/boto3/docs/waiter.py
deleted file mode 100644
index da7e7764..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/docs/waiter.py
+++ /dev/null
@@ -1,91 +0,0 @@
-# Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"). You
-# may not use this file except in compliance with the License. A copy of
-# the License is located at
-#
-# http://aws.amazon.com/apache2.0/
-#
-# or in the "license" file accompanying this file. This file 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.
-from botocore import xform_name
-from botocore.utils import get_service_module_name
-from botocore.docs.method import document_model_driven_method
-
-from boto3.docs.base import BaseDocumenter
-from boto3.docs.utils import get_resource_ignore_params
-from boto3.docs.utils import add_resource_type_overview
-
-
-class WaiterResourceDocumenter(BaseDocumenter):
- def __init__(self, resource, service_waiter_model):
- super(WaiterResourceDocumenter, self).__init__(resource)
- self._service_waiter_model = service_waiter_model
-
- def document_resource_waiters(self, section):
- waiters = self._resource.meta.resource_model.waiters
- add_resource_type_overview(
- section=section,
- resource_type='Waiters',
- description=(
- 'Waiters provide an interface to wait for a resource'
- ' to reach a specific state.'),
- intro_link='waiters_intro')
- waiter_list = []
- self.member_map['waiters'] = waiter_list
- for waiter in waiters:
- waiter_section = section.add_new_section(waiter.name)
- waiter_list.append(waiter.name)
- document_resource_waiter(
- section=waiter_section,
- resource_name=self._resource_name,
- event_emitter=self._resource.meta.client.meta.events,
- service_model=self._service_model,
- resource_waiter_model=waiter,
- service_waiter_model=self._service_waiter_model
- )
-
-
-def document_resource_waiter(section, resource_name, event_emitter,
- service_model, resource_waiter_model,
- service_waiter_model, include_signature=True):
- waiter_model = service_waiter_model.get_waiter(
- resource_waiter_model.waiter_name)
- operation_model = service_model.operation_model(
- waiter_model.operation)
-
- ignore_params = get_resource_ignore_params(resource_waiter_model.params)
- service_module_name = get_service_module_name(service_model)
- description = (
- 'Waits until this %s is %s. This method calls '
- ':py:meth:`%s.Waiter.%s.wait` which polls. '
- ':py:meth:`%s.Client.%s` every %s seconds until '
- 'a successful state is reached. An error is returned '
- 'after %s failed checks.' % (
- resource_name, ' '.join(resource_waiter_model.name.split('_')[2:]),
- service_module_name,
- xform_name(resource_waiter_model.waiter_name),
- service_module_name,
- xform_name(waiter_model.operation),
- waiter_model.delay, waiter_model.max_attempts))
- example_prefix = '%s.%s' % (
- xform_name(resource_name), resource_waiter_model.name)
- document_model_driven_method(
- section=section, method_name=resource_waiter_model.name,
- operation_model=operation_model,
- event_emitter=event_emitter,
- example_prefix=example_prefix,
- method_description=description,
- exclude_input=ignore_params,
- include_signature=include_signature
- )
- if 'return' in section.available_sections:
- # Waiters do not return anything so we should remove
- # any sections that may document the underlying return
- # value of the client method.
- return_section = section.get_section('return')
- return_section.clear_text()
- return_section.remove_all_sections()
- return_section.write(':returns: None')
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/dynamodb/__init__.py b/.eggs/boto3-1.7.75-py2.7.egg/boto3/dynamodb/__init__.py
deleted file mode 100644
index c89416d7..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/dynamodb/__init__.py
+++ /dev/null
@@ -1,12 +0,0 @@
-# Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"). You
-# may not use this file except in compliance with the License. A copy of
-# the License is located at
-#
-# http://aws.amazon.com/apache2.0/
-#
-# or in the "license" file accompanying this file. This file 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/.eggs/boto3-1.7.75-py2.7.egg/boto3/dynamodb/conditions.py b/.eggs/boto3-1.7.75-py2.7.egg/boto3/dynamodb/conditions.py
deleted file mode 100644
index 8e028b92..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/dynamodb/conditions.py
+++ /dev/null
@@ -1,415 +0,0 @@
-# Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"). You
-# may not use this file except in compliance with the License. A copy of
-# the License is located at
-#
-# http://aws.amazon.com/apache2.0/
-#
-# or in the "license" file accompanying this file. This file 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.
-from collections import namedtuple
-import re
-
-from boto3.exceptions import DynamoDBOperationNotSupportedError
-from boto3.exceptions import DynamoDBNeedsConditionError
-from boto3.exceptions import DynamoDBNeedsKeyConditionError
-
-
-ATTR_NAME_REGEX = re.compile(r'[^.\[\]]+(?![^\[]*\])')
-
-
-class ConditionBase(object):
-
- expression_format = ''
- expression_operator = ''
- has_grouped_values = False
-
- def __init__(self, *values):
- self._values = values
-
- def __and__(self, other):
- if not isinstance(other, ConditionBase):
- raise DynamoDBOperationNotSupportedError('AND', other)
- return And(self, other)
-
- def __or__(self, other):
- if not isinstance(other, ConditionBase):
- raise DynamoDBOperationNotSupportedError('OR', other)
- return Or(self, other)
-
- def __invert__(self):
- return Not(self)
-
- def get_expression(self):
- return {'format': self.expression_format,
- 'operator': self.expression_operator,
- 'values': self._values}
-
- def __eq__(self, other):
- if isinstance(other, type(self)):
- if self._values == other._values:
- return True
- return False
-
- def __ne__(self, other):
- return not self.__eq__(other)
-
-
-class AttributeBase(object):
- def __init__(self, name):
- self.name = name
-
- def __and__(self, value):
- raise DynamoDBOperationNotSupportedError('AND', self)
-
- def __or__(self, value):
- raise DynamoDBOperationNotSupportedError('OR', self)
-
- def __invert__(self):
- raise DynamoDBOperationNotSupportedError('NOT', self)
-
- def eq(self, value):
- """Creates a condition where the attribute is equal to the value.
-
- :param value: The value that the attribute is equal to.
- """
- return Equals(self, value)
-
- def lt(self, value):
- """Creates a condition where the attribute is less than the value.
-
- :param value: The value that the attribute is less than.
- """
- return LessThan(self, value)
-
- def lte(self, value):
- """Creates a condition where the attribute is less than or equal to the
- value.
-
- :param value: The value that the attribute is less than or equal to.
- """
- return LessThanEquals(self, value)
-
- def gt(self, value):
- """Creates a condition where the attribute is greater than the value.
-
- :param value: The value that the attribute is greater than.
- """
- return GreaterThan(self, value)
-
- def gte(self, value):
- """Creates a condition where the attribute is greater than or equal to
- the value.
-
- :param value: The value that the attribute is greater than or equal to.
- """
- return GreaterThanEquals(self, value)
-
- def begins_with(self, value):
- """Creates a condition where the attribute begins with the value.
-
- :param value: The value that the attribute begins with.
- """
- return BeginsWith(self, value)
-
- def between(self, low_value, high_value):
- """Creates a condition where the attribute is greater than or equal
- to the low value and less than or equal to the high value.
-
- :param low_value: The value that the attribute is greater than.
- :param high_value: The value that the attribute is less than.
- """
- return Between(self, low_value, high_value)
-
-
-class ConditionAttributeBase(ConditionBase, AttributeBase):
- """This base class is for conditions that can have attribute methods.
-
- One example is the Size condition. To complete a condition, you need
- to apply another AttributeBase method like eq().
- """
- def __init__(self, *values):
- ConditionBase.__init__(self, *values)
- # This is assuming the first value to the condition is the attribute
- # in which can be used to generate its attribute base.
- AttributeBase.__init__(self, values[0].name)
-
-
-class ComparisonCondition(ConditionBase):
- expression_format = '{0} {operator} {1}'
-
-
-class Equals(ComparisonCondition):
- expression_operator = '='
-
-
-class NotEquals(ComparisonCondition):
- expression_operator = '<>'
-
-
-class LessThan(ComparisonCondition):
- expression_operator = '<'
-
-
-class LessThanEquals(ComparisonCondition):
- expression_operator = '<='
-
-
-class GreaterThan(ComparisonCondition):
- expression_operator = '>'
-
-
-class GreaterThanEquals(ComparisonCondition):
- expression_operator = '>='
-
-
-class In(ComparisonCondition):
- expression_operator = 'IN'
- has_grouped_values = True
-
-
-class Between(ConditionBase):
- expression_operator = 'BETWEEN'
- expression_format = '{0} {operator} {1} AND {2}'
-
-
-class BeginsWith(ConditionBase):
- expression_operator = 'begins_with'
- expression_format = '{operator}({0}, {1})'
-
-
-class Contains(ConditionBase):
- expression_operator = 'contains'
- expression_format = '{operator}({0}, {1})'
-
-
-class Size(ConditionAttributeBase):
- expression_operator = 'size'
- expression_format = '{operator}({0})'
-
-
-class AttributeType(ConditionBase):
- expression_operator = 'attribute_type'
- expression_format = '{operator}({0}, {1})'
-
-
-class AttributeExists(ConditionBase):
- expression_operator = 'attribute_exists'
- expression_format = '{operator}({0})'
-
-
-class AttributeNotExists(ConditionBase):
- expression_operator = 'attribute_not_exists'
- expression_format = '{operator}({0})'
-
-
-class And(ConditionBase):
- expression_operator = 'AND'
- expression_format = '({0} {operator} {1})'
-
-
-class Or(ConditionBase):
- expression_operator = 'OR'
- expression_format = '({0} {operator} {1})'
-
-
-class Not(ConditionBase):
- expression_operator = 'NOT'
- expression_format = '({operator} {0})'
-
-
-class Key(AttributeBase):
- pass
-
-
-class Attr(AttributeBase):
- """Represents an DynamoDB item's attribute."""
- def ne(self, value):
- """Creates a condition where the attribute is not equal to the value
-
- :param value: The value that the attribute is not equal to.
- """
- return NotEquals(self, value)
-
- def is_in(self, value):
- """Creates a condition where the attribute is in the value,
-
- :type value: list
- :param value: The value that the attribute is in.
- """
- return In(self, value)
-
- def exists(self):
- """Creates a condition where the attribute exists."""
- return AttributeExists(self)
-
- def not_exists(self):
- """Creates a condition where the attribute does not exist."""
- return AttributeNotExists(self)
-
- def contains(self, value):
- """Creates a condition where the attribute contains the value.
-
- :param value: The value the attribute contains.
- """
- return Contains(self, value)
-
- def size(self):
- """Creates a condition for the attribute size.
-
- Note another AttributeBase method must be called on the returned
- size condition to be a valid DynamoDB condition.
- """
- return Size(self)
-
- def attribute_type(self, value):
- """Creates a condition for the attribute type.
-
- :param value: The type of the attribute.
- """
- return AttributeType(self, value)
-
-
-BuiltConditionExpression = namedtuple(
- 'BuiltConditionExpression',
- ['condition_expression', 'attribute_name_placeholders',
- 'attribute_value_placeholders']
-)
-
-
-class ConditionExpressionBuilder(object):
- """This class is used to build condition expressions with placeholders"""
- def __init__(self):
- self._name_count = 0
- self._value_count = 0
- self._name_placeholder = 'n'
- self._value_placeholder = 'v'
-
- def _get_name_placeholder(self):
- return '#' + self._name_placeholder + str(self._name_count)
-
- def _get_value_placeholder(self):
- return ':' + self._value_placeholder + str(self._value_count)
-
- def reset(self):
- """Resets the placeholder name and values"""
- self._name_count = 0
- self._value_count = 0
-
- def build_expression(self, condition, is_key_condition=False):
- """Builds the condition expression and the dictionary of placeholders.
-
- :type condition: ConditionBase
- :param condition: A condition to be built into a condition expression
- string with any necessary placeholders.
-
- :type is_key_condition: Boolean
- :param is_key_condition: True if the expression is for a
- KeyConditionExpression. False otherwise.
-
- :rtype: (string, dict, dict)
- :returns: Will return a string representing the condition with
- placeholders inserted where necessary, a dictionary of
- placeholders for attribute names, and a dictionary of
- placeholders for attribute values. Here is a sample return value:
-
- ('#n0 = :v0', {'#n0': 'myattribute'}, {':v1': 'myvalue'})
- """
- if not isinstance(condition, ConditionBase):
- raise DynamoDBNeedsConditionError(condition)
- attribute_name_placeholders = {}
- attribute_value_placeholders = {}
- condition_expression = self._build_expression(
- condition, attribute_name_placeholders,
- attribute_value_placeholders, is_key_condition=is_key_condition)
- return BuiltConditionExpression(
- condition_expression=condition_expression,
- attribute_name_placeholders=attribute_name_placeholders,
- attribute_value_placeholders=attribute_value_placeholders
- )
-
- def _build_expression(self, condition, attribute_name_placeholders,
- attribute_value_placeholders, is_key_condition):
- expression_dict = condition.get_expression()
- replaced_values = []
- for value in expression_dict['values']:
- # Build the necessary placeholders for that value.
- # Placeholders are built for both attribute names and values.
- replaced_value = self._build_expression_component(
- value, attribute_name_placeholders,
- attribute_value_placeholders, condition.has_grouped_values,
- is_key_condition)
- replaced_values.append(replaced_value)
- # Fill out the expression using the operator and the
- # values that have been replaced with placeholders.
- return expression_dict['format'].format(
- *replaced_values, operator=expression_dict['operator'])
-
- def _build_expression_component(self, value, attribute_name_placeholders,
- attribute_value_placeholders,
- has_grouped_values, is_key_condition):
- # Continue to recurse if the value is a ConditionBase in order
- # to extract out all parts of the expression.
- if isinstance(value, ConditionBase):
- return self._build_expression(
- value, attribute_name_placeholders,
- attribute_value_placeholders, is_key_condition)
- # If it is not a ConditionBase, we can recurse no further.
- # So we check if it is an attribute and add placeholders for
- # its name
- elif isinstance(value, AttributeBase):
- if is_key_condition and not isinstance(value, Key):
- raise DynamoDBNeedsKeyConditionError(
- 'Attribute object %s is of type %s. '
- 'KeyConditionExpression only supports Attribute objects '
- 'of type Key' % (value.name, type(value)))
- return self._build_name_placeholder(
- value, attribute_name_placeholders)
- # If it is anything else, we treat it as a value and thus placeholders
- # are needed for the value.
- else:
- return self._build_value_placeholder(
- value, attribute_value_placeholders, has_grouped_values)
-
- def _build_name_placeholder(self, value, attribute_name_placeholders):
- attribute_name = value.name
- # Figure out which parts of the attribute name that needs replacement.
- attribute_name_parts = ATTR_NAME_REGEX.findall(attribute_name)
-
- # Add a temporary placeholder for each of these parts.
- placeholder_format = ATTR_NAME_REGEX.sub('%s', attribute_name)
- str_format_args = []
- for part in attribute_name_parts:
- name_placeholder = self._get_name_placeholder()
- self._name_count += 1
- str_format_args.append(name_placeholder)
- # Add the placeholder and value to dictionary of name placeholders.
- attribute_name_placeholders[name_placeholder] = part
- # Replace the temporary placeholders with the designated placeholders.
- return placeholder_format % tuple(str_format_args)
-
- def _build_value_placeholder(self, value, attribute_value_placeholders,
- has_grouped_values=False):
- # If the values are grouped, we need to add a placeholder for
- # each element inside of the actual value.
- if has_grouped_values:
- placeholder_list = []
- for v in value:
- value_placeholder = self._get_value_placeholder()
- self._value_count += 1
- placeholder_list.append(value_placeholder)
- attribute_value_placeholders[value_placeholder] = v
- # Assuming the values are grouped by parenthesis.
- # IN is the currently the only one that uses this so it maybe
- # needed to be changed in future.
- return '(' + ', '.join(placeholder_list) + ')'
- # Otherwise, treat the value as a single value that needs only
- # one placeholder.
- else:
- value_placeholder = self._get_value_placeholder()
- self._value_count += 1
- attribute_value_placeholders[value_placeholder] = value
- return value_placeholder
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/dynamodb/table.py b/.eggs/boto3-1.7.75-py2.7.egg/boto3/dynamodb/table.py
deleted file mode 100644
index 4bd9a98e..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/dynamodb/table.py
+++ /dev/null
@@ -1,156 +0,0 @@
-# Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"). You
-# may not use this file except in compliance with the License. A copy of
-# the License is located at
-#
-# http://aws.amazon.com/apache2.0/
-#
-# or in the "license" file accompanying this file. This file 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.
-import logging
-
-
-logger = logging.getLogger(__name__)
-
-
-def register_table_methods(base_classes, **kwargs):
- base_classes.insert(0, TableResource)
-
-
-# This class can be used to add any additional methods we want
-# onto a table resource. Ideally to avoid creating a new
-# base class for every method we can just update this
-# class instead. Just be sure to move the bulk of the
-# actual method implementation to another class.
-class TableResource(object):
- def __init__(self, *args, **kwargs):
- super(TableResource, self).__init__(*args, **kwargs)
-
- def batch_writer(self, overwrite_by_pkeys=None):
- """Create a batch writer object.
-
- This method creates a context manager for writing
- objects to Amazon DynamoDB in batch.
-
- The batch writer will automatically handle buffering and sending items
- in batches. In addition, the batch writer will also automatically
- handle any unprocessed items and resend them as needed. All you need
- to do is call ``put_item`` for any items you want to add, and
- ``delete_item`` for any items you want to delete.
-
- Example usage::
-
- with table.batch_writer() as batch:
- for _ in xrange(1000000):
- batch.put_item(Item={'HashKey': '...',
- 'Otherstuff': '...'})
- # You can also delete_items in a batch.
- batch.delete_item(Key={'HashKey': 'SomeHashKey'})
-
- :type overwrite_by_pkeys: list(string)
- :param overwrite_by_pkeys: De-duplicate request items in buffer
- if match new request item on specified primary keys. i.e
- ``["partition_key1", "sort_key2", "sort_key3"]``
-
- """
- return BatchWriter(self.name, self.meta.client,
- overwrite_by_pkeys=overwrite_by_pkeys)
-
-
-class BatchWriter(object):
- """Automatically handle batch writes to DynamoDB for a single table."""
- def __init__(self, table_name, client, flush_amount=25,
- overwrite_by_pkeys=None):
- """
-
- :type table_name: str
- :param table_name: The name of the table. The class handles
- batch writes to a single table.
-
- :type client: ``botocore.client.Client``
- :param client: A botocore client. Note this client
- **must** have the dynamodb customizations applied
- to it for transforming AttributeValues into the
- wire protocol. What this means in practice is that
- you need to use a client that comes from a DynamoDB
- resource if you're going to instantiate this class
- directly, i.e
- ``boto3.resource('dynamodb').Table('foo').meta.client``.
-
- :type flush_amount: int
- :param flush_amount: The number of items to keep in
- a local buffer before sending a batch_write_item
- request to DynamoDB.
-
- :type overwrite_by_pkeys: list(string)
- :param overwrite_by_pkeys: De-duplicate request items in buffer
- if match new request item on specified primary keys. i.e
- ``["partition_key1", "sort_key2", "sort_key3"]``
-
- """
- self._table_name = table_name
- self._client = client
- self._items_buffer = []
- self._flush_amount = flush_amount
- self._overwrite_by_pkeys = overwrite_by_pkeys
-
- def put_item(self, Item):
- self._add_request_and_process({'PutRequest': {'Item': Item}})
-
- def delete_item(self, Key):
- self._add_request_and_process({'DeleteRequest': {'Key': Key}})
-
- def _add_request_and_process(self, request):
- if self._overwrite_by_pkeys:
- self._remove_dup_pkeys_request_if_any(request)
- self._items_buffer.append(request)
- self._flush_if_needed()
-
- def _remove_dup_pkeys_request_if_any(self, request):
- pkey_values_new = self._extract_pkey_values(request)
- for item in self._items_buffer:
- if self._extract_pkey_values(item) == pkey_values_new:
- self._items_buffer.remove(item)
- logger.debug("With overwrite_by_pkeys enabled, skipping "
- "request:%s", item)
-
- def _extract_pkey_values(self, request):
- if request.get('PutRequest'):
- return [request['PutRequest']['Item'][key]
- for key in self._overwrite_by_pkeys]
- elif request.get('DeleteRequest'):
- return [request['DeleteRequest']['Key'][key]
- for key in self._overwrite_by_pkeys]
- return None
-
- def _flush_if_needed(self):
- if len(self._items_buffer) >= self._flush_amount:
- self._flush()
-
- def _flush(self):
- items_to_send = self._items_buffer[:self._flush_amount]
- self._items_buffer = self._items_buffer[self._flush_amount:]
- response = self._client.batch_write_item(
- RequestItems={self._table_name: items_to_send})
- unprocessed_items = response['UnprocessedItems']
-
- if unprocessed_items and unprocessed_items[self._table_name]:
- # Any unprocessed_items are immediately added to the
- # next batch we send.
- self._items_buffer.extend(unprocessed_items[self._table_name])
- else:
- self._items_buffer = []
- logger.debug("Batch write sent %s, unprocessed: %s",
- len(items_to_send), len(self._items_buffer))
-
- def __enter__(self):
- return self
-
- def __exit__(self, exc_type, exc_value, tb):
- # When we exit, we need to keep flushing whatever's left
- # until there's nothing left in our items buffer.
- while self._items_buffer:
- self._flush()
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/dynamodb/transform.py b/.eggs/boto3-1.7.75-py2.7.egg/boto3/dynamodb/transform.py
deleted file mode 100644
index 6b8002ca..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/dynamodb/transform.py
+++ /dev/null
@@ -1,300 +0,0 @@
-# Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"). You
-# may not use this file except in compliance with the License. A copy of
-# the License is located at
-#
-# http://aws.amazon.com/apache2.0/
-#
-# or in the "license" file accompanying this file. This file 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.
-import copy
-from collections import Mapping, MutableSequence
-
-from boto3.dynamodb.types import TypeSerializer, TypeDeserializer
-from boto3.dynamodb.conditions import ConditionBase
-from boto3.dynamodb.conditions import ConditionExpressionBuilder
-from boto3.docs.utils import DocumentModifiedShape
-
-
-def register_high_level_interface(base_classes, **kwargs):
- base_classes.insert(0, DynamoDBHighLevelResource)
-
-
-def copy_dynamodb_params(params, **kwargs):
- return copy.deepcopy(params)
-
-
-class DynamoDBHighLevelResource(object):
- def __init__(self, *args, **kwargs):
- super(DynamoDBHighLevelResource, self).__init__(*args, **kwargs)
-
- # Apply handler that creates a copy of the user provided dynamodb
- # item such that it can be modified.
- self.meta.client.meta.events.register(
- 'provide-client-params.dynamodb',
- copy_dynamodb_params,
- unique_id='dynamodb-create-params-copy'
- )
-
- self._injector = TransformationInjector()
- # Apply the handler that generates condition expressions including
- # placeholders.
- self.meta.client.meta.events.register(
- 'before-parameter-build.dynamodb',
- self._injector.inject_condition_expressions,
- unique_id='dynamodb-condition-expression')
-
- # Apply the handler that serializes the request from python
- # types to dynamodb types.
- self.meta.client.meta.events.register(
- 'before-parameter-build.dynamodb',
- self._injector.inject_attribute_value_input,
- unique_id='dynamodb-attr-value-input')
-
- # Apply the handler that deserializes the response from dynamodb
- # types to python types.
- self.meta.client.meta.events.register(
- 'after-call.dynamodb',
- self._injector.inject_attribute_value_output,
- unique_id='dynamodb-attr-value-output')
-
- # Apply the documentation customizations to account for
- # the transformations.
- attr_value_shape_docs = DocumentModifiedShape(
- 'AttributeValue',
- new_type='valid DynamoDB type',
- new_description=(
- '- The value of the attribute. The valid value types are '
- 'listed in the '
- ':ref:`DynamoDB Reference Guide`.'
- ),
- new_example_value=(
- '\'string\'|123|Binary(b\'bytes\')|True|None|set([\'string\'])'
- '|set([123])|set([Binary(b\'bytes\')])|[]|{}')
- )
-
- key_expression_shape_docs = DocumentModifiedShape(
- 'KeyExpression',
- new_type=(
- 'condition from :py:class:`boto3.dynamodb.conditions.Key` '
- 'method'
- ),
- new_description=(
- 'The condition(s) a key(s) must meet. Valid conditions are '
- 'listed in the '
- ':ref:`DynamoDB Reference Guide`.'
- ),
- new_example_value='Key(\'mykey\').eq(\'myvalue\')'
- )
-
- con_expression_shape_docs = DocumentModifiedShape(
- 'ConditionExpression',
- new_type=(
- 'condition from :py:class:`boto3.dynamodb.conditions.Attr` '
- 'method'
- ),
- new_description=(
- 'The condition(s) an attribute(s) must meet. Valid conditions '
- 'are listed in the '
- ':ref:`DynamoDB Reference Guide`.'
- ),
- new_example_value='Attr(\'myattribute\').eq(\'myvalue\')'
- )
-
- self.meta.client.meta.events.register(
- 'docs.*.dynamodb.*.complete-section',
- attr_value_shape_docs.replace_documentation_for_matching_shape,
- unique_id='dynamodb-attr-value-docs')
-
- self.meta.client.meta.events.register(
- 'docs.*.dynamodb.*.complete-section',
- key_expression_shape_docs.replace_documentation_for_matching_shape,
- unique_id='dynamodb-key-expression-docs')
-
- self.meta.client.meta.events.register(
- 'docs.*.dynamodb.*.complete-section',
- con_expression_shape_docs.replace_documentation_for_matching_shape,
- unique_id='dynamodb-cond-expression-docs')
-
-
-class TransformationInjector(object):
- """Injects the transformations into the user provided parameters."""
- def __init__(self, transformer=None, condition_builder=None,
- serializer=None, deserializer=None):
- self._transformer = transformer
- if transformer is None:
- self._transformer = ParameterTransformer()
-
- self._condition_builder = condition_builder
- if condition_builder is None:
- self._condition_builder = ConditionExpressionBuilder()
-
- self._serializer = serializer
- if serializer is None:
- self._serializer = TypeSerializer()
-
- self._deserializer = deserializer
- if deserializer is None:
- self._deserializer = TypeDeserializer()
-
- def inject_condition_expressions(self, params, model, **kwargs):
- """Injects the condition expression transformation into the parameters
-
- This injection includes transformations for ConditionExpression shapes
- and KeyExpression shapes. It also handles any placeholder names and
- values that are generated when transforming the condition expressions.
- """
- self._condition_builder.reset()
- generated_names = {}
- generated_values = {}
-
- # Create and apply the Condition Expression transformation.
- transformation = ConditionExpressionTransformation(
- self._condition_builder,
- placeholder_names=generated_names,
- placeholder_values=generated_values,
- is_key_condition=False
- )
- self._transformer.transform(
- params, model.input_shape, transformation,
- 'ConditionExpression')
-
- # Create and apply the Key Condition Expression transformation.
- transformation = ConditionExpressionTransformation(
- self._condition_builder,
- placeholder_names=generated_names,
- placeholder_values=generated_values,
- is_key_condition=True
- )
- self._transformer.transform(
- params, model.input_shape, transformation,
- 'KeyExpression')
-
- expr_attr_names_input = 'ExpressionAttributeNames'
- expr_attr_values_input = 'ExpressionAttributeValues'
-
- # Now that all of the condition expression transformation are done,
- # update the placeholder dictionaries in the request.
- if expr_attr_names_input in params:
- params[expr_attr_names_input].update(generated_names)
- else:
- if generated_names:
- params[expr_attr_names_input] = generated_names
-
- if expr_attr_values_input in params:
- params[expr_attr_values_input].update(generated_values)
- else:
- if generated_values:
- params[expr_attr_values_input] = generated_values
-
- def inject_attribute_value_input(self, params, model, **kwargs):
- """Injects DynamoDB serialization into parameter input"""
- self._transformer.transform(
- params, model.input_shape, self._serializer.serialize,
- 'AttributeValue')
-
- def inject_attribute_value_output(self, parsed, model, **kwargs):
- """Injects DynamoDB deserialization into responses"""
- if model.output_shape is not None:
- self._transformer.transform(
- parsed, model.output_shape, self._deserializer.deserialize,
- 'AttributeValue'
- )
-
-
-class ConditionExpressionTransformation(object):
- """Provides a transformation for condition expressions
-
- The ``ParameterTransformer`` class can call this class directly
- to transform the condition expressions in the parameters provided.
- """
- def __init__(self, condition_builder, placeholder_names,
- placeholder_values, is_key_condition=False):
- self._condition_builder = condition_builder
- self._placeholder_names = placeholder_names
- self._placeholder_values = placeholder_values
- self._is_key_condition = is_key_condition
-
- def __call__(self, value):
- if isinstance(value, ConditionBase):
- # Create a conditional expression string with placeholders
- # for the provided condition.
- built_expression = self._condition_builder.build_expression(
- value, is_key_condition=self._is_key_condition)
-
- self._placeholder_names.update(
- built_expression.attribute_name_placeholders)
- self._placeholder_values.update(
- built_expression.attribute_value_placeholders)
-
- return built_expression.condition_expression
- # Use the user provided value if it is not a ConditonBase object.
- return value
-
-
-class ParameterTransformer(object):
- """Transforms the input to and output from botocore based on shape"""
-
- def transform(self, params, model, transformation, target_shape):
- """Transforms the dynamodb input to or output from botocore
-
- It applies a specified transformation whenever a specific shape name
- is encountered while traversing the parameters in the dictionary.
-
- :param params: The parameters structure to transform.
- :param model: The operation model.
- :param transformation: The function to apply the parameter
- :param target_shape: The name of the shape to apply the
- transformation to
- """
- self._transform_parameters(
- model, params, transformation, target_shape)
-
- def _transform_parameters(self, model, params, transformation,
- target_shape):
- type_name = model.type_name
- if type_name in ['structure', 'map', 'list']:
- getattr(self, '_transform_%s' % type_name)(
- model, params, transformation, target_shape)
-
- def _transform_structure(self, model, params, transformation,
- target_shape):
- if not isinstance(params, Mapping):
- return
- for param in params:
- if param in model.members:
- member_model = model.members[param]
- member_shape = member_model.name
- if member_shape == target_shape:
- params[param] = transformation(params[param])
- else:
- self._transform_parameters(
- member_model, params[param], transformation,
- target_shape)
-
- def _transform_map(self, model, params, transformation, target_shape):
- if not isinstance(params, Mapping):
- return
- value_model = model.value
- value_shape = value_model.name
- for key, value in params.items():
- if value_shape == target_shape:
- params[key] = transformation(value)
- else:
- self._transform_parameters(
- value_model, params[key], transformation, target_shape)
-
- def _transform_list(self, model, params, transformation, target_shape):
- if not isinstance(params, MutableSequence):
- return
- member_model = model.member
- member_shape = member_model.name
- for i, item in enumerate(params):
- if member_shape == target_shape:
- params[i] = transformation(item)
- else:
- self._transform_parameters(
- member_model, params[i], transformation, target_shape)
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/dynamodb/types.py b/.eggs/boto3-1.7.75-py2.7.egg/boto3/dynamodb/types.py
deleted file mode 100644
index 56ee1f8e..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/dynamodb/types.py
+++ /dev/null
@@ -1,297 +0,0 @@
-# Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"). You
-# may not use this file except in compliance with the License. A copy of
-# the License is located at
-#
-# http://aws.amazon.com/apache2.0/
-#
-# or in the "license" file accompanying this file. This file 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.
-from collections import Mapping, Set
-from decimal import Decimal, Context, Clamped
-from decimal import Overflow, Inexact, Underflow, Rounded
-
-from botocore.compat import six
-
-
-STRING = 'S'
-NUMBER = 'N'
-BINARY = 'B'
-STRING_SET = 'SS'
-NUMBER_SET = 'NS'
-BINARY_SET = 'BS'
-NULL = 'NULL'
-BOOLEAN = 'BOOL'
-MAP = 'M'
-LIST = 'L'
-
-
-DYNAMODB_CONTEXT = Context(
- Emin=-128, Emax=126, prec=38,
- traps=[Clamped, Overflow, Inexact, Rounded, Underflow])
-
-
-BINARY_TYPES = (bytearray, six.binary_type)
-
-
-class Binary(object):
- """A class for representing Binary in dynamodb
-
- Especially for Python 2, use this class to explicitly specify
- binary data for item in DynamoDB. It is essentially a wrapper around
- binary. Unicode and Python 3 string types are not allowed.
- """
- def __init__(self, value):
- if not isinstance(value, BINARY_TYPES):
- raise TypeError('Value must be of the following types: %s.' %
- ', '.join([str(t) for t in BINARY_TYPES]))
- self.value = value
-
- def __eq__(self, other):
- if isinstance(other, Binary):
- return self.value == other.value
- return self.value == other
-
- def __ne__(self, other):
- return not self.__eq__(other)
-
- def __repr__(self):
- return 'Binary(%r)' % self.value
-
- def __str__(self):
- return self.value
-
- def __hash__(self):
- return hash(self.value)
-
-
-class TypeSerializer(object):
- """This class serializes Python data types to DynamoDB types."""
- def serialize(self, value):
- """The method to serialize the Python data types.
-
- :param value: A python value to be serialized to DynamoDB. Here are
- the various conversions:
-
- Python DynamoDB
- ------ --------
- None {'NULL': True}
- True/False {'BOOL': True/False}
- int/Decimal {'N': str(value)}
- string {'S': string}
- Binary/bytearray/bytes (py3 only) {'B': bytes}
- set([int/Decimal]) {'NS': [str(value)]}
- set([string]) {'SS': [string])
- set([Binary/bytearray/bytes]) {'BS': [bytes]}
- list {'L': list}
- dict {'M': dict}
-
- For types that involve numbers, it is recommended that ``Decimal``
- objects are used to be able to round-trip the Python type.
- For types that involve binary, it is recommended that ``Binary``
- objects are used to be able to round-trip the Python type.
-
- :rtype: dict
- :returns: A dictionary that represents a dynamoDB data type. These
- dictionaries can be directly passed to botocore methods.
- """
- dynamodb_type = self._get_dynamodb_type(value)
- serializer = getattr(self, '_serialize_%s' % dynamodb_type.lower())
- return {dynamodb_type: serializer(value)}
-
- def _get_dynamodb_type(self, value):
- dynamodb_type = None
-
- if self._is_null(value):
- dynamodb_type = NULL
-
- elif self._is_boolean(value):
- dynamodb_type = BOOLEAN
-
- elif self._is_number(value):
- dynamodb_type = NUMBER
-
- elif self._is_string(value):
- dynamodb_type = STRING
-
- elif self._is_binary(value):
- dynamodb_type = BINARY
-
- elif self._is_type_set(value, self._is_number):
- dynamodb_type = NUMBER_SET
-
- elif self._is_type_set(value, self._is_string):
- dynamodb_type = STRING_SET
-
- elif self._is_type_set(value, self._is_binary):
- dynamodb_type = BINARY_SET
-
- elif self._is_map(value):
- dynamodb_type = MAP
-
- elif self._is_list(value):
- dynamodb_type = LIST
-
- else:
- msg = 'Unsupported type "%s" for value "%s"' % (type(value), value)
- raise TypeError(msg)
-
- return dynamodb_type
-
- def _is_null(self, value):
- if value is None:
- return True
- return False
-
- def _is_boolean(self, value):
- if isinstance(value, bool):
- return True
- return False
-
- def _is_number(self, value):
- if isinstance(value, (six.integer_types, Decimal)):
- return True
- elif isinstance(value, float):
- raise TypeError(
- 'Float types are not supported. Use Decimal types instead.')
- return False
-
- def _is_string(self, value):
- if isinstance(value, six.string_types):
- return True
- return False
-
- def _is_binary(self, value):
- if isinstance(value, Binary):
- return True
- elif isinstance(value, bytearray):
- return True
- elif six.PY3 and isinstance(value, six.binary_type):
- return True
- return False
-
- def _is_set(self, value):
- if isinstance(value, Set):
- return True
- return False
-
- def _is_type_set(self, value, type_validator):
- if self._is_set(value):
- if False not in map(type_validator, value):
- return True
- return False
-
- def _is_map(self, value):
- if isinstance(value, Mapping):
- return True
- return False
-
- def _is_list(self, value):
- if isinstance(value, list):
- return True
- return False
-
- def _serialize_null(self, value):
- return True
-
- def _serialize_bool(self, value):
- return value
-
- def _serialize_n(self, value):
- number = str(DYNAMODB_CONTEXT.create_decimal(value))
- if number in ['Infinity', 'NaN']:
- raise TypeError('Infinity and NaN not supported')
- return number
-
- def _serialize_s(self, value):
- return value
-
- def _serialize_b(self, value):
- if isinstance(value, Binary):
- value = value.value
- return value
-
- def _serialize_ss(self, value):
- return [self._serialize_s(s) for s in value]
-
- def _serialize_ns(self, value):
- return [self._serialize_n(n) for n in value]
-
- def _serialize_bs(self, value):
- return [self._serialize_b(b) for b in value]
-
- def _serialize_l(self, value):
- return [self.serialize(v) for v in value]
-
- def _serialize_m(self, value):
- return dict([(k, self.serialize(v)) for k, v in value.items()])
-
-
-class TypeDeserializer(object):
- """This class deserializes DynamoDB types to Python types."""
- def deserialize(self, value):
- """The method to deserialize the DynamoDB data types.
-
- :param value: A DynamoDB value to be deserialized to a pythonic value.
- Here are the various conversions:
-
- DynamoDB Python
- -------- ------
- {'NULL': True} None
- {'BOOL': True/False} True/False
- {'N': str(value)} Decimal(str(value))
- {'S': string} string
- {'B': bytes} Binary(bytes)
- {'NS': [str(value)]} set([Decimal(str(value))])
- {'SS': [string]} set([string])
- {'BS': [bytes]} set([bytes])
- {'L': list} list
- {'M': dict} dict
-
- :returns: The pythonic value of the DynamoDB type.
- """
-
- if not value:
- raise TypeError('Value must be a nonempty dictionary whose key '
- 'is a valid dynamodb type.')
- dynamodb_type = list(value.keys())[0]
- try:
- deserializer = getattr(
- self, '_deserialize_%s' % dynamodb_type.lower())
- except AttributeError:
- raise TypeError(
- 'Dynamodb type %s is not supported' % dynamodb_type)
- return deserializer(value[dynamodb_type])
-
- def _deserialize_null(self, value):
- return None
-
- def _deserialize_bool(self, value):
- return value
-
- def _deserialize_n(self, value):
- return DYNAMODB_CONTEXT.create_decimal(value)
-
- def _deserialize_s(self, value):
- return value
-
- def _deserialize_b(self, value):
- return Binary(value)
-
- def _deserialize_ns(self, value):
- return set(map(self._deserialize_n, value))
-
- def _deserialize_ss(self, value):
- return set(map(self._deserialize_s, value))
-
- def _deserialize_bs(self, value):
- return set(map(self._deserialize_b, value))
-
- def _deserialize_l(self, value):
- return [self.deserialize(v) for v in value]
-
- def _deserialize_m(self, value):
- return dict([(k, self.deserialize(v)) for k, v in value.items()])
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/ec2/__init__.py b/.eggs/boto3-1.7.75-py2.7.egg/boto3/ec2/__init__.py
deleted file mode 100644
index c89416d7..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/ec2/__init__.py
+++ /dev/null
@@ -1,12 +0,0 @@
-# Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"). You
-# may not use this file except in compliance with the License. A copy of
-# the License is located at
-#
-# http://aws.amazon.com/apache2.0/
-#
-# or in the "license" file accompanying this file. This file 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/.eggs/boto3-1.7.75-py2.7.egg/boto3/ec2/createtags.py b/.eggs/boto3-1.7.75-py2.7.egg/boto3/ec2/createtags.py
deleted file mode 100644
index 14e0971b..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/ec2/createtags.py
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"). You
-# may not use this file except in compliance with the License. A copy of
-# the License is located at
-#
-# http://aws.amazon.com/apache2.0/
-#
-# or in the "license" file accompanying this file. This file 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.
-
-
-def inject_create_tags(event_name, class_attributes, **kwargs):
- """This injects a custom create_tags method onto the ec2 service resource
-
- This is needed because the resource model is not able to express
- creating multiple tag resources based on the fact you can apply a set
- of tags to multiple ec2 resources.
- """
- class_attributes['create_tags'] = create_tags
-
-
-def create_tags(self, **kwargs):
- # Call the client method
- self.meta.client.create_tags(**kwargs)
- resources = kwargs.get('Resources', [])
- tags = kwargs.get('Tags', [])
- tag_resources = []
-
- # Generate all of the tag resources that just were created with the
- # preceding client call.
- for resource in resources:
- for tag in tags:
- # Add each tag from the tag set for each resource to the list
- # that is returned by the method.
- tag_resource = self.Tag(resource, tag['Key'], tag['Value'])
- tag_resources.append(tag_resource)
- return tag_resources
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/ec2/deletetags.py b/.eggs/boto3-1.7.75-py2.7.egg/boto3/ec2/deletetags.py
deleted file mode 100644
index 0600b7c5..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/ec2/deletetags.py
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright 2016 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"). You
-# may not use this file except in compliance with the License. A copy of
-# the License is located at
-#
-# http://aws.amazon.com/apache2.0/
-#
-# or in the "license" file accompanying this file. This file 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.
-from boto3.resources.action import CustomModeledAction
-
-
-def inject_delete_tags(event_emitter, **kwargs):
- action_model = {
- 'request': {
- 'operation': 'DeleteTags',
- 'params': [{
- 'target': 'Resources[0]',
- 'source': 'identifier',
- 'name': 'Id'
- }]
- }
- }
- action = CustomModeledAction(
- 'delete_tags', action_model, delete_tags, event_emitter)
- action.inject(**kwargs)
-
-
-def delete_tags(self, **kwargs):
- kwargs['Resources'] = [self.id]
- return self.meta.client.delete_tags(**kwargs)
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/exceptions.py b/.eggs/boto3-1.7.75-py2.7.egg/boto3/exceptions.py
deleted file mode 100644
index 65a4a006..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/exceptions.py
+++ /dev/null
@@ -1,109 +0,0 @@
-# Copyright 2014 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"). You
-# may not use this file except in compliance with the License. A copy of
-# the License is located at
-#
-# http://aws.amazon.com/apache2.0/
-#
-# or in the "license" file accompanying this file. This file 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.
-
-# All exceptions in this class should subclass from Boto3Error.
-import botocore.exceptions
-
-
-# All exceptions should subclass from Boto3Error in this module.
-class Boto3Error(Exception):
- """Base class for all Boto3 errors."""
-
-
-class ResourceLoadException(Boto3Error):
- pass
-
-
-# NOTE: This doesn't appear to be used anywhere.
-# It's probably safe to remove this.
-class NoVersionFound(Boto3Error):
- pass
-
-
-# We're subclassing from botocore.exceptions.DataNotFoundError
-# to keep backwards compatibility with anyone that was catching
-# this low level Botocore error before this exception was
-# introduced in boto3.
-# Same thing for ResourceNotExistsError below.
-class UnknownAPIVersionError(Boto3Error,
- botocore.exceptions.DataNotFoundError):
- def __init__(self, service_name, bad_api_version,
- available_api_versions):
- msg = (
- "The '%s' resource does not an API version of: %s\n"
- "Valid API versions are: %s"
- % (service_name, bad_api_version, available_api_versions)
- )
- # Not using super because we don't want the DataNotFoundError
- # to be called, it has a different __init__ signature.
- Boto3Error.__init__(self, msg)
-
-
-class ResourceNotExistsError(Boto3Error,
- botocore.exceptions.DataNotFoundError):
- """Raised when you attempt to create a resource that does not exist."""
- def __init__(self, service_name, available_services, has_low_level_client):
- msg = (
- "The '%s' resource does not exist.\n"
- "The available resources are:\n"
- " - %s\n" % (service_name, '\n - '.join(available_services))
- )
- if has_low_level_client:
- msg += (
- "\nConsider using a boto3.client('%s') instead "
- "of a resource for '%s'" % (service_name, service_name))
- # Not using super because we don't want the DataNotFoundError
- # to be called, it has a different __init__ signature.
- Boto3Error.__init__(self, msg)
-
-
-class RetriesExceededError(Boto3Error):
- def __init__(self, last_exception, msg='Max Retries Exceeded'):
- super(RetriesExceededError, self).__init__(msg)
- self.last_exception = last_exception
-
-
-class S3TransferFailedError(Boto3Error):
- pass
-
-
-class S3UploadFailedError(Boto3Error):
- pass
-
-
-class DynamoDBOperationNotSupportedError(Boto3Error):
- """Raised for operantions that are not supported for an operand"""
- def __init__(self, operation, value):
- msg = (
- '%s operation cannot be applied to value %s of type %s directly. '
- 'Must use AttributeBase object methods (i.e. Attr().eq()). to '
- 'generate ConditionBase instances first.' %
- (operation, value, type(value)))
- Exception.__init__(self, msg)
-
-# FIXME: Backward compatibility
-DynanmoDBOperationNotSupportedError = DynamoDBOperationNotSupportedError
-
-
-class DynamoDBNeedsConditionError(Boto3Error):
- """Raised when input is not a condition"""
- def __init__(self, value):
- msg = (
- 'Expecting a ConditionBase object. Got %s of type %s. '
- 'Use AttributeBase object methods (i.e. Attr().eq()). to '
- 'generate ConditionBase instances.' % (value, type(value)))
- Exception.__init__(self, msg)
-
-
-class DynamoDBNeedsKeyConditionError(Boto3Error):
- pass
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/resources/__init__.py b/.eggs/boto3-1.7.75-py2.7.egg/boto3/resources/__init__.py
deleted file mode 100644
index e69de29b..00000000
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/resources/action.py b/.eggs/boto3-1.7.75-py2.7.egg/boto3/resources/action.py
deleted file mode 100644
index 52dea55d..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/resources/action.py
+++ /dev/null
@@ -1,244 +0,0 @@
-# Copyright 2014 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"). You
-# may not use this file except in compliance with the License. A copy of
-# the License is located at
-#
-# http://aws.amazon.com/apache2.0/
-#
-# or in the "license" file accompanying this file. This file 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.
-
-import logging
-
-from botocore import xform_name
-
-from .params import create_request_parameters
-from .response import RawHandler, ResourceHandler
-from .model import Action
-
-from boto3.docs.docstring import ActionDocstring
-from boto3.utils import inject_attribute
-
-
-logger = logging.getLogger(__name__)
-
-
-class ServiceAction(object):
- """
- A class representing a callable action on a resource, for example
- ``sqs.get_queue_by_name(...)`` or ``s3.Bucket('foo').delete()``.
- The action may construct parameters from existing resource identifiers
- and may return either a raw response or a new resource instance.
-
- :type action_model: :py:class`~boto3.resources.model.Action`
- :param action_model: The action model.
-
- :type factory: ResourceFactory
- :param factory: The factory that created the resource class to which
- this action is attached.
-
- :type service_context: :py:class:`~boto3.utils.ServiceContext`
- :param service_context: Context about the AWS service
- """
- def __init__(self, action_model, factory=None, service_context=None):
- self._action_model = action_model
-
- # In the simplest case we just return the response, but if a
- # resource is defined, then we must create these before returning.
- resource_response_model = action_model.resource
- if resource_response_model:
- self._response_handler = ResourceHandler(
- search_path=resource_response_model.path,
- factory=factory, resource_model=resource_response_model,
- service_context=service_context,
- operation_name=action_model.request.operation
- )
- else:
- self._response_handler = RawHandler(action_model.path)
-
- def __call__(self, parent, *args, **kwargs):
- """
- Perform the action's request operation after building operation
- parameters and build any defined resources from the response.
-
- :type parent: :py:class:`~boto3.resources.base.ServiceResource`
- :param parent: The resource instance to which this action is attached.
- :rtype: dict or ServiceResource or list(ServiceResource)
- :return: The response, either as a raw dict or resource instance(s).
- """
- operation_name = xform_name(self._action_model.request.operation)
-
- # First, build predefined params and then update with the
- # user-supplied kwargs, which allows overriding the pre-built
- # params if needed.
- params = create_request_parameters(parent, self._action_model.request)
- params.update(kwargs)
-
- logger.debug('Calling %s:%s with %r', parent.meta.service_name,
- operation_name, params)
-
- response = getattr(parent.meta.client, operation_name)(**params)
-
- logger.debug('Response: %r', response)
-
- return self._response_handler(parent, params, response)
-
-
-class BatchAction(ServiceAction):
- """
- An action which operates on a batch of items in a collection, typically
- a single page of results from the collection's underlying service
- operation call. For example, this allows you to delete up to 999
- S3 objects in a single operation rather than calling ``.delete()`` on
- each one individually.
-
- :type action_model: :py:class`~boto3.resources.model.Action`
- :param action_model: The action model.
-
- :type factory: ResourceFactory
- :param factory: The factory that created the resource class to which
- this action is attached.
-
- :type service_context: :py:class:`~boto3.utils.ServiceContext`
- :param service_context: Context about the AWS service
- """
- def __call__(self, parent, *args, **kwargs):
- """
- Perform the batch action's operation on every page of results
- from the collection.
-
- :type parent:
- :py:class:`~boto3.resources.collection.ResourceCollection`
- :param parent: The collection iterator to which this action
- is attached.
- :rtype: list(dict)
- :return: A list of low-level response dicts from each call.
- """
- service_name = None
- client = None
- responses = []
- operation_name = xform_name(self._action_model.request.operation)
-
- # Unlike the simple action above, a batch action must operate
- # on batches (or pages) of items. So we get each page, construct
- # the necessary parameters and call the batch operation.
- for page in parent.pages():
- params = {}
- for index, resource in enumerate(page):
- # There is no public interface to get a service name
- # or low-level client from a collection, so we get
- # these from the first resource in the collection.
- if service_name is None:
- service_name = resource.meta.service_name
- if client is None:
- client = resource.meta.client
-
- create_request_parameters(
- resource, self._action_model.request,
- params=params, index=index)
-
- if not params:
- # There are no items, no need to make a call.
- break
-
- params.update(kwargs)
-
- logger.debug('Calling %s:%s with %r',
- service_name, operation_name, params)
-
- response = getattr(client, operation_name)(**params)
-
- logger.debug('Response: %r', response)
-
- responses.append(
- self._response_handler(parent, params, response))
-
- return responses
-
-
-class WaiterAction(object):
- """
- A class representing a callable waiter action on a resource, for example
- ``s3.Bucket('foo').wait_until_bucket_exists()``.
- The waiter action may construct parameters from existing resource
- identifiers.
-
- :type waiter_model: :py:class`~boto3.resources.model.Waiter`
- :param waiter_model: The action waiter.
- :type waiter_resource_name: string
- :param waiter_resource_name: The name of the waiter action for the
- resource. It usually begins with a
- ``wait_until_``
- """
- def __init__(self, waiter_model, waiter_resource_name):
- self._waiter_model = waiter_model
- self._waiter_resource_name = waiter_resource_name
-
- def __call__(self, parent, *args, **kwargs):
- """
- Perform the wait operation after building operation
- parameters.
-
- :type parent: :py:class:`~boto3.resources.base.ServiceResource`
- :param parent: The resource instance to which this action is attached.
- """
- client_waiter_name = xform_name(self._waiter_model.waiter_name)
-
- # First, build predefined params and then update with the
- # user-supplied kwargs, which allows overriding the pre-built
- # params if needed.
- params = create_request_parameters(parent, self._waiter_model)
- params.update(kwargs)
-
- logger.debug('Calling %s:%s with %r',
- parent.meta.service_name,
- self._waiter_resource_name, params)
-
- client = parent.meta.client
- waiter = client.get_waiter(client_waiter_name)
- response = waiter.wait(**params)
-
- logger.debug('Response: %r', response)
-
-
-class CustomModeledAction(object):
- """A custom, modeled action to inject into a resource."""
- def __init__(self, action_name, action_model,
- function, event_emitter):
- """
- :type action_name: str
- :param action_name: The name of the action to inject, e.g.
- 'delete_tags'
-
- :type action_model: dict
- :param action_model: A JSON definition of the action, as if it were
- part of the resource model.
-
- :type function: function
- :param function: The function to perform when the action is called.
- The first argument should be 'self', which will be the resource
- the function is to be called on.
-
- :type event_emitter: :py:class:`botocore.hooks.BaseEventHooks`
- :param event_emitter: The session event emitter.
- """
- self.name = action_name
- self.model = action_model
- self.function = function
- self.emitter = event_emitter
-
- def inject(self, class_attributes, service_context, event_name, **kwargs):
- resource_name = event_name.rsplit(".")[-1]
- action = Action(self.name, self.model, {})
- self.function.__name__ = self.name
- self.function.__doc__ = ActionDocstring(
- resource_name=resource_name,
- event_emitter=self.emitter,
- action_model=action,
- service_model=service_context.service_model,
- include_signature=False
- )
- inject_attribute(class_attributes, self.name, self.function)
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/resources/base.py b/.eggs/boto3-1.7.75-py2.7.egg/boto3/resources/base.py
deleted file mode 100644
index 4e60c5a7..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/resources/base.py
+++ /dev/null
@@ -1,148 +0,0 @@
-# Copyright 2014 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"). You
-# may not use this file except in compliance with the License. A copy of
-# the License is located at
-#
-# http://aws.amazon.com/apache2.0/
-#
-# or in the "license" file accompanying this file. This file 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.
-
-import logging
-
-import boto3
-
-
-logger = logging.getLogger(__name__)
-
-
-class ResourceMeta(object):
- """
- An object containing metadata about a resource.
- """
- def __init__(self, service_name, identifiers=None, client=None,
- data=None, resource_model=None):
- #: (``string``) The service name, e.g. 's3'
- self.service_name = service_name
-
- if identifiers is None:
- identifiers = []
- #: (``list``) List of identifier names
- self.identifiers = identifiers
-
- #: (:py:class:`~botocore.client.BaseClient`) Low-level Botocore client
- self.client = client
- #: (``dict``) Loaded resource data attributes
- self.data = data
-
- # The resource model for that resource
- self.resource_model = resource_model
-
- def __repr__(self):
- return 'ResourceMeta(\'{0}\', identifiers={1})'.format(
- self.service_name, self.identifiers)
-
- def __eq__(self, other):
- # Two metas are equal if their components are all equal
- if other.__class__.__name__ != self.__class__.__name__:
- return False
-
- return self.__dict__ == other.__dict__
-
- def copy(self):
- """
- Create a copy of this metadata object.
- """
- params = self.__dict__.copy()
- service_name = params.pop('service_name')
- return ResourceMeta(service_name, **params)
-
-
-class ServiceResource(object):
- """
- A base class for resources.
-
- :type client: botocore.client
- :param client: A low-level Botocore client instance
- """
-
- meta = None
- """
- Stores metadata about this resource instance, such as the
- ``service_name``, the low-level ``client`` and any cached ``data``
- from when the instance was hydrated. For example::
-
- # Get a low-level client from a resource instance
- client = resource.meta.client
- response = client.operation(Param='foo')
-
- # Print the resource instance's service short name
- print(resource.meta.service_name)
-
- See :py:class:`ResourceMeta` for more information.
- """
-
- def __init__(self, *args, **kwargs):
- # Always work on a copy of meta, otherwise we would affect other
- # instances of the same subclass.
- self.meta = self.meta.copy()
-
- # Create a default client if none was passed
- if kwargs.get('client') is not None:
- self.meta.client = kwargs.get('client')
- else:
- self.meta.client = boto3.client(self.meta.service_name)
-
- # Allow setting identifiers as positional arguments in the order
- # in which they were defined in the ResourceJSON.
- for i, value in enumerate(args):
- setattr(self, '_' + self.meta.identifiers[i], value)
-
- # Allow setting identifiers via keyword arguments. Here we need
- # extra logic to ignore other keyword arguments like ``client``.
- for name, value in kwargs.items():
- if name == 'client':
- continue
-
- if name not in self.meta.identifiers:
- raise ValueError('Unknown keyword argument: {0}'.format(name))
-
- setattr(self, '_' + name, value)
-
- # Validate that all identifiers have been set.
- for identifier in self.meta.identifiers:
- if getattr(self, identifier) is None:
- raise ValueError(
- 'Required parameter {0} not set'.format(identifier))
-
- def __repr__(self):
- identifiers = []
- for identifier in self.meta.identifiers:
- identifiers.append('{0}={1}'.format(
- identifier, repr(getattr(self, identifier))))
- return "{0}({1})".format(
- self.__class__.__name__,
- ', '.join(identifiers),
- )
-
- def __eq__(self, other):
- # Should be instances of the same resource class
- if other.__class__.__name__ != self.__class__.__name__:
- return False
-
- # Each of the identifiers should have the same value in both
- # instances, e.g. two buckets need the same name to be equal.
- for identifier in self.meta.identifiers:
- if getattr(self, identifier) != getattr(other, identifier):
- return False
-
- return True
-
- def __hash__(self):
- identifiers = []
- for identifier in self.meta.identifiers:
- identifiers.append(getattr(self, identifier))
- return hash((self.__class__.__name__, tuple(identifiers)))
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/resources/collection.py b/.eggs/boto3-1.7.75-py2.7.egg/boto3/resources/collection.py
deleted file mode 100644
index 083f9cdd..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/resources/collection.py
+++ /dev/null
@@ -1,526 +0,0 @@
-# Copyright 2014 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"). You
-# may not use this file except in compliance with the License. A copy of
-# the License is located at
-#
-# http://aws.amazon.com/apache2.0/
-#
-# or in the "license" file accompanying this file. This file 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.
-
-import copy
-import logging
-
-from botocore import xform_name
-from botocore.utils import merge_dicts
-
-from .action import BatchAction
-from .params import create_request_parameters
-from .response import ResourceHandler
-from ..docs import docstring
-
-
-logger = logging.getLogger(__name__)
-
-
-class ResourceCollection(object):
- """
- Represents a collection of resources, which can be iterated through,
- optionally with filtering. Collections automatically handle pagination
- for you.
-
- See :ref:`guide_collections` for a high-level overview of collections,
- including when remote service requests are performed.
-
- :type model: :py:class:`~boto3.resources.model.Collection`
- :param model: Collection model
- :type parent: :py:class:`~boto3.resources.base.ServiceResource`
- :param parent: The collection's parent resource
- :type handler: :py:class:`~boto3.resources.response.ResourceHandler`
- :param handler: The resource response handler used to create resource
- instances
- """
- def __init__(self, model, parent, handler, **kwargs):
- self._model = model
- self._parent = parent
- self._py_operation_name = xform_name(
- model.request.operation)
- self._handler = handler
- self._params = copy.deepcopy(kwargs)
-
- def __repr__(self):
- return '{0}({1}, {2})'.format(
- self.__class__.__name__,
- self._parent,
- '{0}.{1}'.format(
- self._parent.meta.service_name,
- self._model.resource.type
- )
- )
-
- def __iter__(self):
- """
- A generator which yields resource instances after doing the
- appropriate service operation calls and handling any pagination
- on your behalf.
-
- Page size, item limit, and filter parameters are applied
- if they have previously been set.
-
- >>> bucket = s3.Bucket('boto3')
- >>> for obj in bucket.objects.all():
- ... print(obj.key)
- 'key1'
- 'key2'
-
- """
- limit = self._params.get('limit', None)
-
- count = 0
- for page in self.pages():
- for item in page:
- yield item
-
- # If the limit is set and has been reached, then
- # we stop processing items here.
- count += 1
- if limit is not None and count >= limit:
- return
-
- def _clone(self, **kwargs):
- """
- Create a clone of this collection. This is used by the methods
- below to provide a chainable interface that returns copies
- rather than the original. This allows things like:
-
- >>> base = collection.filter(Param1=1)
- >>> query1 = base.filter(Param2=2)
- >>> query2 = base.filter(Param3=3)
- >>> query1.params
- {'Param1': 1, 'Param2': 2}
- >>> query2.params
- {'Param1': 1, 'Param3': 3}
-
- :rtype: :py:class:`ResourceCollection`
- :return: A clone of this resource collection
- """
- params = copy.deepcopy(self._params)
- merge_dicts(params, kwargs, append_lists=True)
- clone = self.__class__(self._model, self._parent,
- self._handler, **params)
- return clone
-
- def pages(self):
- """
- A generator which yields pages of resource instances after
- doing the appropriate service operation calls and handling
- any pagination on your behalf. Non-paginated calls will
- return a single page of items.
-
- Page size, item limit, and filter parameters are applied
- if they have previously been set.
-
- >>> bucket = s3.Bucket('boto3')
- >>> for page in bucket.objects.pages():
- ... for obj in page:
- ... print(obj.key)
- 'key1'
- 'key2'
-
- :rtype: list(:py:class:`~boto3.resources.base.ServiceResource`)
- :return: List of resource instances
- """
- client = self._parent.meta.client
- cleaned_params = self._params.copy()
- limit = cleaned_params.pop('limit', None)
- page_size = cleaned_params.pop('page_size', None)
- params = create_request_parameters(
- self._parent, self._model.request)
- merge_dicts(params, cleaned_params, append_lists=True)
-
- # Is this a paginated operation? If so, we need to get an
- # iterator for the various pages. If not, then we simply
- # call the operation and return the result as a single
- # page in a list. For non-paginated results, we just ignore
- # the page size parameter.
- if client.can_paginate(self._py_operation_name):
- logger.debug('Calling paginated %s:%s with %r',
- self._parent.meta.service_name,
- self._py_operation_name, params)
- paginator = client.get_paginator(self._py_operation_name)
- pages = paginator.paginate(
- PaginationConfig={
- 'MaxItems': limit, 'PageSize': page_size}, **params)
- else:
- logger.debug('Calling %s:%s with %r',
- self._parent.meta.service_name,
- self._py_operation_name, params)
- pages = [getattr(client, self._py_operation_name)(**params)]
-
- # Now that we have a page iterator or single page of results
- # we start processing and yielding individual items.
- count = 0
- for page in pages:
- page_items = []
- for item in self._handler(self._parent, params, page):
- page_items.append(item)
-
- # If the limit is set and has been reached, then
- # we stop processing items here.
- count += 1
- if limit is not None and count >= limit:
- break
-
- yield page_items
-
- # Stop reading pages if we've reached out limit
- if limit is not None and count >= limit:
- break
-
- def all(self):
- """
- Get all items from the collection, optionally with a custom
- page size and item count limit.
-
- This method returns an iterable generator which yields
- individual resource instances. Example use::
-
- # Iterate through items
- >>> for queue in sqs.queues.all():
- ... print(queue.url)
- 'https://url1'
- 'https://url2'
-
- # Convert to list
- >>> queues = list(sqs.queues.all())
- >>> len(queues)
- 2
- """
- return self._clone()
-
- def filter(self, **kwargs):
- """
- Get items from the collection, passing keyword arguments along
- as parameters to the underlying service operation, which are
- typically used to filter the results.
-
- This method returns an iterable generator which yields
- individual resource instances. Example use::
-
- # Iterate through items
- >>> for queue in sqs.queues.filter(Param='foo'):
- ... print(queue.url)
- 'https://url1'
- 'https://url2'
-
- # Convert to list
- >>> queues = list(sqs.queues.filter(Param='foo'))
- >>> len(queues)
- 2
-
- :rtype: :py:class:`ResourceCollection`
- """
- return self._clone(**kwargs)
-
- def limit(self, count):
- """
- Return at most this many resources.
-
- >>> for bucket in s3.buckets.limit(5):
- ... print(bucket.name)
- 'bucket1'
- 'bucket2'
- 'bucket3'
- 'bucket4'
- 'bucket5'
-
- :type count: int
- :param count: Return no more than this many items
- :rtype: :py:class:`ResourceCollection`
- """
- return self._clone(limit=count)
-
- def page_size(self, count):
- """
- Fetch at most this many resources per service request.
-
- >>> for obj in s3.Bucket('boto3').objects.page_size(100):
- ... print(obj.key)
-
- :type count: int
- :param count: Fetch this many items per request
- :rtype: :py:class:`ResourceCollection`
- """
- return self._clone(page_size=count)
-
-
-class CollectionManager(object):
- """
- A collection manager provides access to resource collection instances,
- which can be iterated and filtered. The manager exposes some
- convenience functions that are also found on resource collections,
- such as :py:meth:`~ResourceCollection.all` and
- :py:meth:`~ResourceCollection.filter`.
-
- Get all items::
-
- >>> for bucket in s3.buckets.all():
- ... print(bucket.name)
-
- Get only some items via filtering::
-
- >>> for queue in sqs.queues.filter(QueueNamePrefix='AWS'):
- ... print(queue.url)
-
- Get whole pages of items:
-
- >>> for page in s3.Bucket('boto3').objects.pages():
- ... for obj in page:
- ... print(obj.key)
-
- A collection manager is not iterable. You **must** call one of the
- methods that return a :py:class:`ResourceCollection` before trying
- to iterate, slice, or convert to a list.
-
- See the :ref:`guide_collections` guide for a high-level overview
- of collections, including when remote service requests are performed.
-
- :type collection_model: :py:class:`~boto3.resources.model.Collection`
- :param model: Collection model
-
- :type parent: :py:class:`~boto3.resources.base.ServiceResource`
- :param parent: The collection's parent resource
-
- :type factory: :py:class:`~boto3.resources.factory.ResourceFactory`
- :param factory: The resource factory to create new resources
-
- :type service_context: :py:class:`~boto3.utils.ServiceContext`
- :param service_context: Context about the AWS service
- """
- # The class to use when creating an iterator
- _collection_cls = ResourceCollection
-
- def __init__(self, collection_model, parent, factory, service_context):
- self._model = collection_model
- operation_name = self._model.request.operation
- self._parent = parent
-
- search_path = collection_model.resource.path
- self._handler = ResourceHandler(
- search_path=search_path, factory=factory,
- resource_model=collection_model.resource,
- service_context=service_context,
- operation_name=operation_name
- )
-
- def __repr__(self):
- return '{0}({1}, {2})'.format(
- self.__class__.__name__,
- self._parent,
- '{0}.{1}'.format(
- self._parent.meta.service_name,
- self._model.resource.type
- )
- )
-
- def iterator(self, **kwargs):
- """
- Get a resource collection iterator from this manager.
-
- :rtype: :py:class:`ResourceCollection`
- :return: An iterable representing the collection of resources
- """
- return self._collection_cls(self._model, self._parent,
- self._handler, **kwargs)
-
- # Set up some methods to proxy ResourceCollection methods
- def all(self):
- return self.iterator()
- all.__doc__ = ResourceCollection.all.__doc__
-
- def filter(self, **kwargs):
- return self.iterator(**kwargs)
- filter.__doc__ = ResourceCollection.filter.__doc__
-
- def limit(self, count):
- return self.iterator(limit=count)
- limit.__doc__ = ResourceCollection.limit.__doc__
-
- def page_size(self, count):
- return self.iterator(page_size=count)
- page_size.__doc__ = ResourceCollection.page_size.__doc__
-
- def pages(self):
- return self.iterator().pages()
- pages.__doc__ = ResourceCollection.pages.__doc__
-
-
-class CollectionFactory(object):
- """
- A factory to create new
- :py:class:`CollectionManager` and :py:class:`ResourceCollection`
- subclasses from a :py:class:`~boto3.resources.model.Collection`
- model. These subclasses include methods to perform batch operations.
- """
- def load_from_definition(self, resource_name, collection_model,
- service_context, event_emitter):
- """
- Loads a collection from a model, creating a new
- :py:class:`CollectionManager` subclass
- with the correct properties and methods, named based on the service
- and resource name, e.g. ec2.InstanceCollectionManager. It also
- creates a new :py:class:`ResourceCollection` subclass which is used
- by the new manager class.
-
- :type resource_name: string
- :param resource_name: Name of the resource to look up. For services,
- this should match the ``service_name``.
-
- :type service_context: :py:class:`~boto3.utils.ServiceContext`
- :param service_context: Context about the AWS service
-
- :type event_emitter: :py:class:`~botocore.hooks.HierarchialEmitter`
- :param event_emitter: An event emitter
-
- :rtype: Subclass of :py:class:`CollectionManager`
- :return: The collection class.
- """
- attrs = {}
- collection_name = collection_model.name
-
- # Create the batch actions for a collection
- self._load_batch_actions(
- attrs, resource_name, collection_model,
- service_context.service_model, event_emitter)
- # Add the documentation to the collection class's methods
- self._load_documented_collection_methods(
- attrs=attrs, resource_name=resource_name,
- collection_model=collection_model,
- service_model=service_context.service_model,
- event_emitter=event_emitter,
- base_class=ResourceCollection)
-
- if service_context.service_name == resource_name:
- cls_name = '{0}.{1}Collection'.format(
- service_context.service_name, collection_name)
- else:
- cls_name = '{0}.{1}.{2}Collection'.format(
- service_context.service_name, resource_name, collection_name)
-
- collection_cls = type(str(cls_name), (ResourceCollection,),
- attrs)
-
- # Add the documentation to the collection manager's methods
- self._load_documented_collection_methods(
- attrs=attrs, resource_name=resource_name,
- collection_model=collection_model,
- service_model=service_context.service_model,
- event_emitter=event_emitter,
- base_class=CollectionManager)
- attrs['_collection_cls'] = collection_cls
- cls_name += 'Manager'
-
- return type(str(cls_name), (CollectionManager,), attrs)
-
- def _load_batch_actions(self, attrs, resource_name, collection_model,
- service_model, event_emitter):
- """
- Batch actions on the collection become methods on both
- the collection manager and iterators.
- """
- for action_model in collection_model.batch_actions:
- snake_cased = xform_name(action_model.name)
- attrs[snake_cased] = self._create_batch_action(
- resource_name, snake_cased, action_model, collection_model,
- service_model, event_emitter)
-
- def _load_documented_collection_methods(
- factory_self, attrs, resource_name, collection_model,
- service_model, event_emitter, base_class):
- # The base class already has these methods defined. However
- # the docstrings are generic and not based for a particular service
- # or resource. So we override these methods by proxying to the
- # base class's builtin method and adding a docstring
- # that pertains to the resource.
-
- # A collection's all() method.
- def all(self):
- return base_class.all(self)
-
- all.__doc__ = docstring.CollectionMethodDocstring(
- resource_name=resource_name,
- action_name='all',
- event_emitter=event_emitter,
- collection_model=collection_model,
- service_model=service_model,
- include_signature=False
- )
- attrs['all'] = all
-
- # The collection's filter() method.
- def filter(self, **kwargs):
- return base_class.filter(self, **kwargs)
-
- filter.__doc__ = docstring.CollectionMethodDocstring(
- resource_name=resource_name,
- action_name='filter',
- event_emitter=event_emitter,
- collection_model=collection_model,
- service_model=service_model,
- include_signature=False
- )
- attrs['filter'] = filter
-
- # The collection's limit method.
- def limit(self, count):
- return base_class.limit(self, count)
-
- limit.__doc__ = docstring.CollectionMethodDocstring(
- resource_name=resource_name,
- action_name='limit',
- event_emitter=event_emitter,
- collection_model=collection_model,
- service_model=service_model,
- include_signature=False
- )
- attrs['limit'] = limit
-
- # The collection's page_size method.
- def page_size(self, count):
- return base_class.page_size(self, count)
-
- page_size.__doc__ = docstring.CollectionMethodDocstring(
- resource_name=resource_name,
- action_name='page_size',
- event_emitter=event_emitter,
- collection_model=collection_model,
- service_model=service_model,
- include_signature=False
- )
- attrs['page_size'] = page_size
-
- def _create_batch_action(factory_self, resource_name, snake_cased,
- action_model, collection_model, service_model,
- event_emitter):
- """
- Creates a new method which makes a batch operation request
- to the underlying service API.
- """
- action = BatchAction(action_model)
-
- def batch_action(self, *args, **kwargs):
- return action(self, *args, **kwargs)
-
- batch_action.__name__ = str(snake_cased)
- batch_action.__doc__ = docstring.BatchActionDocstring(
- resource_name=resource_name,
- event_emitter=event_emitter,
- batch_action_model=action_model,
- service_model=service_model,
- collection_model=collection_model,
- include_signature=False
- )
- return batch_action
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/resources/factory.py b/.eggs/boto3-1.7.75-py2.7.egg/boto3/resources/factory.py
deleted file mode 100644
index ccd55bfe..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/resources/factory.py
+++ /dev/null
@@ -1,539 +0,0 @@
-# Copyright 2014 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"). You
-# may not use this file except in compliance with the License. A copy of
-# the License is located at
-#
-# http://aws.amazon.com/apache2.0/
-#
-# or in the "license" file accompanying this file. This file 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.
-
-import logging
-from functools import partial
-
-from .action import ServiceAction
-from .action import WaiterAction
-from .base import ResourceMeta, ServiceResource
-from .collection import CollectionFactory
-from .model import ResourceModel
-from .response import build_identifiers, ResourceHandler
-from ..exceptions import ResourceLoadException
-from ..docs import docstring
-
-
-logger = logging.getLogger(__name__)
-
-
-class ResourceFactory(object):
- """
- A factory to create new :py:class:`~boto3.resources.base.ServiceResource`
- classes from a :py:class:`~boto3.resources.model.ResourceModel`. There are
- two types of lookups that can be done: one on the service itself (e.g. an
- SQS resource) and another on models contained within the service (e.g. an
- SQS Queue resource).
- """
- def __init__(self, emitter):
- self._collection_factory = CollectionFactory()
- self._emitter = emitter
-
- def load_from_definition(self, resource_name,
- single_resource_json_definition, service_context):
- """
- Loads a resource from a model, creating a new
- :py:class:`~boto3.resources.base.ServiceResource` subclass
- with the correct properties and methods, named based on the service
- and resource name, e.g. EC2.Instance.
-
- :type resource_name: string
- :param resource_name: Name of the resource to look up. For services,
- this should match the ``service_name``.
-
- :type single_resource_json_definition: dict
- :param single_resource_json_definition:
- The loaded json of a single service resource or resource
- definition.
-
- :type service_context: :py:class:`~boto3.utils.ServiceContext`
- :param service_context: Context about the AWS service
-
- :rtype: Subclass of :py:class:`~boto3.resources.base.ServiceResource`
- :return: The service or resource class.
- """
- logger.debug('Loading %s:%s', service_context.service_name,
- resource_name)
-
- # Using the loaded JSON create a ResourceModel object.
- resource_model = ResourceModel(
- resource_name, single_resource_json_definition,
- service_context.resource_json_definitions
- )
-
- # Do some renaming of the shape if there was a naming collision
- # that needed to be accounted for.
- shape = None
- if resource_model.shape:
- shape = service_context.service_model.shape_for(
- resource_model.shape)
- resource_model.load_rename_map(shape)
-
- # Set some basic info
- meta = ResourceMeta(
- service_context.service_name, resource_model=resource_model)
- attrs = {
- 'meta': meta,
- }
-
- # Create and load all of attributes of the resource class based
- # on the models.
-
- # Identifiers
- self._load_identifiers(
- attrs=attrs, meta=meta, resource_name=resource_name,
- resource_model=resource_model
- )
-
- # Load/Reload actions
- self._load_actions(
- attrs=attrs, resource_name=resource_name,
- resource_model=resource_model, service_context=service_context
- )
-
- # Attributes that get auto-loaded
- self._load_attributes(
- attrs=attrs, meta=meta, resource_name=resource_name,
- resource_model=resource_model,
- service_context=service_context)
-
- # Collections and their corresponding methods
- self._load_collections(
- attrs=attrs, resource_model=resource_model,
- service_context=service_context)
-
- # References and Subresources
- self._load_has_relations(
- attrs=attrs, resource_name=resource_name,
- resource_model=resource_model, service_context=service_context
- )
-
- # Waiter resource actions
- self._load_waiters(
- attrs=attrs, resource_name=resource_name,
- resource_model=resource_model, service_context=service_context
- )
-
- # Create the name based on the requested service and resource
- cls_name = resource_name
- if service_context.service_name == resource_name:
- cls_name = 'ServiceResource'
- cls_name = service_context.service_name + '.' + cls_name
-
- base_classes = [ServiceResource]
- if self._emitter is not None:
- self._emitter.emit(
- 'creating-resource-class.%s' % cls_name,
- class_attributes=attrs, base_classes=base_classes,
- service_context=service_context)
- return type(str(cls_name), tuple(base_classes), attrs)
-
- def _load_identifiers(self, attrs, meta, resource_model, resource_name):
- """
- Populate required identifiers. These are arguments without which
- the resource cannot be used. Identifiers become arguments for
- operations on the resource.
- """
- for identifier in resource_model.identifiers:
- meta.identifiers.append(identifier.name)
- attrs[identifier.name] = self._create_identifier(
- identifier, resource_name)
-
- def _load_actions(self, attrs, resource_name, resource_model,
- service_context):
- """
- Actions on the resource become methods, with the ``load`` method
- being a special case which sets internal data for attributes, and
- ``reload`` is an alias for ``load``.
- """
- if resource_model.load:
- attrs['load'] = self._create_action(
- action_model=resource_model.load, resource_name=resource_name,
- service_context=service_context, is_load=True)
- attrs['reload'] = attrs['load']
-
- for action in resource_model.actions:
- attrs[action.name] = self._create_action(
- action_model=action, resource_name=resource_name,
- service_context=service_context)
-
- def _load_attributes(self, attrs, meta, resource_name, resource_model,
- service_context):
- """
- Load resource attributes based on the resource shape. The shape
- name is referenced in the resource JSON, but the shape itself
- is defined in the Botocore service JSON, hence the need for
- access to the ``service_model``.
- """
- if not resource_model.shape:
- return
-
- shape = service_context.service_model.shape_for(
- resource_model.shape)
-
- identifiers = dict(
- (i.member_name, i)
- for i in resource_model.identifiers if i.member_name)
- attributes = resource_model.get_attributes(shape)
- for name, (orig_name, member) in attributes.items():
- if name in identifiers:
- prop = self._create_identifier_alias(
- resource_name=resource_name,
- identifier=identifiers[name],
- member_model=member,
- service_context=service_context
- )
- else:
- prop = self._create_autoload_property(
- resource_name=resource_name,
- name=orig_name, snake_cased=name,
- member_model=member,
- service_context=service_context
- )
- attrs[name] = prop
-
- def _load_collections(self, attrs, resource_model, service_context):
- """
- Load resource collections from the model. Each collection becomes
- a :py:class:`~boto3.resources.collection.CollectionManager` instance
- on the resource instance, which allows you to iterate and filter
- through the collection's items.
- """
- for collection_model in resource_model.collections:
- attrs[collection_model.name] = self._create_collection(
- resource_name=resource_model.name,
- collection_model=collection_model,
- service_context=service_context
- )
-
- def _load_has_relations(self, attrs, resource_name, resource_model,
- service_context):
- """
- Load related resources, which are defined via a ``has``
- relationship but conceptually come in two forms:
-
- 1. A reference, which is a related resource instance and can be
- ``None``, such as an EC2 instance's ``vpc``.
- 2. A subresource, which is a resource constructor that will always
- return a resource instance which shares identifiers/data with
- this resource, such as ``s3.Bucket('name').Object('key')``.
- """
- for reference in resource_model.references:
- # This is a dangling reference, i.e. we have all
- # the data we need to create the resource, so
- # this instance becomes an attribute on the class.
- attrs[reference.name] = self._create_reference(
- reference_model=reference,
- resource_name=resource_name,
- service_context=service_context
- )
-
- for subresource in resource_model.subresources:
- # This is a sub-resource class you can create
- # by passing in an identifier, e.g. s3.Bucket(name).
- attrs[subresource.name] = self._create_class_partial(
- subresource_model=subresource,
- resource_name=resource_name,
- service_context=service_context
- )
-
- self._create_available_subresources_command(
- attrs, resource_model.subresources)
-
- def _create_available_subresources_command(self, attrs, subresources):
- _subresources = [subresource.name for subresource in subresources]
- _subresources = sorted(_subresources)
-
- def get_available_subresources(factory_self):
- """
- Returns a list of all the available sub-resources for this
- Resource.
-
- :returns: A list containing the name of each sub-resource for this
- resource
- :rtype: list of str
- """
- return _subresources
-
- attrs['get_available_subresources'] = get_available_subresources
-
- def _load_waiters(self, attrs, resource_name, resource_model,
- service_context):
- """
- Load resource waiters from the model. Each waiter allows you to
- wait until a resource reaches a specific state by polling the state
- of the resource.
- """
- for waiter in resource_model.waiters:
- attrs[waiter.name] = self._create_waiter(
- resource_waiter_model=waiter,
- resource_name=resource_name,
- service_context=service_context
- )
-
- def _create_identifier(factory_self, identifier, resource_name):
- """
- Creates a read-only property for identifier attributes.
- """
- def get_identifier(self):
- # The default value is set to ``None`` instead of
- # raising an AttributeError because when resources are
- # instantiated a check is made such that none of the
- # identifiers have a value ``None``. If any are ``None``,
- # a more informative user error than a generic AttributeError
- # is raised.
- return getattr(self, '_' + identifier.name, None)
-
- get_identifier.__name__ = str(identifier.name)
- get_identifier.__doc__ = docstring.IdentifierDocstring(
- resource_name=resource_name,
- identifier_model=identifier,
- include_signature=False
- )
-
- return property(get_identifier)
-
- def _create_identifier_alias(factory_self, resource_name, identifier,
- member_model, service_context):
- """
- Creates a read-only property that aliases an identifier.
- """
- def get_identifier(self):
- return getattr(self, '_' + identifier.name, None)
-
- get_identifier.__name__ = str(identifier.member_name)
- get_identifier.__doc__ = docstring.AttributeDocstring(
- service_name=service_context.service_name,
- resource_name=resource_name,
- attr_name=identifier.member_name,
- event_emitter=factory_self._emitter,
- attr_model=member_model,
- include_signature=False
- )
-
- return property(get_identifier)
-
- def _create_autoload_property(factory_self, resource_name, name,
- snake_cased, member_model, service_context):
- """
- Creates a new property on the resource to lazy-load its value
- via the resource's ``load`` method (if it exists).
- """
- # The property loader will check to see if this resource has already
- # been loaded and return the cached value if possible. If not, then
- # it first checks to see if it CAN be loaded (raise if not), then
- # calls the load before returning the value.
- def property_loader(self):
- if self.meta.data is None:
- if hasattr(self, 'load'):
- self.load()
- else:
- raise ResourceLoadException(
- '{0} has no load method'.format(
- self.__class__.__name__))
-
- return self.meta.data.get(name)
-
- property_loader.__name__ = str(snake_cased)
- property_loader.__doc__ = docstring.AttributeDocstring(
- service_name=service_context.service_name,
- resource_name=resource_name,
- attr_name=snake_cased,
- event_emitter=factory_self._emitter,
- attr_model=member_model,
- include_signature=False
- )
-
- return property(property_loader)
-
- def _create_waiter(factory_self, resource_waiter_model, resource_name,
- service_context):
- """
- Creates a new wait method for each resource where both a waiter and
- resource model is defined.
- """
- waiter = WaiterAction(resource_waiter_model,
- waiter_resource_name=resource_waiter_model.name)
-
- def do_waiter(self, *args, **kwargs):
- waiter(self, *args, **kwargs)
-
- do_waiter.__name__ = str(resource_waiter_model.name)
- do_waiter.__doc__ = docstring.ResourceWaiterDocstring(
- resource_name=resource_name,
- event_emitter=factory_self._emitter,
- service_model=service_context.service_model,
- resource_waiter_model=resource_waiter_model,
- service_waiter_model=service_context.service_waiter_model,
- include_signature=False
- )
- return do_waiter
-
- def _create_collection(factory_self, resource_name, collection_model,
- service_context):
- """
- Creates a new property on the resource to lazy-load a collection.
- """
- cls = factory_self._collection_factory.load_from_definition(
- resource_name=resource_name, collection_model=collection_model,
- service_context=service_context,
- event_emitter=factory_self._emitter)
-
- def get_collection(self):
- return cls(
- collection_model=collection_model, parent=self,
- factory=factory_self, service_context=service_context)
-
- get_collection.__name__ = str(collection_model.name)
- get_collection.__doc__ = docstring.CollectionDocstring(
- collection_model=collection_model, include_signature=False)
- return property(get_collection)
-
- def _create_reference(factory_self, reference_model, resource_name,
- service_context):
- """
- Creates a new property on the resource to lazy-load a reference.
- """
- # References are essentially an action with no request
- # or response, so we can re-use the response handlers to
- # build up resources from identifiers and data members.
- handler = ResourceHandler(
- search_path=reference_model.resource.path, factory=factory_self,
- resource_model=reference_model.resource,
- service_context=service_context
- )
-
- # Are there any identifiers that need access to data members?
- # This is important when building the resource below since
- # it requires the data to be loaded.
- needs_data = any(i.source == 'data' for i in
- reference_model.resource.identifiers)
-
- def get_reference(self):
- # We need to lazy-evaluate the reference to handle circular
- # references between resources. We do this by loading the class
- # when first accessed.
- # This is using a *response handler* so we need to make sure
- # our data is loaded (if possible) and pass that data into
- # the handler as if it were a response. This allows references
- # to have their data loaded properly.
- if needs_data and self.meta.data is None and hasattr(self, 'load'):
- self.load()
- return handler(self, {}, self.meta.data)
-
- get_reference.__name__ = str(reference_model.name)
- get_reference.__doc__ = docstring.ReferenceDocstring(
- reference_model=reference_model,
- include_signature=False
- )
- return property(get_reference)
-
- def _create_class_partial(factory_self, subresource_model, resource_name,
- service_context):
- """
- Creates a new method which acts as a functools.partial, passing
- along the instance's low-level `client` to the new resource
- class' constructor.
- """
- name = subresource_model.resource.type
-
- def create_resource(self, *args, **kwargs):
- # We need a new method here because we want access to the
- # instance's client.
- positional_args = []
-
- # We lazy-load the class to handle circular references.
- json_def = service_context.resource_json_definitions.get(name, {})
- resource_cls = factory_self.load_from_definition(
- resource_name=name,
- single_resource_json_definition=json_def,
- service_context=service_context
- )
-
- # Assumes that identifiers are in order, which lets you do
- # e.g. ``sqs.Queue('foo').Message('bar')`` to create a new message
- # linked with the ``foo`` queue and which has a ``bar`` receipt
- # handle. If we did kwargs here then future positional arguments
- # would lead to failure.
- identifiers = subresource_model.resource.identifiers
- if identifiers is not None:
- for identifier, value in build_identifiers(identifiers, self):
- positional_args.append(value)
-
- return partial(resource_cls, *positional_args,
- client=self.meta.client)(*args, **kwargs)
-
- create_resource.__name__ = str(name)
- create_resource.__doc__ = docstring.SubResourceDocstring(
- resource_name=resource_name,
- sub_resource_model=subresource_model,
- service_model=service_context.service_model,
- include_signature=False
- )
- return create_resource
-
- def _create_action(factory_self, action_model, resource_name,
- service_context, is_load=False):
- """
- Creates a new method which makes a request to the underlying
- AWS service.
- """
- # Create the action in in this closure but before the ``do_action``
- # method below is invoked, which allows instances of the resource
- # to share the ServiceAction instance.
- action = ServiceAction(
- action_model, factory=factory_self,
- service_context=service_context
- )
-
- # A resource's ``load`` method is special because it sets
- # values on the resource instead of returning the response.
- if is_load:
- # We need a new method here because we want access to the
- # instance via ``self``.
- def do_action(self, *args, **kwargs):
- response = action(self, *args, **kwargs)
- self.meta.data = response
- # Create the docstring for the load/reload mehtods.
- lazy_docstring = docstring.LoadReloadDocstring(
- action_name=action_model.name,
- resource_name=resource_name,
- event_emitter=factory_self._emitter,
- load_model=action_model,
- service_model=service_context.service_model,
- include_signature=False
- )
- else:
- # We need a new method here because we want access to the
- # instance via ``self``.
- def do_action(self, *args, **kwargs):
- response = action(self, *args, **kwargs)
-
- if hasattr(self, 'load'):
- # Clear cached data. It will be reloaded the next
- # time that an attribute is accessed.
- # TODO: Make this configurable in the future?
- self.meta.data = None
-
- return response
- lazy_docstring = docstring.ActionDocstring(
- resource_name=resource_name,
- event_emitter=factory_self._emitter,
- action_model=action_model,
- service_model=service_context.service_model,
- include_signature=False
- )
-
- do_action.__name__ = str(action_model.name)
- do_action.__doc__ = lazy_docstring
- return do_action
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/resources/model.py b/.eggs/boto3-1.7.75-py2.7.egg/boto3/resources/model.py
deleted file mode 100644
index 5b65b0e2..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/resources/model.py
+++ /dev/null
@@ -1,622 +0,0 @@
-# Copyright 2014 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"). You
-# may not use this file except in compliance with the License. A copy of
-# the License is located at
-#
-# http://aws.amazon.com/apache2.0/
-#
-# or in the "license" file accompanying this file. This file 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.
-
-"""
-The models defined in this file represent the resource JSON description
-format and provide a layer of abstraction from the raw JSON. The advantages
-of this are:
-
-* Pythonic interface (e.g. ``action.request.operation``)
-* Consumers need not change for minor JSON changes (e.g. renamed field)
-
-These models are used both by the resource factory to generate resource
-classes as well as by the documentation generator.
-"""
-
-import logging
-
-from botocore import xform_name
-
-
-logger = logging.getLogger(__name__)
-
-
-class Identifier(object):
- """
- A resource identifier, given by its name.
-
- :type name: string
- :param name: The name of the identifier
- """
- def __init__(self, name, member_name=None):
- #: (``string``) The name of the identifier
- self.name = name
- self.member_name = member_name
-
-
-class Action(object):
- """
- A service operation action.
-
- :type name: string
- :param name: The name of the action
- :type definition: dict
- :param definition: The JSON definition
- :type resource_defs: dict
- :param resource_defs: All resources defined in the service
- """
- def __init__(self, name, definition, resource_defs):
- self._definition = definition
-
- #: (``string``) The name of the action
- self.name = name
- #: (:py:class:`Request`) This action's request or ``None``
- self.request = None
- if 'request' in definition:
- self.request = Request(definition.get('request', {}))
- #: (:py:class:`ResponseResource`) This action's resource or ``None``
- self.resource = None
- if 'resource' in definition:
- self.resource = ResponseResource(definition.get('resource', {}),
- resource_defs)
- #: (``string``) The JMESPath search path or ``None``
- self.path = definition.get('path')
-
-
-class DefinitionWithParams(object):
- """
- An item which has parameters exposed via the ``params`` property.
- A request has an operation and parameters, while a waiter has
- a name, a low-level waiter name and parameters.
-
- :type definition: dict
- :param definition: The JSON definition
- """
- def __init__(self, definition):
- self._definition = definition
-
- @property
- def params(self):
- """
- Get a list of auto-filled parameters for this request.
-
- :type: list(:py:class:`Parameter`)
- """
- params = []
-
- for item in self._definition.get('params', []):
- params.append(Parameter(**item))
-
- return params
-
-
-class Parameter(object):
- """
- An auto-filled parameter which has a source and target. For example,
- the ``QueueUrl`` may be auto-filled from a resource's ``url`` identifier
- when making calls to ``queue.receive_messages``.
-
- :type target: string
- :param target: The destination parameter name, e.g. ``QueueUrl``
- :type source_type: string
- :param source_type: Where the source is defined.
- :type source: string
- :param source: The source name, e.g. ``Url``
- """
- def __init__(self, target, source, name=None, path=None, value=None,
- **kwargs):
- #: (``string``) The destination parameter name
- self.target = target
- #: (``string``) Where the source is defined
- self.source = source
- #: (``string``) The name of the source, if given
- self.name = name
- #: (``string``) The JMESPath query of the source
- self.path = path
- #: (``string|int|float|bool``) The source constant value
- self.value = value
-
- # Complain if we encounter any unknown values.
- if kwargs:
- logger.warning('Unknown parameter options found: %s', kwargs)
-
-
-class Request(DefinitionWithParams):
- """
- A service operation action request.
-
- :type definition: dict
- :param definition: The JSON definition
- """
- def __init__(self, definition):
- super(Request, self).__init__(definition)
-
- #: (``string``) The name of the low-level service operation
- self.operation = definition.get('operation')
-
-
-class Waiter(DefinitionWithParams):
- """
- An event waiter specification.
-
- :type name: string
- :param name: Name of the waiter
- :type definition: dict
- :param definition: The JSON definition
- """
- PREFIX = 'WaitUntil'
-
- def __init__(self, name, definition):
- super(Waiter, self).__init__(definition)
-
- #: (``string``) The name of this waiter
- self.name = name
-
- #: (``string``) The name of the underlying event waiter
- self.waiter_name = definition.get('waiterName')
-
-
-class ResponseResource(object):
- """
- A resource response to create after performing an action.
-
- :type definition: dict
- :param definition: The JSON definition
- :type resource_defs: dict
- :param resource_defs: All resources defined in the service
- """
- def __init__(self, definition, resource_defs):
- self._definition = definition
- self._resource_defs = resource_defs
-
- #: (``string``) The name of the response resource type
- self.type = definition.get('type')
-
- #: (``string``) The JMESPath search query or ``None``
- self.path = definition.get('path')
-
- @property
- def identifiers(self):
- """
- A list of resource identifiers.
-
- :type: list(:py:class:`Identifier`)
- """
- identifiers = []
-
- for item in self._definition.get('identifiers', []):
- identifiers.append(
- Parameter(**item))
-
- return identifiers
-
- @property
- def model(self):
- """
- Get the resource model for the response resource.
-
- :type: :py:class:`ResourceModel`
- """
- return ResourceModel(self.type, self._resource_defs[self.type],
- self._resource_defs)
-
-
-class Collection(Action):
- """
- A group of resources. See :py:class:`Action`.
-
- :type name: string
- :param name: The name of the collection
- :type definition: dict
- :param definition: The JSON definition
- :type resource_defs: dict
- :param resource_defs: All resources defined in the service
- """
- @property
- def batch_actions(self):
- """
- Get a list of batch actions supported by the resource type
- contained in this action. This is a shortcut for accessing
- the same information through the resource model.
-
- :rtype: list(:py:class:`Action`)
- """
- return self.resource.model.batch_actions
-
-
-class ResourceModel(object):
- """
- A model representing a resource, defined via a JSON description
- format. A resource has identifiers, attributes, actions,
- sub-resources, references and collections. For more information
- on resources, see :ref:`guide_resources`.
-
- :type name: string
- :param name: The name of this resource, e.g. ``sqs`` or ``Queue``
- :type definition: dict
- :param definition: The JSON definition
- :type resource_defs: dict
- :param resource_defs: All resources defined in the service
- """
- def __init__(self, name, definition, resource_defs):
- self._definition = definition
- self._resource_defs = resource_defs
- self._renamed = {}
-
- #: (``string``) The name of this resource
- self.name = name
- #: (``string``) The service shape name for this resource or ``None``
- self.shape = definition.get('shape')
-
- def load_rename_map(self, shape=None):
- """
- Load a name translation map given a shape. This will set
- up renamed values for any collisions, e.g. if the shape,
- an action, and a subresource all are all named ``foo``
- then the resource will have an action ``foo``, a subresource
- named ``Foo`` and a property named ``foo_attribute``.
- This is the order of precedence, from most important to
- least important:
-
- * Load action (resource.load)
- * Identifiers
- * Actions
- * Subresources
- * References
- * Collections
- * Waiters
- * Attributes (shape members)
-
- Batch actions are only exposed on collections, so do not
- get modified here. Subresources use upper camel casing, so
- are unlikely to collide with anything but other subresources.
-
- Creates a structure like this::
-
- renames = {
- ('action', 'id'): 'id_action',
- ('collection', 'id'): 'id_collection',
- ('attribute', 'id'): 'id_attribute'
- }
-
- # Get the final name for an action named 'id'
- name = renames.get(('action', 'id'), 'id')
-
- :type shape: botocore.model.Shape
- :param shape: The underlying shape for this resource.
- """
- # Meta is a reserved name for resources
- names = set(['meta'])
- self._renamed = {}
-
- if self._definition.get('load'):
- names.add('load')
-
- for item in self._definition.get('identifiers', []):
- self._load_name_with_category(names, item['name'], 'identifier')
-
- for name in self._definition.get('actions', {}):
- self._load_name_with_category(names, name, 'action')
-
- for name, ref in self._get_has_definition().items():
- # Subresources require no data members, just typically
- # identifiers and user input.
- data_required = False
- for identifier in ref['resource']['identifiers']:
- if identifier['source'] == 'data':
- data_required = True
- break
-
- if not data_required:
- self._load_name_with_category(names, name, 'subresource',
- snake_case=False)
- else:
- self._load_name_with_category(names, name, 'reference')
-
- for name in self._definition.get('hasMany', {}):
- self._load_name_with_category(names, name, 'collection')
-
- for name in self._definition.get('waiters', {}):
- self._load_name_with_category(names, Waiter.PREFIX + name,
- 'waiter')
-
- if shape is not None:
- for name in shape.members.keys():
- self._load_name_with_category(names, name, 'attribute')
-
- def _load_name_with_category(self, names, name, category,
- snake_case=True):
- """
- Load a name with a given category, possibly renaming it
- if that name is already in use. The name will be stored
- in ``names`` and possibly be set up in ``self._renamed``.
-
- :type names: set
- :param names: Existing names (Python attributes, properties, or
- methods) on the resource.
- :type name: string
- :param name: The original name of the value.
- :type category: string
- :param category: The value type, such as 'identifier' or 'action'
- :type snake_case: bool
- :param snake_case: True (default) if the name should be snake cased.
- """
- if snake_case:
- name = xform_name(name)
-
- if name in names:
- logger.debug('Renaming %s %s %s' % (self.name, category, name))
- self._renamed[(category, name)] = name + '_' + category
- name += '_' + category
-
- if name in names:
- # This isn't good, let's raise instead of trying to keep
- # renaming this value.
- raise ValueError('Problem renaming {0} {1} to {2}!'.format(
- self.name, category, name))
-
- names.add(name)
-
- def _get_name(self, category, name, snake_case=True):
- """
- Get a possibly renamed value given a category and name. This
- uses the rename map set up in ``load_rename_map``, so that
- method must be called once first.
-
- :type category: string
- :param category: The value type, such as 'identifier' or 'action'
- :type name: string
- :param name: The original name of the value
- :type snake_case: bool
- :param snake_case: True (default) if the name should be snake cased.
- :rtype: string
- :return: Either the renamed value if it is set, otherwise the
- original name.
- """
- if snake_case:
- name = xform_name(name)
-
- return self._renamed.get((category, name), name)
-
- def get_attributes(self, shape):
- """
- Get a dictionary of attribute names to original name and shape
- models that represent the attributes of this resource. Looks
- like the following:
-
- {
- 'some_name': ('SomeName', )
- }
-
- :type shape: botocore.model.Shape
- :param shape: The underlying shape for this resource.
- :rtype: dict
- :return: Mapping of resource attributes.
- """
- attributes = {}
- identifier_names = [i.name for i in self.identifiers]
-
- for name, member in shape.members.items():
- snake_cased = xform_name(name)
- if snake_cased in identifier_names:
- # Skip identifiers, these are set through other means
- continue
- snake_cased = self._get_name('attribute', snake_cased,
- snake_case=False)
- attributes[snake_cased] = (name, member)
-
- return attributes
-
- @property
- def identifiers(self):
- """
- Get a list of resource identifiers.
-
- :type: list(:py:class:`Identifier`)
- """
- identifiers = []
-
- for item in self._definition.get('identifiers', []):
- name = self._get_name('identifier', item['name'])
- member_name = item.get('memberName', None)
- if member_name:
- member_name = self._get_name('attribute', member_name)
- identifiers.append(Identifier(name, member_name))
-
- return identifiers
-
- @property
- def load(self):
- """
- Get the load action for this resource, if it is defined.
-
- :type: :py:class:`Action` or ``None``
- """
- action = self._definition.get('load')
-
- if action is not None:
- action = Action('load', action, self._resource_defs)
-
- return action
-
- @property
- def actions(self):
- """
- Get a list of actions for this resource.
-
- :type: list(:py:class:`Action`)
- """
- actions = []
-
- for name, item in self._definition.get('actions', {}).items():
- name = self._get_name('action', name)
- actions.append(Action(name, item, self._resource_defs))
-
- return actions
-
- @property
- def batch_actions(self):
- """
- Get a list of batch actions for this resource.
-
- :type: list(:py:class:`Action`)
- """
- actions = []
-
- for name, item in self._definition.get('batchActions', {}).items():
- name = self._get_name('batch_action', name)
- actions.append(Action(name, item, self._resource_defs))
-
- return actions
-
- def _get_has_definition(self):
- """
- Get a ``has`` relationship definition from a model, where the
- service resource model is treated special in that it contains
- a relationship to every resource defined for the service. This
- allows things like ``s3.Object('bucket-name', 'key')`` to
- work even though the JSON doesn't define it explicitly.
-
- :rtype: dict
- :return: Mapping of names to subresource and reference
- definitions.
- """
- if self.name not in self._resource_defs:
- # This is the service resource, so let us expose all of
- # the defined resources as subresources.
- definition = {}
-
- for name, resource_def in self._resource_defs.items():
- # It's possible for the service to have renamed a
- # resource or to have defined multiple names that
- # point to the same resource type, so we need to
- # take that into account.
- found = False
- has_items = self._definition.get('has', {}).items()
- for has_name, has_def in has_items:
- if has_def.get('resource', {}).get('type') == name:
- definition[has_name] = has_def
- found = True
-
- if not found:
- # Create a relationship definition and attach it
- # to the model, such that all identifiers must be
- # supplied by the user. It will look something like:
- #
- # {
- # 'resource': {
- # 'type': 'ResourceName',
- # 'identifiers': [
- # {'target': 'Name1', 'source': 'input'},
- # {'target': 'Name2', 'source': 'input'},
- # ...
- # ]
- # }
- # }
- #
- fake_has = {
- 'resource': {
- 'type': name,
- 'identifiers': []
- }
- }
-
- for identifier in resource_def.get('identifiers', []):
- fake_has['resource']['identifiers'].append({
- 'target': identifier['name'], 'source': 'input'
- })
-
- definition[name] = fake_has
- else:
- definition = self._definition.get('has', {})
-
- return definition
-
- def _get_related_resources(self, subresources):
- """
- Get a list of sub-resources or references.
-
- :type subresources: bool
- :param subresources: ``True`` to get sub-resources, ``False`` to
- get references.
- :rtype: list(:py:class:`ResponseResource`)
- """
- resources = []
-
- for name, definition in self._get_has_definition().items():
- if subresources:
- name = self._get_name('subresource', name, snake_case=False)
- else:
- name = self._get_name('reference', name)
- action = Action(name, definition, self._resource_defs)
-
- data_required = False
- for identifier in action.resource.identifiers:
- if identifier.source == 'data':
- data_required = True
- break
-
- if subresources and not data_required:
- resources.append(action)
- elif not subresources and data_required:
- resources.append(action)
-
- return resources
-
- @property
- def subresources(self):
- """
- Get a list of sub-resources.
-
- :type: list(:py:class:`ResponseResource`)
- """
- return self._get_related_resources(True)
-
- @property
- def references(self):
- """
- Get a list of reference resources.
-
- :type: list(:py:class:`ResponseResource`)
- """
- return self._get_related_resources(False)
-
- @property
- def collections(self):
- """
- Get a list of collections for this resource.
-
- :type: list(:py:class:`Collection`)
- """
- collections = []
-
- for name, item in self._definition.get('hasMany', {}).items():
- name = self._get_name('collection', name)
- collections.append(Collection(name, item, self._resource_defs))
-
- return collections
-
- @property
- def waiters(self):
- """
- Get a list of waiters for this resource.
-
- :type: list(:py:class:`Waiter`)
- """
- waiters = []
-
- for name, item in self._definition.get('waiters', {}).items():
- name = self._get_name('waiter', Waiter.PREFIX + name)
- waiters.append(Waiter(name, item))
-
- return waiters
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/resources/params.py b/.eggs/boto3-1.7.75-py2.7.egg/boto3/resources/params.py
deleted file mode 100644
index 71bbb6b7..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/resources/params.py
+++ /dev/null
@@ -1,168 +0,0 @@
-# Copyright 2014 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"). You
-# may not use this file except in compliance with the License. A copy of
-# the License is located at
-#
-# http://aws.amazon.com/apache2.0/
-#
-# or in the "license" file accompanying this file. This file 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.
-
-import re
-
-import jmespath
-from botocore import xform_name
-
-from ..exceptions import ResourceLoadException
-
-
-INDEX_RE = re.compile('\[(.*)\]$')
-
-
-def get_data_member(parent, path):
- """
- Get a data member from a parent using a JMESPath search query,
- loading the parent if required. If the parent cannot be loaded
- and no data is present then an exception is raised.
-
- :type parent: ServiceResource
- :param parent: The resource instance to which contains data we
- are interested in.
- :type path: string
- :param path: The JMESPath expression to query
- :raises ResourceLoadException: When no data is present and the
- resource cannot be loaded.
- :returns: The queried data or ``None``.
- """
- # Ensure the parent has its data loaded, if possible.
- if parent.meta.data is None:
- if hasattr(parent, 'load'):
- parent.load()
- else:
- raise ResourceLoadException(
- '{0} has no load method!'.format(parent.__class__.__name__))
-
- return jmespath.search(path, parent.meta.data)
-
-
-def create_request_parameters(parent, request_model, params=None, index=None):
- """
- Handle request parameters that can be filled in from identifiers,
- resource data members or constants.
-
- By passing ``params``, you can invoke this method multiple times and
- build up a parameter dict over time, which is particularly useful
- for reverse JMESPath expressions that append to lists.
-
- :type parent: ServiceResource
- :param parent: The resource instance to which this action is attached.
- :type request_model: :py:class:`~boto3.resources.model.Request`
- :param request_model: The action request model.
- :type params: dict
- :param params: If set, then add to this existing dict. It is both
- edited in-place and returned.
- :type index: int
- :param index: The position of an item within a list
- :rtype: dict
- :return: Pre-filled parameters to be sent to the request operation.
- """
- if params is None:
- params = {}
-
- for param in request_model.params:
- source = param.source
- target = param.target
-
- if source == 'identifier':
- # Resource identifier, e.g. queue.url
- value = getattr(parent, xform_name(param.name))
- elif source == 'data':
- # If this is a data member then it may incur a load
- # action before returning the value.
- value = get_data_member(parent, param.path)
- elif source in ['string', 'integer', 'boolean']:
- # These are hard-coded values in the definition
- value = param.value
- elif source == 'input':
- # This is provided by the user, so ignore it here
- continue
- else:
- raise NotImplementedError(
- 'Unsupported source type: {0}'.format(source))
-
- build_param_structure(params, target, value, index)
-
- return params
-
-
-def build_param_structure(params, target, value, index=None):
- """
- This method provides a basic reverse JMESPath implementation that
- lets you go from a JMESPath-like string to a possibly deeply nested
- object. The ``params`` are mutated in-place, so subsequent calls
- can modify the same element by its index.
-
- >>> build_param_structure(params, 'test[0]', 1)
- >>> print(params)
- {'test': [1]}
-
- >>> build_param_structure(params, 'foo.bar[0].baz', 'hello world')
- >>> print(params)
- {'test': [1], 'foo': {'bar': [{'baz': 'hello, world'}]}}
-
- """
- pos = params
- parts = target.split('.')
-
- # First, split into parts like 'foo', 'bar[0]', 'baz' and process
- # each piece. It can either be a list or a dict, depending on if
- # an index like `[0]` is present. We detect this via a regular
- # expression, and keep track of where we are in params via the
- # pos variable, walking down to the last item. Once there, we
- # set the value.
- for i, part in enumerate(parts):
- # Is it indexing an array?
- result = INDEX_RE.search(part)
- if result:
- if result.group(1):
- if result.group(1) == '*':
- part = part[:-3]
- else:
- # We have an explicit index
- index = int(result.group(1))
- part = part[:-len(str(index) + '[]')]
- else:
- # Index will be set after we know the proper part
- # name and that it's a list instance.
- index = None
- part = part[:-2]
-
- if part not in pos or not isinstance(pos[part], list):
- pos[part] = []
-
- # This means we should append, e.g. 'foo[]'
- if index is None:
- index = len(pos[part])
-
- while len(pos[part]) <= index:
- # Assume it's a dict until we set the final value below
- pos[part].append({})
-
- # Last item? Set the value, otherwise set the new position
- if i == len(parts) - 1:
- pos[part][index] = value
- else:
- # The new pos is the *item* in the array, not the array!
- pos = pos[part][index]
- else:
- if part not in pos:
- pos[part] = {}
-
- # Last item? Set the value, otherwise set the new position
- if i == len(parts) - 1:
- pos[part] = value
- else:
- pos = pos[part]
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/resources/response.py b/.eggs/boto3-1.7.75-py2.7.egg/boto3/resources/response.py
deleted file mode 100644
index 57803614..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/resources/response.py
+++ /dev/null
@@ -1,300 +0,0 @@
-# Copyright 2014 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"). You
-# may not use this file except in compliance with the License. A copy of
-# the License is located at
-#
-# http://aws.amazon.com/apache2.0/
-#
-# or in the "license" file accompanying this file. This file 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.
-
-import jmespath
-from botocore import xform_name
-
-from .params import get_data_member
-
-
-def all_not_none(iterable):
- """
- Return True if all elements of the iterable are not None (or if the
- iterable is empty). This is like the built-in ``all``, except checks
- against None, so 0 and False are allowable values.
- """
- for element in iterable:
- if element is None:
- return False
- return True
-
-
-def build_identifiers(identifiers, parent, params=None, raw_response=None):
- """
- Builds a mapping of identifier names to values based on the
- identifier source location, type, and target. Identifier
- values may be scalars or lists depending on the source type
- and location.
-
- :type identifiers: list
- :param identifiers: List of :py:class:`~boto3.resources.model.Parameter`
- definitions
- :type parent: ServiceResource
- :param parent: The resource instance to which this action is attached.
- :type params: dict
- :param params: Request parameters sent to the service.
- :type raw_response: dict
- :param raw_response: Low-level operation response.
- :rtype: list
- :return: An ordered list of ``(name, value)`` identifier tuples.
- """
- results = []
-
- for identifier in identifiers:
- source = identifier.source
- target = identifier.target
-
- if source == 'response':
- value = jmespath.search(identifier.path, raw_response)
- elif source == 'requestParameter':
- value = jmespath.search(identifier.path, params)
- elif source == 'identifier':
- value = getattr(parent, xform_name(identifier.name))
- elif source == 'data':
- # If this is a data member then it may incur a load
- # action before returning the value.
- value = get_data_member(parent, identifier.path)
- elif source == 'input':
- # This value is set by the user, so ignore it here
- continue
- else:
- raise NotImplementedError(
- 'Unsupported source type: {0}'.format(source))
-
- results.append((xform_name(target), value))
-
- return results
-
-
-def build_empty_response(search_path, operation_name, service_model):
- """
- Creates an appropriate empty response for the type that is expected,
- based on the service model's shape type. For example, a value that
- is normally a list would then return an empty list. A structure would
- return an empty dict, and a number would return None.
-
- :type search_path: string
- :param search_path: JMESPath expression to search in the response
- :type operation_name: string
- :param operation_name: Name of the underlying service operation.
- :type service_model: :ref:`botocore.model.ServiceModel`
- :param service_model: The Botocore service model
- :rtype: dict, list, or None
- :return: An appropriate empty value
- """
- response = None
-
- operation_model = service_model.operation_model(operation_name)
- shape = operation_model.output_shape
-
- if search_path:
- # Walk the search path and find the final shape. For example, given
- # a path of ``foo.bar[0].baz``, we first find the shape for ``foo``,
- # then the shape for ``bar`` (ignoring the indexing), and finally
- # the shape for ``baz``.
- for item in search_path.split('.'):
- item = item.strip('[0123456789]$')
-
- if shape.type_name == 'structure':
- shape = shape.members[item]
- elif shape.type_name == 'list':
- shape = shape.member
- else:
- raise NotImplementedError(
- 'Search path hits shape type {0} from {1}'.format(
- shape.type_name, item))
-
- # Anything not handled here is set to None
- if shape.type_name == 'structure':
- response = {}
- elif shape.type_name == 'list':
- response = []
- elif shape.type_name == 'map':
- response = {}
-
- return response
-
-
-class RawHandler(object):
- """
- A raw action response handler. This passed through the response
- dictionary, optionally after performing a JMESPath search if one
- has been defined for the action.
-
- :type search_path: string
- :param search_path: JMESPath expression to search in the response
- :rtype: dict
- :return: Service response
- """
- def __init__(self, search_path):
- self.search_path = search_path
-
- def __call__(self, parent, params, response):
- """
- :type parent: ServiceResource
- :param parent: The resource instance to which this action is attached.
- :type params: dict
- :param params: Request parameters sent to the service.
- :type response: dict
- :param response: Low-level operation response.
- """
- # TODO: Remove the '$' check after JMESPath supports it
- if self.search_path and self.search_path != '$':
- response = jmespath.search(self.search_path, response)
-
- return response
-
-
-class ResourceHandler(object):
- """
- Creates a new resource or list of new resources from the low-level
- response based on the given response resource definition.
-
- :type search_path: string
- :param search_path: JMESPath expression to search in the response
-
- :type factory: ResourceFactory
- :param factory: The factory that created the resource class to which
- this action is attached.
-
- :type resource_model: :py:class:`~boto3.resources.model.ResponseResource`
- :param resource_model: Response resource model.
-
- :type service_context: :py:class:`~boto3.utils.ServiceContext`
- :param service_context: Context about the AWS service
-
- :type operation_name: string
- :param operation_name: Name of the underlying service operation, if it
- exists.
-
- :rtype: ServiceResource or list
- :return: New resource instance(s).
- """
- def __init__(self, search_path, factory, resource_model,
- service_context, operation_name=None):
- self.search_path = search_path
- self.factory = factory
- self.resource_model = resource_model
- self.operation_name = operation_name
- self.service_context = service_context
-
- def __call__(self, parent, params, response):
- """
- :type parent: ServiceResource
- :param parent: The resource instance to which this action is attached.
- :type params: dict
- :param params: Request parameters sent to the service.
- :type response: dict
- :param response: Low-level operation response.
- """
- resource_name = self.resource_model.type
- json_definition = self.service_context.resource_json_definitions.get(
- resource_name)
-
- # Load the new resource class that will result from this action.
- resource_cls = self.factory.load_from_definition(
- resource_name=resource_name,
- single_resource_json_definition=json_definition,
- service_context=self.service_context
- )
- raw_response = response
- search_response = None
-
- # Anytime a path is defined, it means the response contains the
- # resource's attributes, so resource_data gets set here. It
- # eventually ends up in resource.meta.data, which is where
- # the attribute properties look for data.
- if self.search_path:
- search_response = jmespath.search(self.search_path, raw_response)
-
- # First, we parse all the identifiers, then create the individual
- # response resources using them. Any identifiers that are lists
- # will have one item consumed from the front of the list for each
- # resource that is instantiated. Items which are not a list will
- # be set as the same value on each new resource instance.
- identifiers = dict(build_identifiers(
- self.resource_model.identifiers, parent, params,
- raw_response))
-
- # If any of the identifiers is a list, then the response is plural
- plural = [v for v in identifiers.values() if isinstance(v, list)]
-
- if plural:
- response = []
-
- # The number of items in an identifier that is a list will
- # determine how many resource instances to create.
- for i in range(len(plural[0])):
- # Response item data is *only* available if a search path
- # was given. This prevents accidentally loading unrelated
- # data that may be in the response.
- response_item = None
- if search_response:
- response_item = search_response[i]
- response.append(
- self.handle_response_item(resource_cls, parent,
- identifiers, response_item))
- elif all_not_none(identifiers.values()):
- # All identifiers must always exist, otherwise the resource
- # cannot be instantiated.
- response = self.handle_response_item(
- resource_cls, parent, identifiers, search_response)
- else:
- # The response should be empty, but that may mean an
- # empty dict, list, or None based on whether we make
- # a remote service call and what shape it is expected
- # to return.
- response = None
- if self.operation_name is not None:
- # A remote service call was made, so try and determine
- # its shape.
- response = build_empty_response(
- self.search_path, self.operation_name,
- self.service_context.service_model)
-
- return response
-
- def handle_response_item(self, resource_cls, parent, identifiers,
- resource_data):
- """
- Handles the creation of a single response item by setting
- parameters and creating the appropriate resource instance.
-
- :type resource_cls: ServiceResource subclass
- :param resource_cls: The resource class to instantiate.
- :type parent: ServiceResource
- :param parent: The resource instance to which this action is attached.
- :type identifiers: dict
- :param identifiers: Map of identifier names to value or values.
- :type resource_data: dict or None
- :param resource_data: Data for resource attributes.
- :rtype: ServiceResource
- :return: New resource instance.
- """
- kwargs = {
- 'client': parent.meta.client,
- }
-
- for name, value in identifiers.items():
- # If value is a list, then consume the next item
- if isinstance(value, list):
- value = value.pop(0)
-
- kwargs[name] = value
-
- resource = resource_cls(**kwargs)
-
- if resource_data is not None:
- resource.meta.data = resource_data
-
- return resource
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/s3/__init__.py b/.eggs/boto3-1.7.75-py2.7.egg/boto3/s3/__init__.py
deleted file mode 100644
index c89416d7..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/s3/__init__.py
+++ /dev/null
@@ -1,12 +0,0 @@
-# Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"). You
-# may not use this file except in compliance with the License. A copy of
-# the License is located at
-#
-# http://aws.amazon.com/apache2.0/
-#
-# or in the "license" file accompanying this file. This file 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/.eggs/boto3-1.7.75-py2.7.egg/boto3/s3/inject.py b/.eggs/boto3-1.7.75-py2.7.egg/boto3/s3/inject.py
deleted file mode 100644
index a1a01835..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/s3/inject.py
+++ /dev/null
@@ -1,761 +0,0 @@
-# Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"). You
-# may not use this file except in compliance with the License. A copy of
-# the License is located at
-#
-# http://aws.amazon.com/apache2.0/
-#
-# or in the "license" file accompanying this file. This file 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.
-from botocore.exceptions import ClientError
-
-from boto3.s3.transfer import create_transfer_manager
-from boto3.s3.transfer import TransferConfig, S3Transfer
-from boto3.s3.transfer import ProgressCallbackInvoker
-from boto3 import utils
-
-
-def inject_s3_transfer_methods(class_attributes, **kwargs):
- utils.inject_attribute(class_attributes, 'upload_file', upload_file)
- utils.inject_attribute(class_attributes, 'download_file', download_file)
- utils.inject_attribute(class_attributes, 'copy', copy)
- utils.inject_attribute(class_attributes, 'upload_fileobj', upload_fileobj)
- utils.inject_attribute(
- class_attributes, 'download_fileobj', download_fileobj)
-
-
-def inject_bucket_methods(class_attributes, **kwargs):
- utils.inject_attribute(class_attributes, 'load', bucket_load)
- utils.inject_attribute(class_attributes, 'upload_file', bucket_upload_file)
- utils.inject_attribute(
- class_attributes, 'download_file', bucket_download_file)
- utils.inject_attribute(class_attributes, 'copy', bucket_copy)
- utils.inject_attribute(
- class_attributes, 'upload_fileobj', bucket_upload_fileobj)
- utils.inject_attribute(
- class_attributes, 'download_fileobj', bucket_download_fileobj)
-
-
-def inject_object_methods(class_attributes, **kwargs):
- utils.inject_attribute(class_attributes, 'upload_file', object_upload_file)
- utils.inject_attribute(
- class_attributes, 'download_file', object_download_file)
- utils.inject_attribute(class_attributes, 'copy', object_copy)
- utils.inject_attribute(
- class_attributes, 'upload_fileobj', object_upload_fileobj)
- utils.inject_attribute(
- class_attributes, 'download_fileobj', object_download_fileobj)
-
-
-def inject_object_summary_methods(class_attributes, **kwargs):
- utils.inject_attribute(class_attributes, 'load', object_summary_load)
-
-
-def bucket_load(self, *args, **kwargs):
- """
- Calls s3.Client.list_buckets() to update the attributes of the Bucket
- resource.
- """
- # The docstring above is phrased this way to match what the autogenerated
- # docs produce.
-
- # We can't actually get the bucket's attributes from a HeadBucket,
- # so we need to use a ListBuckets and search for our bucket.
- # However, we may fail if we lack permissions to ListBuckets
- # or the bucket is in another account. In which case, creation_date
- # will be None.
- self.meta.data = {}
- try:
- response = self.meta.client.list_buckets()
- for bucket_data in response['Buckets']:
- if bucket_data['Name'] == self.name:
- self.meta.data = bucket_data
- break
- except ClientError as e:
- if not e.response.get('Error', {}).get('Code') == 'AccessDenied':
- raise
-
-def object_summary_load(self, *args, **kwargs):
- """
- Calls s3.Client.head_object to update the attributes of the ObjectSummary
- resource.
- """
- response = self.meta.client.head_object(
- Bucket=self.bucket_name, Key=self.key)
- if 'ContentLength' in response:
- response['Size'] = response.pop('ContentLength')
- self.meta.data = response
-
-
-def upload_file(self, Filename, Bucket, Key, ExtraArgs=None,
- Callback=None, Config=None):
- """Upload a file to an S3 object.
-
- Usage::
-
- import boto3
- s3 = boto3.resource('s3')
- s3.meta.client.upload_file('/tmp/hello.txt', 'mybucket', 'hello.txt')
-
- Similar behavior as S3Transfer's upload_file() method,
- except that parameters are capitalized. Detailed examples can be found at
- :ref:`S3Transfer's Usage `.
-
- :type Filename: str
- :param Filename: The path to the file to upload.
-
- :type Bucket: str
- :param Bucket: The name of the bucket to upload to.
-
- :type Key: str
- :param Key: The name of the key to upload to.
-
- :type ExtraArgs: dict
- :param ExtraArgs: Extra arguments that may be passed to the
- client operation.
-
- :type Callback: function
- :param Callback: A method which takes a number of bytes transferred to
- be periodically called during the upload.
-
- :type Config: boto3.s3.transfer.TransferConfig
- :param Config: The transfer configuration to be used when performing the
- transfer.
- """
- with S3Transfer(self, Config) as transfer:
- return transfer.upload_file(
- filename=Filename, bucket=Bucket, key=Key,
- extra_args=ExtraArgs, callback=Callback)
-
-
-def download_file(self, Bucket, Key, Filename, ExtraArgs=None,
- Callback=None, Config=None):
- """Download an S3 object to a file.
-
- Usage::
-
- import boto3
- s3 = boto3.resource('s3')
- s3.meta.client.download_file('mybucket', 'hello.txt', '/tmp/hello.txt')
-
- Similar behavior as S3Transfer's download_file() method,
- except that parameters are capitalized. Detailed examples can be found at
- :ref:`S3Transfer's Usage `.
-
- :type Filename: str
- :param Filename: The path to the file to download to.
-
- :type Bucket: str
- :param Bucket: The name of the bucket to download from.
-
- :type Key: str
- :param Key: The name of the key to download from.
-
- :type ExtraArgs: dict
- :param ExtraArgs: Extra arguments that may be passed to the
- client operation.
-
- :type Callback: function
- :param Callback: A method which takes a number of bytes transferred to
- be periodically called during the download.
-
- :type Config: boto3.s3.transfer.TransferConfig
- :param Config: The transfer configuration to be used when performing the
- transfer.
- """
- with S3Transfer(self, Config) as transfer:
- return transfer.download_file(
- bucket=Bucket, key=Key, filename=Filename,
- extra_args=ExtraArgs, callback=Callback)
-
-
-def bucket_upload_file(self, Filename, Key,
- ExtraArgs=None, Callback=None, Config=None):
- """Upload a file to an S3 object.
-
- Usage::
-
- import boto3
- s3 = boto3.resource('s3')
- s3.Bucket('mybucket').upload_file('/tmp/hello.txt', 'hello.txt')
-
- Similar behavior as S3Transfer's upload_file() method,
- except that parameters are capitalized. Detailed examples can be found at
- :ref:`S3Transfer's Usage `.
-
- :type Filename: str
- :param Filename: The path to the file to upload.
-
- :type Key: str
- :param Key: The name of the key to upload to.
-
- :type ExtraArgs: dict
- :param ExtraArgs: Extra arguments that may be passed to the
- client operation.
-
- :type Callback: function
- :param Callback: A method which takes a number of bytes transferred to
- be periodically called during the upload.
-
- :type Config: boto3.s3.transfer.TransferConfig
- :param Config: The transfer configuration to be used when performing the
- transfer.
- """
- return self.meta.client.upload_file(
- Filename=Filename, Bucket=self.name, Key=Key,
- ExtraArgs=ExtraArgs, Callback=Callback, Config=Config)
-
-
-def bucket_download_file(self, Key, Filename,
- ExtraArgs=None, Callback=None, Config=None):
- """Download an S3 object to a file.
-
- Usage::
-
- import boto3
- s3 = boto3.resource('s3')
- s3.Bucket('mybucket').download_file('hello.txt', '/tmp/hello.txt')
-
- Similar behavior as S3Transfer's download_file() method,
- except that parameters are capitalized. Detailed examples can be found at
- :ref:`S3Transfer's Usage `.
-
- :type Filename: str
- :param Filename: The path to the file to download to.
-
- :type Key: str
- :param Key: The name of the key to download from.
-
- :type ExtraArgs: dict
- :param ExtraArgs: Extra arguments that may be passed to the
- client operation.
-
- :type Callback: function
- :param Callback: A method which takes a number of bytes transferred to
- be periodically called during the download.
-
- :type Config: boto3.s3.transfer.TransferConfig
- :param Config: The transfer configuration to be used when performing the
- transfer.
- """
- return self.meta.client.download_file(
- Bucket=self.name, Key=Key, Filename=Filename,
- ExtraArgs=ExtraArgs, Callback=Callback, Config=Config)
-
-
-def object_upload_file(self, Filename,
- ExtraArgs=None, Callback=None, Config=None):
- """Upload a file to an S3 object.
-
- Usage::
-
- import boto3
- s3 = boto3.resource('s3')
- s3.Object('mybucket', 'hello.txt').upload_file('/tmp/hello.txt')
-
- Similar behavior as S3Transfer's upload_file() method,
- except that parameters are capitalized. Detailed examples can be found at
- :ref:`S3Transfer's Usage `.
-
- :type Filename: str
- :param Filename: The path to the file to upload.
-
- :type ExtraArgs: dict
- :param ExtraArgs: Extra arguments that may be passed to the
- client operation.
-
- :type Callback: function
- :param Callback: A method which takes a number of bytes transferred to
- be periodically called during the upload.
-
- :type Config: boto3.s3.transfer.TransferConfig
- :param Config: The transfer configuration to be used when performing the
- transfer.
- """
- return self.meta.client.upload_file(
- Filename=Filename, Bucket=self.bucket_name, Key=self.key,
- ExtraArgs=ExtraArgs, Callback=Callback, Config=Config)
-
-
-def object_download_file(self, Filename,
- ExtraArgs=None, Callback=None, Config=None):
- """Download an S3 object to a file.
-
- Usage::
-
- import boto3
- s3 = boto3.resource('s3')
- s3.Object('mybucket', 'hello.txt').download_file('/tmp/hello.txt')
-
- Similar behavior as S3Transfer's download_file() method,
- except that parameters are capitalized. Detailed examples can be found at
- :ref:`S3Transfer's Usage `.
-
- :type Filename: str
- :param Filename: The path to the file to download to.
-
- :type ExtraArgs: dict
- :param ExtraArgs: Extra arguments that may be passed to the
- client operation.
-
- :type Callback: function
- :param Callback: A method which takes a number of bytes transferred to
- be periodically called during the download.
-
- :type Config: boto3.s3.transfer.TransferConfig
- :param Config: The transfer configuration to be used when performing the
- transfer.
- """
- return self.meta.client.download_file(
- Bucket=self.bucket_name, Key=self.key, Filename=Filename,
- ExtraArgs=ExtraArgs, Callback=Callback, Config=Config)
-
-
-def copy(self, CopySource, Bucket, Key, ExtraArgs=None, Callback=None,
- SourceClient=None, Config=None):
- """Copy an object from one S3 location to another.
-
- This is a managed transfer which will perform a multipart copy in
- multiple threads if necessary.
-
- Usage::
-
- import boto3
- s3 = boto3.resource('s3')
- copy_source = {
- 'Bucket': 'mybucket',
- 'Key': 'mykey'
- }
- s3.meta.client.copy(copy_source, 'otherbucket', 'otherkey')
-
- :type CopySource: dict
- :param CopySource: The name of the source bucket, key name of the
- source object, and optional version ID of the source object. The
- dictionary format is:
- ``{'Bucket': 'bucket', 'Key': 'key', 'VersionId': 'id'}``. Note
- that the ``VersionId`` key is optional and may be omitted.
-
- :type Bucket: str
- :param Bucket: The name of the bucket to copy to
-
- :type Key: str
- :param Key: The name of the key to copy to
-
- :type ExtraArgs: dict
- :param ExtraArgs: Extra arguments that may be passed to the
- client operation
-
- :type Callback: function
- :param Callback: A method which takes a number of bytes transferred to
- be periodically called during the copy.
-
- :type SourceClient: botocore or boto3 Client
- :param SourceClient: The client to be used for operation that
- may happen at the source object. For example, this client is
- used for the head_object that determines the size of the copy.
- If no client is provided, the current client is used as the client
- for the source object.
-
- :type Config: boto3.s3.transfer.TransferConfig
- :param Config: The transfer configuration to be used when performing the
- copy.
- """
- subscribers = None
- if Callback is not None:
- subscribers = [ProgressCallbackInvoker(Callback)]
-
- config = Config
- if config is None:
- config = TransferConfig()
-
- with create_transfer_manager(self, config) as manager:
- future = manager.copy(
- copy_source=CopySource, bucket=Bucket, key=Key,
- extra_args=ExtraArgs, subscribers=subscribers,
- source_client=SourceClient)
- return future.result()
-
-
-def bucket_copy(self, CopySource, Key, ExtraArgs=None, Callback=None,
- SourceClient=None, Config=None):
- """Copy an object from one S3 location to an object in this bucket.
-
- This is a managed transfer which will perform a multipart copy in
- multiple threads if necessary.
-
- Usage::
-
- import boto3
- s3 = boto3.resource('s3')
- copy_source = {
- 'Bucket': 'mybucket',
- 'Key': 'mykey'
- }
- bucket = s3.Bucket('otherbucket')
- bucket.copy(copy_source, 'otherkey')
-
- :type CopySource: dict
- :param CopySource: The name of the source bucket, key name of the
- source object, and optional version ID of the source object. The
- dictionary format is:
- ``{'Bucket': 'bucket', 'Key': 'key', 'VersionId': 'id'}``. Note
- that the ``VersionId`` key is optional and may be omitted.
-
- :type Key: str
- :param Key: The name of the key to copy to
-
- :type ExtraArgs: dict
- :param ExtraArgs: Extra arguments that may be passed to the
- client operation
-
- :type Callback: function
- :param Callback: A method which takes a number of bytes transferred to
- be periodically called during the copy.
-
- :type SourceClient: botocore or boto3 Client
- :param SourceClient: The client to be used for operation that
- may happen at the source object. For example, this client is
- used for the head_object that determines the size of the copy.
- If no client is provided, the current client is used as the client
- for the source object.
-
- :type Config: boto3.s3.transfer.TransferConfig
- :param Config: The transfer configuration to be used when performing the
- copy.
- """
- return self.meta.client.copy(
- CopySource=CopySource, Bucket=self.name, Key=Key, ExtraArgs=ExtraArgs,
- Callback=Callback, SourceClient=SourceClient, Config=Config)
-
-
-def object_copy(self, CopySource, ExtraArgs=None, Callback=None,
- SourceClient=None, Config=None):
- """Copy an object from one S3 location to this object.
-
- This is a managed transfer which will perform a multipart copy in
- multiple threads if necessary.
-
- Usage::
-
- import boto3
- s3 = boto3.resource('s3')
- copy_source = {
- 'Bucket': 'mybucket',
- 'Key': 'mykey'
- }
- bucket = s3.Bucket('otherbucket')
- obj = bucket.Object('otherkey')
- obj.copy(copy_source)
-
- :type CopySource: dict
- :param CopySource: The name of the source bucket, key name of the
- source object, and optional version ID of the source object. The
- dictionary format is:
- ``{'Bucket': 'bucket', 'Key': 'key', 'VersionId': 'id'}``. Note
- that the ``VersionId`` key is optional and may be omitted.
-
- :type ExtraArgs: dict
- :param ExtraArgs: Extra arguments that may be passed to the
- client operation
-
- :type Callback: function
- :param Callback: A method which takes a number of bytes transferred to
- be periodically called during the copy.
-
- :type SourceClient: botocore or boto3 Client
- :param SourceClient: The client to be used for operation that
- may happen at the source object. For example, this client is
- used for the head_object that determines the size of the copy.
- If no client is provided, the current client is used as the client
- for the source object.
-
- :type Config: boto3.s3.transfer.TransferConfig
- :param Config: The transfer configuration to be used when performing the
- copy.
- """
- return self.meta.client.copy(
- CopySource=CopySource, Bucket=self.bucket_name, Key=self.key,
- ExtraArgs=ExtraArgs, Callback=Callback, SourceClient=SourceClient,
- Config=Config)
-
-
-def upload_fileobj(self, Fileobj, Bucket, Key, ExtraArgs=None,
- Callback=None, Config=None):
- """Upload a file-like object to S3.
-
- The file-like object must be in binary mode.
-
- This is a managed transfer which will perform a multipart upload in
- multiple threads if necessary.
-
- Usage::
-
- import boto3
- s3 = boto3.client('s3')
-
- with open('filename', 'rb') as data:
- s3.upload_fileobj(data, 'mybucket', 'mykey')
-
- :type Fileobj: a file-like object
- :param Fileobj: A file-like object to upload. At a minimum, it must
- implement the `read` method, and must return bytes.
-
- :type Bucket: str
- :param Bucket: The name of the bucket to upload to.
-
- :type Key: str
- :param Key: The name of the key to upload to.
-
- :type ExtraArgs: dict
- :param ExtraArgs: Extra arguments that may be passed to the
- client operation.
-
- :type Callback: function
- :param Callback: A method which takes a number of bytes transferred to
- be periodically called during the upload.
-
- :type Config: boto3.s3.transfer.TransferConfig
- :param Config: The transfer configuration to be used when performing the
- upload.
- """
- if not hasattr(Fileobj, 'read'):
- raise ValueError('Fileobj must implement read')
-
- subscribers = None
- if Callback is not None:
- subscribers = [ProgressCallbackInvoker(Callback)]
-
- config = Config
- if config is None:
- config = TransferConfig()
-
- with create_transfer_manager(self, config) as manager:
- future = manager.upload(
- fileobj=Fileobj, bucket=Bucket, key=Key,
- extra_args=ExtraArgs, subscribers=subscribers)
- return future.result()
-
-
-def bucket_upload_fileobj(self, Fileobj, Key, ExtraArgs=None,
- Callback=None, Config=None):
- """Upload a file-like object to this bucket.
-
- The file-like object must be in binary mode.
-
- This is a managed transfer which will perform a multipart upload in
- multiple threads if necessary.
-
- Usage::
-
- import boto3
- s3 = boto3.resource('s3')
- bucket = s3.Bucket('mybucket')
-
- with open('filename', 'rb') as data:
- bucket.upload_fileobj(data, 'mykey')
-
- :type Fileobj: a file-like object
- :param Fileobj: A file-like object to upload. At a minimum, it must
- implement the `read` method, and must return bytes.
-
- :type Key: str
- :param Key: The name of the key to upload to.
-
- :type ExtraArgs: dict
- :param ExtraArgs: Extra arguments that may be passed to the
- client operation.
-
- :type Callback: function
- :param Callback: A method which takes a number of bytes transferred to
- be periodically called during the upload.
-
- :type Config: boto3.s3.transfer.TransferConfig
- :param Config: The transfer configuration to be used when performing the
- upload.
- """
- return self.meta.client.upload_fileobj(
- Fileobj=Fileobj, Bucket=self.name, Key=Key, ExtraArgs=ExtraArgs,
- Callback=Callback, Config=Config)
-
-
-def object_upload_fileobj(self, Fileobj, ExtraArgs=None, Callback=None,
- Config=None):
- """Upload a file-like object to this object.
-
- The file-like object must be in binary mode.
-
- This is a managed transfer which will perform a multipart upload in
- multiple threads if necessary.
-
- Usage::
-
- import boto3
- s3 = boto3.resource('s3')
- bucket = s3.Bucket('mybucket')
- obj = bucket.Object('mykey')
-
- with open('filename', 'rb') as data:
- obj.upload_fileobj(data)
-
- :type Fileobj: a file-like object
- :param Fileobj: A file-like object to upload. At a minimum, it must
- implement the `read` method, and must return bytes.
-
- :type ExtraArgs: dict
- :param ExtraArgs: Extra arguments that may be passed to the
- client operation.
-
- :type Callback: function
- :param Callback: A method which takes a number of bytes transferred to
- be periodically called during the upload.
-
- :type Config: boto3.s3.transfer.TransferConfig
- :param Config: The transfer configuration to be used when performing the
- upload.
- """
- return self.meta.client.upload_fileobj(
- Fileobj=Fileobj, Bucket=self.bucket_name, Key=self.key,
- ExtraArgs=ExtraArgs, Callback=Callback, Config=Config)
-
-
-def download_fileobj(self, Bucket, Key, Fileobj, ExtraArgs=None,
- Callback=None, Config=None):
- """Download an object from S3 to a file-like object.
-
- The file-like object must be in binary mode.
-
- This is a managed transfer which will perform a multipart download in
- multiple threads if necessary.
-
- Usage::
-
- import boto3
- s3 = boto3.client('s3')
-
- with open('filename', 'wb') as data:
- s3.download_fileobj('mybucket', 'mykey', data)
-
- :type Fileobj: a file-like object
- :param Fileobj: A file-like object to download into. At a minimum, it must
- implement the `write` method and must accept bytes.
-
- :type Bucket: str
- :param Bucket: The name of the bucket to download from.
-
- :type Key: str
- :param Key: The name of the key to download from.
-
- :type ExtraArgs: dict
- :param ExtraArgs: Extra arguments that may be passed to the
- client operation.
-
- :type Callback: function
- :param Callback: A method which takes a number of bytes transferred to
- be periodically called during the download.
-
- :type Config: boto3.s3.transfer.TransferConfig
- :param Config: The transfer configuration to be used when performing the
- download.
- """
- if not hasattr(Fileobj, 'write'):
- raise ValueError('Fileobj must implement write')
-
- subscribers = None
- if Callback is not None:
- subscribers = [ProgressCallbackInvoker(Callback)]
-
- config = Config
- if config is None:
- config = TransferConfig()
-
- with create_transfer_manager(self, config) as manager:
- future = manager.download(
- bucket=Bucket, key=Key, fileobj=Fileobj,
- extra_args=ExtraArgs, subscribers=subscribers)
- return future.result()
-
-
-def bucket_download_fileobj(self, Key, Fileobj, ExtraArgs=None,
- Callback=None, Config=None):
- """Download an object from this bucket to a file-like-object.
-
- The file-like object must be in binary mode.
-
- This is a managed transfer which will perform a multipart download in
- multiple threads if necessary.
-
- Usage::
-
- import boto3
- s3 = boto3.resource('s3')
- bucket = s3.Bucket('mybucket')
-
- with open('filename', 'wb') as data:
- bucket.download_fileobj('mykey', data)
-
- :type Fileobj: a file-like object
- :param Fileobj: A file-like object to download into. At a minimum, it must
- implement the `write` method and must accept bytes.
-
- :type Key: str
- :param Key: The name of the key to download from.
-
- :type ExtraArgs: dict
- :param ExtraArgs: Extra arguments that may be passed to the
- client operation.
-
- :type Callback: function
- :param Callback: A method which takes a number of bytes transferred to
- be periodically called during the download.
-
- :type Config: boto3.s3.transfer.TransferConfig
- :param Config: The transfer configuration to be used when performing the
- download.
- """
- return self.meta.client.download_fileobj(
- Bucket=self.name, Key=Key, Fileobj=Fileobj, ExtraArgs=ExtraArgs,
- Callback=Callback, Config=Config)
-
-
-def object_download_fileobj(self, Fileobj, ExtraArgs=None, Callback=None,
- Config=None):
- """Download this object from S3 to a file-like object.
-
- The file-like object must be in binary mode.
-
- This is a managed transfer which will perform a multipart download in
- multiple threads if necessary.
-
- Usage::
-
- import boto3
- s3 = boto3.resource('s3')
- bucket = s3.Bucket('mybucket')
- obj = bucket.Object('mykey')
-
- with open('filename', 'wb') as data:
- obj.download_fileobj(data)
-
- :type Fileobj: a file-like object
- :param Fileobj: A file-like object to download into. At a minimum, it must
- implement the `write` method and must accept bytes.
-
- :type ExtraArgs: dict
- :param ExtraArgs: Extra arguments that may be passed to the
- client operation.
-
- :type Callback: function
- :param Callback: A method which takes a number of bytes transferred to
- be periodically called during the download.
-
- :type Config: boto3.s3.transfer.TransferConfig
- :param Config: The transfer configuration to be used when performing the
- download.
- """
- return self.meta.client.download_fileobj(
- Bucket=self.bucket_name, Key=self.key, Fileobj=Fileobj,
- ExtraArgs=ExtraArgs, Callback=Callback, Config=Config)
-
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/s3/transfer.py b/.eggs/boto3-1.7.75-py2.7.egg/boto3/s3/transfer.py
deleted file mode 100644
index 5c8b8318..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/s3/transfer.py
+++ /dev/null
@@ -1,338 +0,0 @@
-# Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"). You
-# may not use this file except in compliance with the License. A copy of
-# the License is located at
-#
-# http://aws.amazon.com/apache2.0/
-#
-# or in the "license" file accompanying this file. This file 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.
-"""Abstractions over S3's upload/download operations.
-
-This module provides high level abstractions for efficient
-uploads/downloads. It handles several things for the user:
-
-* Automatically switching to multipart transfers when
- a file is over a specific size threshold
-* Uploading/downloading a file in parallel
-* Progress callbacks to monitor transfers
-* Retries. While botocore handles retries for streaming uploads,
- it is not possible for it to handle retries for streaming
- downloads. This module handles retries for both cases so
- you don't need to implement any retry logic yourself.
-
-This module has a reasonable set of defaults. It also allows you
-to configure many aspects of the transfer process including:
-
-* Multipart threshold size
-* Max parallel downloads
-* Socket timeouts
-* Retry amounts
-
-There is no support for s3->s3 multipart copies at this
-time.
-
-
-.. _ref_s3transfer_usage:
-
-Usage
-=====
-
-The simplest way to use this module is:
-
-.. code-block:: python
-
- client = boto3.client('s3', 'us-west-2')
- transfer = S3Transfer(client)
- # Upload /tmp/myfile to s3://bucket/key
- transfer.upload_file('/tmp/myfile', 'bucket', 'key')
-
- # Download s3://bucket/key to /tmp/myfile
- transfer.download_file('bucket', 'key', '/tmp/myfile')
-
-The ``upload_file`` and ``download_file`` methods also accept
-``**kwargs``, which will be forwarded through to the corresponding
-client operation. Here are a few examples using ``upload_file``::
-
- # Making the object public
- transfer.upload_file('/tmp/myfile', 'bucket', 'key',
- extra_args={'ACL': 'public-read'})
-
- # Setting metadata
- transfer.upload_file('/tmp/myfile', 'bucket', 'key',
- extra_args={'Metadata': {'a': 'b', 'c': 'd'}})
-
- # Setting content type
- transfer.upload_file('/tmp/myfile.json', 'bucket', 'key',
- extra_args={'ContentType': "application/json"})
-
-
-The ``S3Transfer`` class also supports progress callbacks so you can
-provide transfer progress to users. Both the ``upload_file`` and
-``download_file`` methods take an optional ``callback`` parameter.
-Here's an example of how to print a simple progress percentage
-to the user:
-
-.. code-block:: python
-
- class ProgressPercentage(object):
- def __init__(self, filename):
- self._filename = filename
- self._size = float(os.path.getsize(filename))
- self._seen_so_far = 0
- self._lock = threading.Lock()
-
- def __call__(self, bytes_amount):
- # To simplify we'll assume this is hooked up
- # to a single filename.
- with self._lock:
- self._seen_so_far += bytes_amount
- percentage = (self._seen_so_far / self._size) * 100
- sys.stdout.write(
- "\r%s %s / %s (%.2f%%)" % (
- self._filename, self._seen_so_far, self._size,
- percentage))
- sys.stdout.flush()
-
-
- transfer = S3Transfer(boto3.client('s3', 'us-west-2'))
- # Upload /tmp/myfile to s3://bucket/key and print upload progress.
- transfer.upload_file('/tmp/myfile', 'bucket', 'key',
- callback=ProgressPercentage('/tmp/myfile'))
-
-
-
-You can also provide a TransferConfig object to the S3Transfer
-object that gives you more fine grained control over the
-transfer. For example:
-
-.. code-block:: python
-
- client = boto3.client('s3', 'us-west-2')
- config = TransferConfig(
- multipart_threshold=8 * 1024 * 1024,
- max_concurrency=10,
- num_download_attempts=10,
- )
- transfer = S3Transfer(client, config)
- transfer.upload_file('/tmp/foo', 'bucket', 'key')
-
-
-"""
-from botocore.exceptions import ClientError
-from botocore.compat import six
-from s3transfer.exceptions import RetriesExceededError as \
- S3TransferRetriesExceededError
-from s3transfer.manager import TransferConfig as S3TransferConfig
-from s3transfer.manager import TransferManager
-from s3transfer.futures import NonThreadedExecutor
-from s3transfer.subscribers import BaseSubscriber
-from s3transfer.utils import OSUtils
-
-from boto3.exceptions import RetriesExceededError, S3UploadFailedError
-
-
-KB = 1024
-MB = KB * KB
-
-
-def create_transfer_manager(client, config, osutil=None):
- """Creates a transfer manager based on configuration
-
- :type client: boto3.client
- :param client: The S3 client to use
-
- :type config: boto3.s3.transfer.TransferConfig
- :param config: The transfer config to use
-
- :type osutil: s3transfer.utils.OSUtils
- :param osutil: The os utility to use
-
- :rtype: s3transfer.manager.TransferManager
- :returns: A transfer manager based on parameters provided
- """
- executor_cls = None
- if not config.use_threads:
- executor_cls = NonThreadedExecutor
- return TransferManager(client, config, osutil, executor_cls)
-
-
-class TransferConfig(S3TransferConfig):
- ALIAS = {
- 'max_concurrency': 'max_request_concurrency',
- 'max_io_queue': 'max_io_queue_size'
- }
-
- def __init__(self,
- multipart_threshold=8 * MB,
- max_concurrency=10,
- multipart_chunksize=8 * MB,
- num_download_attempts=5,
- max_io_queue=100,
- io_chunksize=256 * KB,
- use_threads=True):
- """Configuration object for managed S3 transfers
-
- :param multipart_threshold: The transfer size threshold for which
- multipart uploads, downloads, and copies will automatically be
- triggered.
-
- :param max_concurrency: The maximum number of threads that will be
- making requests to perform a transfer. If ``use_threads`` is
- set to ``False``, the value provided is ignored as the transfer
- will only ever use the main thread.
-
- :param multipart_chunksize: The partition size of each part for a
- multipart transfer.
-
- :param num_download_attempts: The number of download attempts that
- will be retried upon errors with downloading an object in S3.
- Note that these retries account for errors that occur when
- streaming down the data from s3 (i.e. socket errors and read
- timeouts that occur after recieving an OK response from s3).
- Other retryable exceptions such as throttling errors and 5xx
- errors are already retried by botocore (this default is 5). This
- does not take into account the number of exceptions retried by
- botocore.
-
- :param max_io_queue: The maximum amount of read parts that can be
- queued in memory to be written for a download. The size of each
- of these read parts is at most the size of ``io_chunksize``.
-
- :param io_chunksize: The max size of each chunk in the io queue.
- Currently, this is size used when ``read`` is called on the
- downloaded stream as well.
-
- :param use_threads: If True, threads will be used when performing
- S3 transfers. If False, no threads will be used in
- performing transfers: all logic will be ran in the main thread.
- """
- super(TransferConfig, self).__init__(
- multipart_threshold=multipart_threshold,
- max_request_concurrency=max_concurrency,
- multipart_chunksize=multipart_chunksize,
- num_download_attempts=num_download_attempts,
- max_io_queue_size=max_io_queue,
- io_chunksize=io_chunksize,
- )
- # Some of the argument names are not the same as the inherited
- # S3TransferConfig so we add aliases so you can still access the
- # old version of the names.
- for alias in self.ALIAS:
- setattr(self, alias, getattr(self, self.ALIAS[alias]))
- self.use_threads = use_threads
-
- def __setattr__(self, name, value):
- # If the alias name is used, make sure we set the name that it points
- # to as that is what actually is used in governing the TransferManager.
- if name in self.ALIAS:
- super(TransferConfig, self).__setattr__(self.ALIAS[name], value)
- # Always set the value of the actual name provided.
- super(TransferConfig, self).__setattr__(name, value)
-
-
-class S3Transfer(object):
- ALLOWED_DOWNLOAD_ARGS = TransferManager.ALLOWED_DOWNLOAD_ARGS
- ALLOWED_UPLOAD_ARGS = TransferManager.ALLOWED_UPLOAD_ARGS
-
- def __init__(self, client=None, config=None, osutil=None, manager=None):
- if not client and not manager:
- raise ValueError(
- 'Either a boto3.Client or s3transfer.manager.TransferManager '
- 'must be provided'
- )
- if manager and any([client, config, osutil]):
- raise ValueError(
- 'Manager cannot be provided with client, config, '
- 'nor osutil. These parameters are mutually exclusive.'
- )
- if config is None:
- config = TransferConfig()
- if osutil is None:
- osutil = OSUtils()
- if manager:
- self._manager = manager
- else:
- self._manager = create_transfer_manager(client, config, osutil)
-
- def upload_file(self, filename, bucket, key,
- callback=None, extra_args=None):
- """Upload a file to an S3 object.
-
- Variants have also been injected into S3 client, Bucket and Object.
- You don't have to use S3Transfer.upload_file() directly.
-
- .. seealso::
- :py:meth:`S3.Client.upload_file`
- :py:meth:`S3.Client.upload_fileobj`
- """
- if not isinstance(filename, six.string_types):
- raise ValueError('Filename must be a string')
-
- subscribers = self._get_subscribers(callback)
- future = self._manager.upload(
- filename, bucket, key, extra_args, subscribers)
- try:
- future.result()
- # If a client error was raised, add the backwards compatibility layer
- # that raises a S3UploadFailedError. These specific errors were only
- # ever thrown for upload_parts but now can be thrown for any related
- # client error.
- except ClientError as e:
- raise S3UploadFailedError(
- "Failed to upload %s to %s: %s" % (
- filename, '/'.join([bucket, key]), e))
-
- def download_file(self, bucket, key, filename, extra_args=None,
- callback=None):
- """Download an S3 object to a file.
-
- Variants have also been injected into S3 client, Bucket and Object.
- You don't have to use S3Transfer.download_file() directly.
-
- .. seealso::
- :py:meth:`S3.Client.download_file`
- :py:meth:`S3.Client.download_fileobj`
- """
- if not isinstance(filename, six.string_types):
- raise ValueError('Filename must be a string')
-
- subscribers = self._get_subscribers(callback)
- future = self._manager.download(
- bucket, key, filename, extra_args, subscribers)
- try:
- future.result()
- # This is for backwards compatibility where when retries are
- # exceeded we need to throw the same error from boto3 instead of
- # s3transfer's built in RetriesExceededError as current users are
- # catching the boto3 one instead of the s3transfer exception to do
- # their own retries.
- except S3TransferRetriesExceededError as e:
- raise RetriesExceededError(e.last_exception)
-
- def _get_subscribers(self, callback):
- if not callback:
- return None
- return [ProgressCallbackInvoker(callback)]
-
- def __enter__(self):
- return self
-
- def __exit__(self, *args):
- self._manager.__exit__(*args)
-
-
-class ProgressCallbackInvoker(BaseSubscriber):
- """A back-compat wrapper to invoke a provided callback via a subscriber
-
- :param callback: A callable that takes a single positional argument for
- how many bytes were transferred.
- """
- def __init__(self, callback):
- self._callback = callback
-
- def on_progress(self, bytes_transferred, **kwargs):
- self._callback(bytes_transferred)
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/session.py b/.eggs/boto3-1.7.75-py2.7.egg/boto3/session.py
deleted file mode 100644
index fa981c1c..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/session.py
+++ /dev/null
@@ -1,452 +0,0 @@
-# Copyright 2014 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"). You
-# may not use this file except in compliance with the License. A copy of
-# the License is located at
-#
-# http://aws.amazon.com/apache2.0/
-#
-# or in the "license" file accompanying this file. This file 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.
-
-import copy
-import os
-
-import botocore.session
-from botocore.client import Config
-from botocore.exceptions import DataNotFoundError, UnknownServiceError
-
-import boto3
-import boto3.utils
-from boto3.exceptions import ResourceNotExistsError, UnknownAPIVersionError
-
-from .resources.factory import ResourceFactory
-
-
-class Session(object):
- """
- A session stores configuration state and allows you to create service
- clients and resources.
-
- :type aws_access_key_id: string
- :param aws_access_key_id: AWS access key ID
- :type aws_secret_access_key: string
- :param aws_secret_access_key: AWS secret access key
- :type aws_session_token: string
- :param aws_session_token: AWS temporary session token
- :type region_name: string
- :param region_name: Default region when creating new connections
- :type botocore_session: botocore.session.Session
- :param botocore_session: Use this Botocore session instead of creating
- a new default one.
- :type profile_name: string
- :param profile_name: The name of a profile to use. If not given, then
- the default profile is used.
- """
- def __init__(self, aws_access_key_id=None, aws_secret_access_key=None,
- aws_session_token=None, region_name=None,
- botocore_session=None, profile_name=None):
- if botocore_session is not None:
- self._session = botocore_session
- else:
- # Create a new default session
- self._session = botocore.session.get_session()
-
- # Setup custom user-agent string if it isn't already customized
- if self._session.user_agent_name == 'Botocore':
- botocore_info = 'Botocore/{0}'.format(
- self._session.user_agent_version)
- if self._session.user_agent_extra:
- self._session.user_agent_extra += ' ' + botocore_info
- else:
- self._session.user_agent_extra = botocore_info
- self._session.user_agent_name = 'Boto3'
- self._session.user_agent_version = boto3.__version__
-
- if profile_name is not None:
- self._session.set_config_variable('profile', profile_name)
-
- if aws_access_key_id or aws_secret_access_key or aws_session_token:
- self._session.set_credentials(
- aws_access_key_id, aws_secret_access_key, aws_session_token)
-
- if region_name is not None:
- self._session.set_config_variable('region', region_name)
-
- self.resource_factory = ResourceFactory(
- self._session.get_component('event_emitter'))
- self._setup_loader()
- self._register_default_handlers()
-
- def __repr__(self):
- return '{0}(region_name={1})'.format(
- self.__class__.__name__,
- repr(self._session.get_config_variable('region')))
-
- @property
- def profile_name(self):
- """
- The **read-only** profile name.
- """
- return self._session.profile or 'default'
-
- @property
- def region_name(self):
- """
- The **read-only** region name.
- """
- return self._session.get_config_variable('region')
-
- @property
- def events(self):
- """
- The event emitter for a session
- """
- return self._session.get_component('event_emitter')
-
- @property
- def available_profiles(self):
- """
- The profiles available to the session credentials
- """
- return self._session.available_profiles
-
- def _setup_loader(self):
- """
- Setup loader paths so that we can load resources.
- """
- self._loader = self._session.get_component('data_loader')
- self._loader.search_paths.append(
- os.path.join(os.path.dirname(__file__), 'data'))
-
- def get_available_services(self):
- """
- Get a list of available services that can be loaded as low-level
- clients via :py:meth:`Session.client`.
-
- :rtype: list
- :return: List of service names
- """
- return self._session.get_available_services()
-
- def get_available_resources(self):
- """
- Get a list of available services that can be loaded as resource
- clients via :py:meth:`Session.resource`.
-
- :rtype: list
- :return: List of service names
- """
- return self._loader.list_available_services(type_name='resources-1')
-
- def get_available_partitions(self):
- """Lists the available partitions
-
- :rtype: list
- :return: Returns a list of partition names (e.g., ["aws", "aws-cn"])
- """
- return self._session.get_available_partitions()
-
- def get_available_regions(self, service_name, partition_name='aws',
- allow_non_regional=False):
- """Lists the region and endpoint names of a particular partition.
-
- :type service_name: string
- :param service_name: Name of a service to list endpoint for (e.g., s3).
-
- :type partition_name: string
- :param partition_name: Name of the partition to limit endpoints to.
- (e.g., aws for the public AWS endpoints, aws-cn for AWS China
- endpoints, aws-us-gov for AWS GovCloud (US) Endpoints, etc.)
-
- :type allow_non_regional: bool
- :param allow_non_regional: Set to True to include endpoints that are
- not regional endpoints (e.g., s3-external-1,
- fips-us-gov-west-1, etc).
-
- :return: Returns a list of endpoint names (e.g., ["us-east-1"]).
- """
- return self._session.get_available_regions(
- service_name=service_name, partition_name=partition_name,
- allow_non_regional=allow_non_regional)
-
- def get_credentials(self):
- """
- Return the :class:`botocore.credential.Credential` object
- associated with this session. If the credentials have not
- yet been loaded, this will attempt to load them. If they
- have already been loaded, this will return the cached
- credentials.
- """
- return self._session.get_credentials()
-
- def client(self, service_name, region_name=None, api_version=None,
- use_ssl=True, verify=None, endpoint_url=None,
- aws_access_key_id=None, aws_secret_access_key=None,
- aws_session_token=None, config=None):
- """
- Create a low-level service client by name.
-
- :type service_name: string
- :param service_name: The name of a service, e.g. 's3' or 'ec2'. You
- can get a list of available services via
- :py:meth:`get_available_services`.
-
- :type region_name: string
- :param region_name: The name of the region associated with the client.
- A client is associated with a single region.
-
- :type api_version: string
- :param api_version: The API version to use. By default, botocore will
- use the latest API version when creating a client. You only need
- to specify this parameter if you want to use a previous API version
- of the client.
-
- :type use_ssl: boolean
- :param use_ssl: Whether or not to use SSL. By default, SSL is used.
- Note that not all services support non-ssl connections.
-
- :type verify: boolean/string
- :param verify: Whether or not to verify SSL certificates. By default
- SSL certificates are verified. You can provide the following
- values:
-
- * False - do not validate SSL certificates. SSL will still be
- used (unless use_ssl is False), but SSL certificates
- will not be verified.
- * path/to/cert/bundle.pem - A filename of the CA cert bundle to
- uses. You can specify this argument if you want to use a
- different CA cert bundle than the one used by botocore.
-
- :type endpoint_url: string
- :param endpoint_url: The complete URL to use for the constructed
- client. Normally, botocore will automatically construct the
- appropriate URL to use when communicating with a service. You
- can specify a complete URL (including the "http/https" scheme)
- to override this behavior. If this value is provided,
- then ``use_ssl`` is ignored.
-
- :type aws_access_key_id: string
- :param aws_access_key_id: The access key to use when creating
- the client. This is entirely optional, and if not provided,
- the credentials configured for the session will automatically
- be used. You only need to provide this argument if you want
- to override the credentials used for this specific client.
-
- :type aws_secret_access_key: string
- :param aws_secret_access_key: The secret key to use when creating
- the client. Same semantics as aws_access_key_id above.
-
- :type aws_session_token: string
- :param aws_session_token: The session token to use when creating
- the client. Same semantics as aws_access_key_id above.
-
- :type config: botocore.client.Config
- :param config: Advanced client configuration options. If region_name
- is specified in the client config, its value will take precedence
- over environment variables and configuration values, but not over
- a region_name value passed explicitly to the method. See
- `botocore config documentation
- `_
- for more details.
-
- :return: Service client instance
-
- """
- return self._session.create_client(
- service_name, region_name=region_name, api_version=api_version,
- use_ssl=use_ssl, verify=verify, endpoint_url=endpoint_url,
- aws_access_key_id=aws_access_key_id,
- aws_secret_access_key=aws_secret_access_key,
- aws_session_token=aws_session_token, config=config)
-
- def resource(self, service_name, region_name=None, api_version=None,
- use_ssl=True, verify=None, endpoint_url=None,
- aws_access_key_id=None, aws_secret_access_key=None,
- aws_session_token=None, config=None):
- """
- Create a resource service client by name.
-
- :type service_name: string
- :param service_name: The name of a service, e.g. 's3' or 'ec2'. You
- can get a list of available services via
- :py:meth:`get_available_resources`.
-
- :type region_name: string
- :param region_name: The name of the region associated with the client.
- A client is associated with a single region.
-
- :type api_version: string
- :param api_version: The API version to use. By default, botocore will
- use the latest API version when creating a client. You only need
- to specify this parameter if you want to use a previous API version
- of the client.
-
- :type use_ssl: boolean
- :param use_ssl: Whether or not to use SSL. By default, SSL is used.
- Note that not all services support non-ssl connections.
-
- :type verify: boolean/string
- :param verify: Whether or not to verify SSL certificates. By default
- SSL certificates are verified. You can provide the following
- values:
-
- * False - do not validate SSL certificates. SSL will still be
- used (unless use_ssl is False), but SSL certificates
- will not be verified.
- * path/to/cert/bundle.pem - A filename of the CA cert bundle to
- uses. You can specify this argument if you want to use a
- different CA cert bundle than the one used by botocore.
-
- :type endpoint_url: string
- :param endpoint_url: The complete URL to use for the constructed
- client. Normally, botocore will automatically construct the
- appropriate URL to use when communicating with a service. You
- can specify a complete URL (including the "http/https" scheme)
- to override this behavior. If this value is provided,
- then ``use_ssl`` is ignored.
-
- :type aws_access_key_id: string
- :param aws_access_key_id: The access key to use when creating
- the client. This is entirely optional, and if not provided,
- the credentials configured for the session will automatically
- be used. You only need to provide this argument if you want
- to override the credentials used for this specific client.
-
- :type aws_secret_access_key: string
- :param aws_secret_access_key: The secret key to use when creating
- the client. Same semantics as aws_access_key_id above.
-
- :type aws_session_token: string
- :param aws_session_token: The session token to use when creating
- the client. Same semantics as aws_access_key_id above.
-
- :type config: botocore.client.Config
- :param config: Advanced client configuration options. If region_name
- is specified in the client config, its value will take precedence
- over environment variables and configuration values, but not over
- a region_name value passed explicitly to the method. If
- user_agent_extra is specified in the client config, it overrides
- the default user_agent_extra provided by the resource API. See
- `botocore config documentation
- `_
- for more details.
-
- :return: Subclass of :py:class:`~boto3.resources.base.ServiceResource`
- """
- try:
- resource_model = self._loader.load_service_model(
- service_name, 'resources-1', api_version)
- except UnknownServiceError:
- available = self.get_available_resources()
- has_low_level_client = (
- service_name in self.get_available_services())
- raise ResourceNotExistsError(service_name, available,
- has_low_level_client)
- except DataNotFoundError:
- # This is because we've provided an invalid API version.
- available_api_versions = self._loader.list_api_versions(
- service_name, 'resources-1')
- raise UnknownAPIVersionError(
- service_name, api_version, ', '.join(available_api_versions))
-
- if api_version is None:
- # Even though botocore's load_service_model() can handle
- # using the latest api_version if not provided, we need
- # to track this api_version in boto3 in order to ensure
- # we're pairing a resource model with a client model
- # of the same API version. It's possible for the latest
- # API version of a resource model in boto3 to not be
- # the same API version as a service model in botocore.
- # So we need to look up the api_version if one is not
- # provided to ensure we load the same API version of the
- # client.
- #
- # Note: This is relying on the fact that
- # loader.load_service_model(..., api_version=None)
- # and loader.determine_latest_version(..., 'resources-1')
- # both load the same api version of the file.
- api_version = self._loader.determine_latest_version(
- service_name, 'resources-1')
-
- # Creating a new resource instance requires the low-level client
- # and service model, the resource version and resource JSON data.
- # We pass these to the factory and get back a class, which is
- # instantiated on top of the low-level client.
- if config is not None:
- if config.user_agent_extra is None:
- config = copy.deepcopy(config)
- config.user_agent_extra = 'Resource'
- else:
- config = Config(user_agent_extra='Resource')
- client = self.client(
- service_name, region_name=region_name, api_version=api_version,
- use_ssl=use_ssl, verify=verify, endpoint_url=endpoint_url,
- aws_access_key_id=aws_access_key_id,
- aws_secret_access_key=aws_secret_access_key,
- aws_session_token=aws_session_token, config=config)
- service_model = client.meta.service_model
-
- # Create a ServiceContext object to serve as a reference to
- # important read-only information about the general service.
- service_context = boto3.utils.ServiceContext(
- service_name=service_name, service_model=service_model,
- resource_json_definitions=resource_model['resources'],
- service_waiter_model=boto3.utils.LazyLoadedWaiterModel(
- self._session, service_name, api_version)
- )
-
- # Create the service resource class.
- cls = self.resource_factory.load_from_definition(
- resource_name=service_name,
- single_resource_json_definition=resource_model['service'],
- service_context=service_context
- )
-
- return cls(client=client)
-
- def _register_default_handlers(self):
-
- # S3 customizations
- self._session.register(
- 'creating-client-class.s3',
- boto3.utils.lazy_call(
- 'boto3.s3.inject.inject_s3_transfer_methods'))
- self._session.register(
- 'creating-resource-class.s3.Bucket',
- boto3.utils.lazy_call(
- 'boto3.s3.inject.inject_bucket_methods'))
- self._session.register(
- 'creating-resource-class.s3.Object',
- boto3.utils.lazy_call(
- 'boto3.s3.inject.inject_object_methods'))
- self._session.register(
- 'creating-resource-class.s3.ObjectSummary',
- boto3.utils.lazy_call(
- 'boto3.s3.inject.inject_object_summary_methods'))
-
- # DynamoDb customizations
- self._session.register(
- 'creating-resource-class.dynamodb',
- boto3.utils.lazy_call(
- 'boto3.dynamodb.transform.register_high_level_interface'),
- unique_id='high-level-dynamodb')
- self._session.register(
- 'creating-resource-class.dynamodb.Table',
- boto3.utils.lazy_call(
- 'boto3.dynamodb.table.register_table_methods'),
- unique_id='high-level-dynamodb-table')
-
- # EC2 Customizations
- self._session.register(
- 'creating-resource-class.ec2.ServiceResource',
- boto3.utils.lazy_call(
- 'boto3.ec2.createtags.inject_create_tags'))
-
- self._session.register(
- 'creating-resource-class.ec2.Instance',
- boto3.utils.lazy_call(
- 'boto3.ec2.deletetags.inject_delete_tags',
- event_emitter=self.events))
diff --git a/.eggs/boto3-1.7.75-py2.7.egg/boto3/utils.py b/.eggs/boto3-1.7.75-py2.7.egg/boto3/utils.py
deleted file mode 100644
index 826d39d6..00000000
--- a/.eggs/boto3-1.7.75-py2.7.egg/boto3/utils.py
+++ /dev/null
@@ -1,93 +0,0 @@
-# Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"). You
-# may not use this file except in compliance with the License. A copy of
-# the License is located at
-#
-# http://aws.amazon.com/apache2.0/
-#
-# or in the "license" file accompanying this file. This file 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.
-import sys
-from collections import namedtuple
-
-
-_ServiceContext = namedtuple(
- 'ServiceContext',
- ['service_name', 'service_model', 'service_waiter_model',
- 'resource_json_definitions']
-)
-
-
-class ServiceContext(_ServiceContext):
- """Provides important service-wide, read-only information about a service
-
- :type service_name: str
- :param service_name: The name of the service
-
- :type service_model: :py:class:`botocore.model.ServiceModel`
- :param service_model: The model of the service.
-
- :type service_waiter_model: :py:class:`botocore.waiter.WaiterModel` or
- a waiter model-like object such as
- :py:class:`boto3.utils.LazyLoadedWaiterModel`
- :param service_waiter_model: The waiter model of the service.
-
- :type resource_json_definitions: dict
- :param resource_json_definitions: The loaded json models of all resource
- shapes for a service. It is equivalient of loading a
- ``resource-1.json`` and retrieving the value at the key "resources".
- """
- pass
-
-
-def import_module(name):
- """Import module given a name.
-
- Does not support relative imports.
-
- """
- __import__(name)
- return sys.modules[name]
-
-
-def lazy_call(full_name, **kwargs):
- parent_kwargs = kwargs
-
- def _handler(**kwargs):
- module, function_name = full_name.rsplit('.', 1)
- module = import_module(module)
- kwargs.update(parent_kwargs)
- return getattr(module, function_name)(**kwargs)
-
- return _handler
-
-
-def inject_attribute(class_attributes, name, value):
- if name in class_attributes:
- raise RuntimeError(
- 'Cannot inject class attribute "%s", attribute '
- 'already exists in class dict.' % name)
- else:
- class_attributes[name] = value
-
-
-class LazyLoadedWaiterModel(object):
- """A lazily loaded waiter model
-
- This does not load the service waiter model until an attempt is made
- to retrieve the waiter model for a specific waiter. This is helpful
- in docstring generation where we do not need to actually need to grab
- the waiter-2.json until it is accessed through a ``get_waiter`` call
- when the docstring is generated/accessed.
- """
- def __init__(self, bc_session, service_name, api_version):
- self._session = bc_session
- self._service_name = service_name
- self._api_version = api_version
-
- def get_waiter(self, waiter_name):
- return self._session.get_waiter_model(
- self._service_name, self._api_version).get_waiter(waiter_name)
diff --git a/.eggs/botocore-1.10.75-py2.7.egg/EGG-INFO/PKG-INFO b/.eggs/botocore-1.10.75-py2.7.egg/EGG-INFO/PKG-INFO
deleted file mode 100644
index 9c551dba..00000000
--- a/.eggs/botocore-1.10.75-py2.7.egg/EGG-INFO/PKG-INFO
+++ /dev/null
@@ -1,58 +0,0 @@
-Metadata-Version: 1.1
-Name: botocore
-Version: 1.10.75
-Summary: Low-level, data-driven core of boto 3.
-Home-page: https://github.com/boto/botocore
-Author: Amazon Web Services
-Author-email: UNKNOWN
-License: Apache License 2.0
-Description: botocore
- ========
-
- .. image:: https://secure.travis-ci.org/boto/botocore.png?branch=develop
- :target: http://travis-ci.org/boto/botocore
-
- .. image:: https://codecov.io/github/boto/botocore/coverage.svg?branch=develop
- :target: https://codecov.io/github/boto/botocore?branch=develop
-
-
- A low-level interface to a growing number of Amazon Web Services. The
- botocore package is the foundation for the
- `AWS CLI `__ as well as
- `boto3 `__.
-
-
- Documentation
- -------------
- Documentation for ``botocore`` can be found on `Read the Docs `__.
-
-
- Getting Help
- ------------
-
- We use GitHub issues for tracking bugs and feature requests and have limited
- bandwidth to address them. Please use these community resources for getting
- help. Please note many of the same resources available for ``boto3`` are
- applicable for ``botocore``:
-
- * Ask a question on `Stack Overflow `__ and tag it with `boto3 `__
- * Come join the AWS Python community chat on `gitter `__
- * Open a support ticket with `AWS Support `__
- * If it turns out that you may have found a bug, please `open an issue `__
-
-Platform: UNKNOWN
-Classifier: Development Status :: 5 - Production/Stable
-Classifier: Intended Audience :: Developers
-Classifier: Intended Audience :: System Administrators
-Classifier: Natural Language :: English
-Classifier: License :: OSI Approved :: Apache Software License
-Classifier: Programming Language :: Python
-Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.6
-Classifier: Programming Language :: Python :: 2.7
-Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.3
-Classifier: Programming Language :: Python :: 3.4
-Classifier: Programming Language :: Python :: 3.5
-Classifier: Programming Language :: Python :: 3.6
-Classifier: Programming Language :: Python :: 3.7
diff --git a/.eggs/botocore-1.10.75-py2.7.egg/EGG-INFO/SOURCES.txt b/.eggs/botocore-1.10.75-py2.7.egg/EGG-INFO/SOURCES.txt
deleted file mode 100644
index 6fa02622..00000000
--- a/.eggs/botocore-1.10.75-py2.7.egg/EGG-INFO/SOURCES.txt
+++ /dev/null
@@ -1,1468 +0,0 @@
-LICENSE.txt
-MANIFEST.in
-README.rst
-requirements.txt
-setup.cfg
-setup.py
-botocore/__init__.py
-botocore/args.py
-botocore/auth.py
-botocore/awsrequest.py
-botocore/client.py
-botocore/compat.py
-botocore/config.py
-botocore/configloader.py
-botocore/credentials.py
-botocore/endpoint.py
-botocore/errorfactory.py
-botocore/eventstream.py
-botocore/exceptions.py
-botocore/handlers.py
-botocore/history.py
-botocore/hooks.py
-botocore/loaders.py
-botocore/model.py
-botocore/paginate.py
-botocore/parsers.py
-botocore/regions.py
-botocore/response.py
-botocore/retryhandler.py
-botocore/serialize.py
-botocore/session.py
-botocore/signers.py
-botocore/stub.py
-botocore/translate.py
-botocore/utils.py
-botocore/validate.py
-botocore/waiter.py
-botocore.egg-info/PKG-INFO
-botocore.egg-info/SOURCES.txt
-botocore.egg-info/dependency_links.txt
-botocore.egg-info/requires.txt
-botocore.egg-info/top_level.txt
-botocore/data/_retry.json
-botocore/data/endpoints.json
-botocore/data/acm-pca/2017-08-22/paginators-1.json
-botocore/data/acm-pca/2017-08-22/service-2.json
-botocore/data/acm/2015-12-08/examples-1.json
-botocore/data/acm/2015-12-08/paginators-1.json
-botocore/data/acm/2015-12-08/service-2.json
-botocore/data/acm/2015-12-08/waiters-2.json
-botocore/data/alexaforbusiness/2017-11-09/paginators-1.json
-botocore/data/alexaforbusiness/2017-11-09/service-2.json
-botocore/data/apigateway/2015-07-09/examples-1.json
-botocore/data/apigateway/2015-07-09/paginators-1.json
-botocore/data/apigateway/2015-07-09/service-2.json
-botocore/data/application-autoscaling/2016-02-06/examples-1.json
-botocore/data/application-autoscaling/2016-02-06/paginators-1.json
-botocore/data/application-autoscaling/2016-02-06/service-2.json
-botocore/data/appstream/2016-12-01/examples-1.json
-botocore/data/appstream/2016-12-01/paginators-1.json
-botocore/data/appstream/2016-12-01/service-2.json
-botocore/data/appstream/2016-12-01/waiters-2.json
-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
-botocore/data/batch/2016-08-10/examples-1.json
-botocore/data/batch/2016-08-10/paginators-1.json
-botocore/data/batch/2016-08-10/service-2.json
-botocore/data/budgets/2016-10-20/examples-1.json
-botocore/data/budgets/2016-10-20/paginators-1.json
-botocore/data/budgets/2016-10-20/service-2.json
-botocore/data/ce/2017-10-25/paginators-1.json
-botocore/data/ce/2017-10-25/service-2.json
-botocore/data/cloud9/2017-09-23/paginators-1.json
-botocore/data/cloud9/2017-09-23/service-2.json
-botocore/data/clouddirectory/2016-05-10/paginators-1.json
-botocore/data/clouddirectory/2016-05-10/service-2.json
-botocore/data/clouddirectory/2017-01-11/paginators-1.json
-botocore/data/clouddirectory/2017-01-11/service-2.json
-botocore/data/cloudformation/2010-05-15/examples-1.json
-botocore/data/cloudformation/2010-05-15/paginators-1.json
-botocore/data/cloudformation/2010-05-15/service-2.json
-botocore/data/cloudformation/2010-05-15/waiters-2.json
-botocore/data/cloudfront/2014-05-31/paginators-1.json
-botocore/data/cloudfront/2014-05-31/service-2.json
-botocore/data/cloudfront/2014-05-31/waiters-2.json
-botocore/data/cloudfront/2014-10-21/paginators-1.json
-botocore/data/cloudfront/2014-10-21/service-2.json
-botocore/data/cloudfront/2014-10-21/waiters-2.json
-botocore/data/cloudfront/2014-11-06/paginators-1.json
-botocore/data/cloudfront/2014-11-06/service-2.json
-botocore/data/cloudfront/2014-11-06/waiters-2.json
-botocore/data/cloudfront/2015-04-17/paginators-1.json
-botocore/data/cloudfront/2015-04-17/service-2.json
-botocore/data/cloudfront/2015-04-17/waiters-2.json
-botocore/data/cloudfront/2015-07-27/paginators-1.json
-botocore/data/cloudfront/2015-07-27/service-2.json
-botocore/data/cloudfront/2015-07-27/waiters-2.json
-botocore/data/cloudfront/2015-09-17/paginators-1.json
-botocore/data/cloudfront/2015-09-17/service-2.json
-botocore/data/cloudfront/2015-09-17/waiters-2.json
-botocore/data/cloudfront/2016-01-13/paginators-1.json
-botocore/data/cloudfront/2016-01-13/service-2.json
-botocore/data/cloudfront/2016-01-13/waiters-2.json
-botocore/data/cloudfront/2016-01-28/paginators-1.json
-botocore/data/cloudfront/2016-01-28/service-2.json
-botocore/data/cloudfront/2016-01-28/waiters-2.json
-botocore/data/cloudfront/2016-08-01/paginators-1.json
-botocore/data/cloudfront/2016-08-01/service-2.json
-botocore/data/cloudfront/2016-08-01/waiters-2.json
-botocore/data/cloudfront/2016-08-20/paginators-1.json
-botocore/data/cloudfront/2016-08-20/service-2.json
-botocore/data/cloudfront/2016-08-20/waiters-2.json
-botocore/data/cloudfront/2016-09-07/paginators-1.json
-botocore/data/cloudfront/2016-09-07/service-2.json
-botocore/data/cloudfront/2016-09-07/waiters-2.json
-botocore/data/cloudfront/2016-09-29/paginators-1.json
-botocore/data/cloudfront/2016-09-29/service-2.json
-botocore/data/cloudfront/2016-09-29/waiters-2.json
-botocore/data/cloudfront/2016-11-25/examples-1.json
-botocore/data/cloudfront/2016-11-25/paginators-1.json
-botocore/data/cloudfront/2016-11-25/service-2.json
-botocore/data/cloudfront/2016-11-25/waiters-2.json
-botocore/data/cloudfront/2017-03-25/examples-1.json
-botocore/data/cloudfront/2017-03-25/paginators-1.json
-botocore/data/cloudfront/2017-03-25/service-2.json
-botocore/data/cloudfront/2017-03-25/waiters-2.json
-botocore/data/cloudfront/2017-10-30/examples-1.json
-botocore/data/cloudfront/2017-10-30/paginators-1.json
-botocore/data/cloudfront/2017-10-30/service-2.json
-botocore/data/cloudfront/2017-10-30/waiters-2.json
-botocore/data/cloudhsm/2014-05-30/examples-1.json
-botocore/data/cloudhsm/2014-05-30/paginators-1.json
-botocore/data/cloudhsm/2014-05-30/service-2.json
-botocore/data/cloudhsmv2/2017-04-28/paginators-1.json
-botocore/data/cloudhsmv2/2017-04-28/service-2.json
-botocore/data/cloudsearch/2011-02-01/service-2.json
-botocore/data/cloudsearch/2013-01-01/paginators-1.json
-botocore/data/cloudsearch/2013-01-01/service-2.json
-botocore/data/cloudsearchdomain/2013-01-01/examples-1.json
-botocore/data/cloudsearchdomain/2013-01-01/service-2.json
-botocore/data/cloudtrail/2013-11-01/examples-1.json
-botocore/data/cloudtrail/2013-11-01/paginators-1.json
-botocore/data/cloudtrail/2013-11-01/service-2.json
-botocore/data/cloudwatch/2010-08-01/examples-1.json
-botocore/data/cloudwatch/2010-08-01/paginators-1.json
-botocore/data/cloudwatch/2010-08-01/service-2.json
-botocore/data/cloudwatch/2010-08-01/waiters-2.json
-botocore/data/codebuild/2016-10-06/examples-1.json
-botocore/data/codebuild/2016-10-06/paginators-1.json
-botocore/data/codebuild/2016-10-06/service-2.json
-botocore/data/codecommit/2015-04-13/examples-1.json
-botocore/data/codecommit/2015-04-13/paginators-1.json
-botocore/data/codecommit/2015-04-13/service-2.json
-botocore/data/codedeploy/2014-10-06/examples-1.json
-botocore/data/codedeploy/2014-10-06/paginators-1.json
-botocore/data/codedeploy/2014-10-06/service-2.json
-botocore/data/codedeploy/2014-10-06/waiters-2.json
-botocore/data/codepipeline/2015-07-09/examples-1.json
-botocore/data/codepipeline/2015-07-09/paginators-1.json
-botocore/data/codepipeline/2015-07-09/service-2.json
-botocore/data/codestar/2017-04-19/paginators-1.json
-botocore/data/codestar/2017-04-19/service-2.json
-botocore/data/cognito-identity/2014-06-30/examples-1.json
-botocore/data/cognito-identity/2014-06-30/paginators-1.json
-botocore/data/cognito-identity/2014-06-30/service-2.json
-botocore/data/cognito-idp/2016-04-18/examples-1.json
-botocore/data/cognito-idp/2016-04-18/paginators-1.json
-botocore/data/cognito-idp/2016-04-18/service-2.json
-botocore/data/cognito-sync/2014-06-30/service-2.json
-botocore/data/comprehend/2017-11-27/paginators-1.json
-botocore/data/comprehend/2017-11-27/service-2.json
-botocore/data/config/2014-11-12/examples-1.json
-botocore/data/config/2014-11-12/paginators-1.json
-botocore/data/config/2014-11-12/service-2.json
-botocore/data/connect/2017-08-08/paginators-1.json
-botocore/data/connect/2017-08-08/service-2.json
-botocore/data/cur/2017-01-06/examples-1.json
-botocore/data/cur/2017-01-06/paginators-1.json
-botocore/data/cur/2017-01-06/service-2.json
-botocore/data/datapipeline/2012-10-29/paginators-1.json
-botocore/data/datapipeline/2012-10-29/service-2.json
-botocore/data/dax/2017-04-19/paginators-1.json
-botocore/data/dax/2017-04-19/service-2.json
-botocore/data/devicefarm/2015-06-23/examples-1.json
-botocore/data/devicefarm/2015-06-23/paginators-1.json
-botocore/data/devicefarm/2015-06-23/service-2.json
-botocore/data/directconnect/2012-10-25/examples-1.json
-botocore/data/directconnect/2012-10-25/paginators-1.json
-botocore/data/directconnect/2012-10-25/service-2.json
-botocore/data/discovery/2015-11-01/examples-1.json
-botocore/data/discovery/2015-11-01/paginators-1.json
-botocore/data/discovery/2015-11-01/service-2.json
-botocore/data/dlm/2018-01-12/paginators-1.json
-botocore/data/dlm/2018-01-12/service-2.json
-botocore/data/dms/2016-01-01/examples-1.json
-botocore/data/dms/2016-01-01/paginators-1.json
-botocore/data/dms/2016-01-01/service-2.json
-botocore/data/ds/2015-04-16/examples-1.json
-botocore/data/ds/2015-04-16/paginators-1.json
-botocore/data/ds/2015-04-16/service-2.json
-botocore/data/dynamodb/2012-08-10/examples-1.json
-botocore/data/dynamodb/2012-08-10/paginators-1.json
-botocore/data/dynamodb/2012-08-10/service-2.json
-botocore/data/dynamodb/2012-08-10/waiters-2.json
-botocore/data/dynamodbstreams/2012-08-10/examples-1.json
-botocore/data/dynamodbstreams/2012-08-10/paginators-1.json
-botocore/data/dynamodbstreams/2012-08-10/service-2.json
-botocore/data/ec2/2014-09-01/paginators-1.json
-botocore/data/ec2/2014-09-01/service-2.json
-botocore/data/ec2/2014-09-01/waiters-2.json
-botocore/data/ec2/2014-10-01/paginators-1.json
-botocore/data/ec2/2014-10-01/service-2.json
-botocore/data/ec2/2014-10-01/waiters-2.json
-botocore/data/ec2/2015-03-01/paginators-1.json
-botocore/data/ec2/2015-03-01/service-2.json
-botocore/data/ec2/2015-03-01/waiters-2.json
-botocore/data/ec2/2015-04-15/paginators-1.json
-botocore/data/ec2/2015-04-15/service-2.json
-botocore/data/ec2/2015-04-15/waiters-2.json
-botocore/data/ec2/2015-10-01/paginators-1.json
-botocore/data/ec2/2015-10-01/service-2.json
-botocore/data/ec2/2015-10-01/waiters-2.json
-botocore/data/ec2/2016-04-01/paginators-1.json
-botocore/data/ec2/2016-04-01/service-2.json
-botocore/data/ec2/2016-04-01/waiters-2.json
-botocore/data/ec2/2016-09-15/examples-1.json
-botocore/data/ec2/2016-09-15/paginators-1.json
-botocore/data/ec2/2016-09-15/service-2.json
-botocore/data/ec2/2016-09-15/waiters-2.json
-botocore/data/ec2/2016-11-15/examples-1.json
-botocore/data/ec2/2016-11-15/paginators-1.json
-botocore/data/ec2/2016-11-15/service-2.json
-botocore/data/ec2/2016-11-15/waiters-2.json
-botocore/data/ecr/2015-09-21/examples-1.json
-botocore/data/ecr/2015-09-21/paginators-1.json
-botocore/data/ecr/2015-09-21/service-2.json
-botocore/data/ecs/2014-11-13/examples-1.json
-botocore/data/ecs/2014-11-13/paginators-1.json
-botocore/data/ecs/2014-11-13/service-2.json
-botocore/data/ecs/2014-11-13/waiters-2.json
-botocore/data/efs/2015-02-01/examples-1.json
-botocore/data/efs/2015-02-01/paginators-1.json
-botocore/data/efs/2015-02-01/service-2.json
-botocore/data/eks/2017-11-01/paginators-1.json
-botocore/data/eks/2017-11-01/service-2.json
-botocore/data/elasticache/2014-09-30/paginators-1.json
-botocore/data/elasticache/2014-09-30/service-2.json
-botocore/data/elasticache/2014-09-30/waiters-2.json
-botocore/data/elasticache/2015-02-02/paginators-1.json
-botocore/data/elasticache/2015-02-02/service-2.json
-botocore/data/elasticache/2015-02-02/waiters-2.json
-botocore/data/elasticbeanstalk/2010-12-01/examples-1.json
-botocore/data/elasticbeanstalk/2010-12-01/paginators-1.json
-botocore/data/elasticbeanstalk/2010-12-01/service-2.json
-botocore/data/elastictranscoder/2012-09-25/examples-1.json
-botocore/data/elastictranscoder/2012-09-25/paginators-1.json
-botocore/data/elastictranscoder/2012-09-25/service-2.json
-botocore/data/elastictranscoder/2012-09-25/waiters-2.json
-botocore/data/elb/2012-06-01/examples-1.json
-botocore/data/elb/2012-06-01/paginators-1.json
-botocore/data/elb/2012-06-01/service-2.json
-botocore/data/elb/2012-06-01/waiters-2.json
-botocore/data/elbv2/2015-12-01/examples-1.json
-botocore/data/elbv2/2015-12-01/paginators-1.json
-botocore/data/elbv2/2015-12-01/service-2.json
-botocore/data/elbv2/2015-12-01/waiters-2.json
-botocore/data/emr/2009-03-31/examples-1.json
-botocore/data/emr/2009-03-31/paginators-1.json
-botocore/data/emr/2009-03-31/service-2.json
-botocore/data/emr/2009-03-31/waiters-2.json
-botocore/data/es/2015-01-01/paginators-1.json
-botocore/data/es/2015-01-01/service-2.json
-botocore/data/events/2014-02-03/service-2.json
-botocore/data/events/2015-10-07/examples-1.json
-botocore/data/events/2015-10-07/paginators-1.json
-botocore/data/events/2015-10-07/service-2.json
-botocore/data/firehose/2015-08-04/examples-1.json
-botocore/data/firehose/2015-08-04/paginators-1.json
-botocore/data/firehose/2015-08-04/service-2.json
-botocore/data/fms/2018-01-01/paginators-1.json
-botocore/data/fms/2018-01-01/service-2.json
-botocore/data/gamelift/2015-10-01/examples-1.json
-botocore/data/gamelift/2015-10-01/paginators-1.json
-botocore/data/gamelift/2015-10-01/service-2.json
-botocore/data/glacier/2012-06-01/examples-1.json
-botocore/data/glacier/2012-06-01/paginators-1.json
-botocore/data/glacier/2012-06-01/service-2.json
-botocore/data/glacier/2012-06-01/waiters-2.json
-botocore/data/glue/2017-03-31/paginators-1.json
-botocore/data/glue/2017-03-31/service-2.json
-botocore/data/greengrass/2017-06-07/service-2.json
-botocore/data/guardduty/2017-11-28/paginators-1.json
-botocore/data/guardduty/2017-11-28/service-2.json
-botocore/data/health/2016-08-04/examples-1.json
-botocore/data/health/2016-08-04/paginators-1.json
-botocore/data/health/2016-08-04/service-2.json
-botocore/data/iam/2010-05-08/examples-1.json
-botocore/data/iam/2010-05-08/paginators-1.json
-botocore/data/iam/2010-05-08/service-2.json
-botocore/data/iam/2010-05-08/waiters-2.json
-botocore/data/importexport/2010-06-01/paginators-1.json
-botocore/data/importexport/2010-06-01/service-2.json
-botocore/data/inspector/2015-08-18/service-2.json
-botocore/data/inspector/2016-02-16/examples-1.json
-botocore/data/inspector/2016-02-16/paginators-1.json
-botocore/data/inspector/2016-02-16/service-2.json
-botocore/data/iot-data/2015-05-28/service-2.json
-botocore/data/iot-jobs-data/2017-09-29/paginators-1.json
-botocore/data/iot-jobs-data/2017-09-29/service-2.json
-botocore/data/iot/2015-05-28/examples-1.json
-botocore/data/iot/2015-05-28/paginators-1.json
-botocore/data/iot/2015-05-28/service-2.json
-botocore/data/iot1click-devices/2018-05-14/service-2.json
-botocore/data/iot1click-projects/2018-05-14/paginators-1.json
-botocore/data/iot1click-projects/2018-05-14/service-2.json
-botocore/data/iotanalytics/2017-11-27/paginators-1.json
-botocore/data/iotanalytics/2017-11-27/service-2.json
-botocore/data/kinesis-video-archived-media/2017-09-30/paginators-1.json
-botocore/data/kinesis-video-archived-media/2017-09-30/service-2.json
-botocore/data/kinesis-video-media/2017-09-30/paginators-1.json
-botocore/data/kinesis-video-media/2017-09-30/service-2.json
-botocore/data/kinesis/2013-12-02/examples-1.json
-botocore/data/kinesis/2013-12-02/paginators-1.json
-botocore/data/kinesis/2013-12-02/service-2.json
-botocore/data/kinesis/2013-12-02/waiters-2.json
-botocore/data/kinesisanalytics/2015-08-14/examples-1.json
-botocore/data/kinesisanalytics/2015-08-14/paginators-1.json
-botocore/data/kinesisanalytics/2015-08-14/service-2.json
-botocore/data/kinesisvideo/2017-09-30/paginators-1.json
-botocore/data/kinesisvideo/2017-09-30/service-2.json
-botocore/data/kms/2014-11-01/examples-1.json
-botocore/data/kms/2014-11-01/paginators-1.json
-botocore/data/kms/2014-11-01/service-2.json
-botocore/data/lambda/2014-11-11/service-2.json
-botocore/data/lambda/2015-03-31/examples-1.json
-botocore/data/lambda/2015-03-31/paginators-1.json
-botocore/data/lambda/2015-03-31/service-2.json
-botocore/data/lex-models/2017-04-19/paginators-1.json
-botocore/data/lex-models/2017-04-19/service-2.json
-botocore/data/lex-runtime/2016-11-28/paginators-1.json
-botocore/data/lex-runtime/2016-11-28/service-2.json
-botocore/data/lightsail/2016-11-28/examples-1.json
-botocore/data/lightsail/2016-11-28/paginators-1.json
-botocore/data/lightsail/2016-11-28/service-2.json
-botocore/data/logs/2014-03-28/examples-1.json
-botocore/data/logs/2014-03-28/paginators-1.json
-botocore/data/logs/2014-03-28/service-2.json
-botocore/data/machinelearning/2014-12-12/examples-1.json
-botocore/data/machinelearning/2014-12-12/paginators-1.json
-botocore/data/machinelearning/2014-12-12/service-2.json
-botocore/data/machinelearning/2014-12-12/waiters-2.json
-botocore/data/macie/2017-12-19/paginators-1.json
-botocore/data/macie/2017-12-19/service-2.json
-botocore/data/marketplace-entitlement/2017-01-11/paginators-1.json
-botocore/data/marketplace-entitlement/2017-01-11/service-2.json
-botocore/data/marketplacecommerceanalytics/2015-07-01/examples-1.json
-botocore/data/marketplacecommerceanalytics/2015-07-01/paginators-1.json
-botocore/data/marketplacecommerceanalytics/2015-07-01/service-2.json
-botocore/data/mediaconvert/2017-08-29/service-2.json
-botocore/data/medialive/2017-10-14/paginators-1.json
-botocore/data/medialive/2017-10-14/service-2.json
-botocore/data/mediapackage/2017-10-12/paginators-1.json
-botocore/data/mediapackage/2017-10-12/service-2.json
-botocore/data/mediastore-data/2017-09-01/paginators-1.json
-botocore/data/mediastore-data/2017-09-01/service-2.json
-botocore/data/mediastore/2017-09-01/paginators-1.json
-botocore/data/mediastore/2017-09-01/service-2.json
-botocore/data/mediatailor/2018-04-23/paginators-1.json
-botocore/data/mediatailor/2018-04-23/service-2.json
-botocore/data/meteringmarketplace/2016-01-14/examples-1.json
-botocore/data/meteringmarketplace/2016-01-14/service-2.json
-botocore/data/mgh/2017-05-31/paginators-1.json
-botocore/data/mgh/2017-05-31/service-2.json
-botocore/data/mobile/2017-07-01/paginators-1.json
-botocore/data/mobile/2017-07-01/service-2.json
-botocore/data/mq/2017-11-27/paginators-1.json
-botocore/data/mq/2017-11-27/service-2.json
-botocore/data/mturk/2017-01-17/paginators-1.json
-botocore/data/mturk/2017-01-17/service-2.json
-botocore/data/neptune/2014-10-31/paginators-1.json
-botocore/data/neptune/2014-10-31/service-2.json
-botocore/data/neptune/2014-10-31/waiters-2.json
-botocore/data/opsworks/2013-02-18/examples-1.json
-botocore/data/opsworks/2013-02-18/paginators-1.json
-botocore/data/opsworks/2013-02-18/service-2.json
-botocore/data/opsworks/2013-02-18/waiters-2.json
-botocore/data/opsworkscm/2016-11-01/examples-1.json
-botocore/data/opsworkscm/2016-11-01/paginators-1.json
-botocore/data/opsworkscm/2016-11-01/service-2.json
-botocore/data/opsworkscm/2016-11-01/waiters-2.json
-botocore/data/organizations/2016-11-28/paginators-1.json
-botocore/data/organizations/2016-11-28/service-2.json
-botocore/data/pi/2018-02-27/paginators-1.json
-botocore/data/pi/2018-02-27/service-2.json
-botocore/data/pinpoint/2016-12-01/examples-1.json
-botocore/data/pinpoint/2016-12-01/service-2.json
-botocore/data/polly/2016-06-10/examples-1.json
-botocore/data/polly/2016-06-10/paginators-1.json
-botocore/data/polly/2016-06-10/service-2.json
-botocore/data/pricing/2017-10-15/paginators-1.json
-botocore/data/pricing/2017-10-15/service-2.json
-botocore/data/rds/2014-09-01/paginators-1.json
-botocore/data/rds/2014-09-01/service-2.json
-botocore/data/rds/2014-09-01/waiters-2.json
-botocore/data/rds/2014-10-31/examples-1.json
-botocore/data/rds/2014-10-31/paginators-1.json
-botocore/data/rds/2014-10-31/service-2.json
-botocore/data/rds/2014-10-31/service-2.sdk-extras.json
-botocore/data/rds/2014-10-31/waiters-2.json
-botocore/data/redshift/2012-12-01/examples-1.json
-botocore/data/redshift/2012-12-01/paginators-1.json
-botocore/data/redshift/2012-12-01/service-2.json
-botocore/data/redshift/2012-12-01/waiters-2.json
-botocore/data/rekognition/2016-06-27/examples-1.json
-botocore/data/rekognition/2016-06-27/paginators-1.json
-botocore/data/rekognition/2016-06-27/service-2.json
-botocore/data/resource-groups/2017-11-27/paginators-1.json
-botocore/data/resource-groups/2017-11-27/service-2.json
-botocore/data/resourcegroupstaggingapi/2017-01-26/paginators-1.json
-botocore/data/resourcegroupstaggingapi/2017-01-26/service-2.json
-botocore/data/route53/2013-04-01/examples-1.json
-botocore/data/route53/2013-04-01/paginators-1.json
-botocore/data/route53/2013-04-01/service-2.json
-botocore/data/route53/2013-04-01/waiters-2.json
-botocore/data/route53domains/2014-05-15/paginators-1.json
-botocore/data/route53domains/2014-05-15/service-2.json
-botocore/data/s3/2006-03-01/examples-1.json
-botocore/data/s3/2006-03-01/paginators-1.json
-botocore/data/s3/2006-03-01/service-2.json
-botocore/data/s3/2006-03-01/waiters-2.json
-botocore/data/sagemaker-runtime/2017-05-13/paginators-1.json
-botocore/data/sagemaker-runtime/2017-05-13/service-2.json
-botocore/data/sagemaker/2017-07-24/paginators-1.json
-botocore/data/sagemaker/2017-07-24/service-2.json
-botocore/data/sagemaker/2017-07-24/waiters-2.json
-botocore/data/sdb/2009-04-15/paginators-1.json
-botocore/data/sdb/2009-04-15/service-2.json
-botocore/data/secretsmanager/2017-10-17/paginators-1.json
-botocore/data/secretsmanager/2017-10-17/service-2.json
-botocore/data/serverlessrepo/2017-09-08/paginators-1.json
-botocore/data/serverlessrepo/2017-09-08/service-2.json
-botocore/data/servicecatalog/2015-12-10/examples-1.json
-botocore/data/servicecatalog/2015-12-10/paginators-1.json
-botocore/data/servicecatalog/2015-12-10/service-2.json
-botocore/data/servicediscovery/2017-03-14/paginators-1.json
-botocore/data/servicediscovery/2017-03-14/service-2.json
-botocore/data/ses/2010-12-01/examples-1.json
-botocore/data/ses/2010-12-01/paginators-1.json
-botocore/data/ses/2010-12-01/service-2.json
-botocore/data/ses/2010-12-01/waiters-2.json
-botocore/data/shield/2016-06-02/examples-1.json
-botocore/data/shield/2016-06-02/paginators-1.json
-botocore/data/shield/2016-06-02/service-2.json
-botocore/data/sms/2016-10-24/examples-1.json
-botocore/data/sms/2016-10-24/paginators-1.json
-botocore/data/sms/2016-10-24/service-2.json
-botocore/data/snowball/2016-06-30/examples-1.json
-botocore/data/snowball/2016-06-30/paginators-1.json
-botocore/data/snowball/2016-06-30/service-2.json
-botocore/data/sns/2010-03-31/examples-1.json
-botocore/data/sns/2010-03-31/paginators-1.json
-botocore/data/sns/2010-03-31/service-2.json
-botocore/data/sqs/2012-11-05/examples-1.json
-botocore/data/sqs/2012-11-05/paginators-1.json
-botocore/data/sqs/2012-11-05/service-2.json
-botocore/data/ssm/2014-11-06/examples-1.json
-botocore/data/ssm/2014-11-06/paginators-1.json
-botocore/data/ssm/2014-11-06/service-2.json
-botocore/data/stepfunctions/2016-11-23/examples-1.json
-botocore/data/stepfunctions/2016-11-23/paginators-1.json
-botocore/data/stepfunctions/2016-11-23/service-2.json
-botocore/data/storagegateway/2013-06-30/examples-1.json
-botocore/data/storagegateway/2013-06-30/paginators-1.json
-botocore/data/storagegateway/2013-06-30/service-2.json
-botocore/data/sts/2011-06-15/examples-1.json
-botocore/data/sts/2011-06-15/paginators-1.json
-botocore/data/sts/2011-06-15/service-2.json
-botocore/data/support/2013-04-15/examples-1.json
-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
-botocore/data/waf-regional/2016-11-28/paginators-1.json
-botocore/data/waf-regional/2016-11-28/service-2.json
-botocore/data/waf/2015-08-24/examples-1.json
-botocore/data/waf/2015-08-24/paginators-1.json
-botocore/data/waf/2015-08-24/service-2.json
-botocore/data/workdocs/2016-05-01/paginators-1.json
-botocore/data/workdocs/2016-05-01/service-2.json
-botocore/data/workmail/2017-10-01/paginators-1.json
-botocore/data/workmail/2017-10-01/service-2.json
-botocore/data/workspaces/2015-04-08/examples-1.json
-botocore/data/workspaces/2015-04-08/paginators-1.json
-botocore/data/workspaces/2015-04-08/service-2.json
-botocore/data/xray/2016-04-12/examples-1.json
-botocore/data/xray/2016-04-12/paginators-1.json
-botocore/data/xray/2016-04-12/service-2.json
-botocore/docs/__init__.py
-botocore/docs/client.py
-botocore/docs/docstring.py
-botocore/docs/example.py
-botocore/docs/method.py
-botocore/docs/paginator.py
-botocore/docs/params.py
-botocore/docs/service.py
-botocore/docs/shape.py
-botocore/docs/sharedexample.py
-botocore/docs/utils.py
-botocore/docs/waiter.py
-botocore/docs/bcdoc/__init__.py
-botocore/docs/bcdoc/docevents.py
-botocore/docs/bcdoc/docstringparser.py
-botocore/docs/bcdoc/restdoc.py
-botocore/docs/bcdoc/style.py
-botocore/docs/bcdoc/textwriter.py
-botocore/vendored/__init__.py
-botocore/vendored/six.py
-botocore/vendored/requests/__init__.py
-botocore/vendored/requests/adapters.py
-botocore/vendored/requests/api.py
-botocore/vendored/requests/auth.py
-botocore/vendored/requests/cacert.pem
-botocore/vendored/requests/certs.py
-botocore/vendored/requests/compat.py
-botocore/vendored/requests/cookies.py
-botocore/vendored/requests/exceptions.py
-botocore/vendored/requests/hooks.py
-botocore/vendored/requests/models.py
-botocore/vendored/requests/sessions.py
-botocore/vendored/requests/status_codes.py
-botocore/vendored/requests/structures.py
-botocore/vendored/requests/utils.py
-botocore/vendored/requests/packages/__init__.py
-botocore/vendored/requests/packages/chardet/__init__.py
-botocore/vendored/requests/packages/chardet/big5freq.py
-botocore/vendored/requests/packages/chardet/big5prober.py
-botocore/vendored/requests/packages/chardet/chardetect.py
-botocore/vendored/requests/packages/chardet/chardistribution.py
-botocore/vendored/requests/packages/chardet/charsetgroupprober.py
-botocore/vendored/requests/packages/chardet/charsetprober.py
-botocore/vendored/requests/packages/chardet/codingstatemachine.py
-botocore/vendored/requests/packages/chardet/compat.py
-botocore/vendored/requests/packages/chardet/constants.py
-botocore/vendored/requests/packages/chardet/cp949prober.py
-botocore/vendored/requests/packages/chardet/escprober.py
-botocore/vendored/requests/packages/chardet/escsm.py
-botocore/vendored/requests/packages/chardet/eucjpprober.py
-botocore/vendored/requests/packages/chardet/euckrfreq.py
-botocore/vendored/requests/packages/chardet/euckrprober.py
-botocore/vendored/requests/packages/chardet/euctwfreq.py
-botocore/vendored/requests/packages/chardet/euctwprober.py
-botocore/vendored/requests/packages/chardet/gb2312freq.py
-botocore/vendored/requests/packages/chardet/gb2312prober.py
-botocore/vendored/requests/packages/chardet/hebrewprober.py
-botocore/vendored/requests/packages/chardet/jisfreq.py
-botocore/vendored/requests/packages/chardet/jpcntx.py
-botocore/vendored/requests/packages/chardet/langbulgarianmodel.py
-botocore/vendored/requests/packages/chardet/langcyrillicmodel.py
-botocore/vendored/requests/packages/chardet/langgreekmodel.py
-botocore/vendored/requests/packages/chardet/langhebrewmodel.py
-botocore/vendored/requests/packages/chardet/langhungarianmodel.py
-botocore/vendored/requests/packages/chardet/langthaimodel.py
-botocore/vendored/requests/packages/chardet/latin1prober.py
-botocore/vendored/requests/packages/chardet/mbcharsetprober.py
-botocore/vendored/requests/packages/chardet/mbcsgroupprober.py
-botocore/vendored/requests/packages/chardet/mbcssm.py
-botocore/vendored/requests/packages/chardet/sbcharsetprober.py
-botocore/vendored/requests/packages/chardet/sbcsgroupprober.py
-botocore/vendored/requests/packages/chardet/sjisprober.py
-botocore/vendored/requests/packages/chardet/universaldetector.py
-botocore/vendored/requests/packages/chardet/utf8prober.py
-botocore/vendored/requests/packages/urllib3/__init__.py
-botocore/vendored/requests/packages/urllib3/_collections.py
-botocore/vendored/requests/packages/urllib3/connection.py
-botocore/vendored/requests/packages/urllib3/connectionpool.py
-botocore/vendored/requests/packages/urllib3/exceptions.py
-botocore/vendored/requests/packages/urllib3/fields.py
-botocore/vendored/requests/packages/urllib3/filepost.py
-botocore/vendored/requests/packages/urllib3/poolmanager.py
-botocore/vendored/requests/packages/urllib3/request.py
-botocore/vendored/requests/packages/urllib3/response.py
-botocore/vendored/requests/packages/urllib3/contrib/__init__.py
-botocore/vendored/requests/packages/urllib3/contrib/ntlmpool.py
-botocore/vendored/requests/packages/urllib3/contrib/pyopenssl.py
-botocore/vendored/requests/packages/urllib3/packages/__init__.py
-botocore/vendored/requests/packages/urllib3/packages/ordered_dict.py
-botocore/vendored/requests/packages/urllib3/packages/six.py
-botocore/vendored/requests/packages/urllib3/packages/ssl_match_hostname/__init__.py
-botocore/vendored/requests/packages/urllib3/packages/ssl_match_hostname/_implementation.py
-botocore/vendored/requests/packages/urllib3/util/__init__.py
-botocore/vendored/requests/packages/urllib3/util/connection.py
-botocore/vendored/requests/packages/urllib3/util/request.py
-botocore/vendored/requests/packages/urllib3/util/response.py
-botocore/vendored/requests/packages/urllib3/util/retry.py
-botocore/vendored/requests/packages/urllib3/util/ssl_.py
-botocore/vendored/requests/packages/urllib3/util/timeout.py
-botocore/vendored/requests/packages/urllib3/util/url.py
-docs/Makefile
-docs/make.bat
-docs/source/client_upgrades.rst
-docs/source/conf.py
-docs/source/index.rst
-docs/source/development/changesfor10.rst
-docs/source/development/designnotes.rst
-docs/source/development/index.rst
-docs/source/reference/config.rst
-docs/source/reference/eventstream.rst
-docs/source/reference/index.rst
-docs/source/reference/loaders.rst
-docs/source/reference/response.rst
-docs/source/reference/stubber.rst
-docs/source/topics/events.rst
-docs/source/topics/index.rst
-docs/source/topics/paginators.rst
-docs/source/tutorial/index.rst
-tests/__init__.py
-tests/cmd-runner
-tests/acceptance/features/environment.py
-tests/acceptance/features/smoke/acm/acm.feature
-tests/acceptance/features/smoke/autoscaling/autoscaling.feature
-tests/acceptance/features/smoke/cloudformation/cloudformation.feature
-tests/acceptance/features/smoke/cloudfront/cloudfront.feature
-tests/acceptance/features/smoke/cloudhsm/cloudhsm.feature
-tests/acceptance/features/smoke/cloudsearch/cloudsearch.feature
-tests/acceptance/features/smoke/cloudtrail/cloudtrail.feature
-tests/acceptance/features/smoke/cloudwatch/cloudwatch.feature
-tests/acceptance/features/smoke/cloudwatchlogs/cloudwatchlogs.feature
-tests/acceptance/features/smoke/codecommit/codecommit.feature
-tests/acceptance/features/smoke/codedeploy/codedeploy.feature
-tests/acceptance/features/smoke/codepipeline/codepipeline.feature
-tests/acceptance/features/smoke/cognitoidentity/cognitoidentity.feature
-tests/acceptance/features/smoke/cognitosync/cognitosync.feature
-tests/acceptance/features/smoke/configservice/configservice.feature
-tests/acceptance/features/smoke/datapipeline/datapipeline.feature
-tests/acceptance/features/smoke/devicefarm/devicefarm.feature
-tests/acceptance/features/smoke/directconnect/directconnect.feature
-tests/acceptance/features/smoke/directoryservice/directoryservice.feature
-tests/acceptance/features/smoke/dynamodb/dynamodb.feature
-tests/acceptance/features/smoke/dynamodbstreams/dynamodbstreams.feature
-tests/acceptance/features/smoke/ec2/ec2.feature
-tests/acceptance/features/smoke/ecs/ecs.feature
-tests/acceptance/features/smoke/efs/efs.feature
-tests/acceptance/features/smoke/elasticache/elasticache.feature
-tests/acceptance/features/smoke/elasticbeanstalk/elasticbeanstalk.feature
-tests/acceptance/features/smoke/elasticloadbalancing/elasticloadbalancing.feature
-tests/acceptance/features/smoke/elastictranscoder/elastictranscoder.feature
-tests/acceptance/features/smoke/emr/emr.feature
-tests/acceptance/features/smoke/es/es.feature
-tests/acceptance/features/smoke/glacier/glacier.feature
-tests/acceptance/features/smoke/iam/iam.feature
-tests/acceptance/features/smoke/importexport/importexport.feature
-tests/acceptance/features/smoke/kinesis/kinesis.feature
-tests/acceptance/features/smoke/kms/kms.feature
-tests/acceptance/features/smoke/lambda/lambda.feature
-tests/acceptance/features/smoke/machinelearning/machinelearning.feature
-tests/acceptance/features/smoke/opsworks/opsworks.feature
-tests/acceptance/features/smoke/rds/rds.feature
-tests/acceptance/features/smoke/redshift/redshift.feature
-tests/acceptance/features/smoke/route53/route53.feature
-tests/acceptance/features/smoke/route53domains/route53domains.feature
-tests/acceptance/features/smoke/ses/ses.feature
-tests/acceptance/features/smoke/sns/sns.feature
-tests/acceptance/features/smoke/sqs/sqs.feature
-tests/acceptance/features/smoke/ssm/ssm.feature
-tests/acceptance/features/smoke/storagegateway/storagegateway.feature
-tests/acceptance/features/smoke/sts/sts.feature
-tests/acceptance/features/smoke/support/support.feature
-tests/acceptance/features/smoke/swf/swf.feature
-tests/acceptance/features/smoke/waf/waf.feature
-tests/acceptance/features/smoke/workspaces/workspaces.feature
-tests/acceptance/features/steps/base.py
-tests/functional/__init__.py
-tests/functional/test_alias.py
-tests/functional/test_apigateway.py
-tests/functional/test_client_class_names.py
-tests/functional/test_client_metadata.py
-tests/functional/test_cloudformation.py
-tests/functional/test_cloudsearchdomain.py
-tests/functional/test_cognito_idp.py
-tests/functional/test_credentials.py
-tests/functional/test_ec2.py
-tests/functional/test_endpoints.py
-tests/functional/test_h2_required.py
-tests/functional/test_history.py
-tests/functional/test_iot_data.py
-tests/functional/test_kinesis.py
-tests/functional/test_lex.py
-tests/functional/test_loaders.py
-tests/functional/test_machinelearning.py
-tests/functional/test_model_completeness.py
-tests/functional/test_mturk.py
-tests/functional/test_paginate.py
-tests/functional/test_paginator_config.py
-tests/functional/test_public_apis.py
-tests/functional/test_rds.py
-tests/functional/test_regions.py
-tests/functional/test_retry.py
-tests/functional/test_route53.py
-tests/functional/test_s3.py
-tests/functional/test_service_alias.py
-tests/functional/test_service_names.py
-tests/functional/test_session.py
-tests/functional/test_six_imports.py
-tests/functional/test_six_threading.py
-tests/functional/test_sts.py
-tests/functional/test_stub.py
-tests/functional/test_waiter_config.py
-tests/functional/docs/__init__.py
-tests/functional/docs/test_alias.py
-tests/functional/docs/test_autoscaling.py
-tests/functional/docs/test_ec2.py
-tests/functional/docs/test_glacier.py
-tests/functional/docs/test_lex.py
-tests/functional/docs/test_s3.py
-tests/functional/docs/test_shared_example_config.py
-tests/functional/docs/test_streaming_body.py
-tests/functional/leak/__init__.py
-tests/functional/leak/test_resource_leaks.py
-tests/functional/utils/__init__.py
-tests/functional/utils/credentialprocess.py
-tests/integration/__init__.py
-tests/integration/test-credentials
-tests/integration/test_apigateway.py
-tests/integration/test_client.py
-tests/integration/test_cloudformation.py
-tests/integration/test_cognito_identity.py
-tests/integration/test_credentials.py
-tests/integration/test_ec2.py
-tests/integration/test_elastictranscoder.py
-tests/integration/test_emr.py
-tests/integration/test_glacier.py
-tests/integration/test_kinesis.py
-tests/integration/test_loaders.py
-tests/integration/test_rds.py
-tests/integration/test_route53.py
-tests/integration/test_s3.py
-tests/integration/test_session.py
-tests/integration/test_smoke.py
-tests/integration/test_sts.py
-tests/integration/test_utils.py
-tests/integration/test_waiters.py
-tests/unit/__init__.py
-tests/unit/put_object_data
-tests/unit/test_args.py
-tests/unit/test_awsrequest.py
-tests/unit/test_client.py
-tests/unit/test_compat.py
-tests/unit/test_configloader.py
-tests/unit/test_credentials.py
-tests/unit/test_endpoint.py
-tests/unit/test_errorfactory.py
-tests/unit/test_eventstream.py
-tests/unit/test_exceptions.py
-tests/unit/test_handlers.py
-tests/unit/test_history.py
-tests/unit/test_hooks.py
-tests/unit/test_idempotency.py
-tests/unit/test_loaders.py
-tests/unit/test_model.py
-tests/unit/test_paginate.py
-tests/unit/test_parsers.py
-tests/unit/test_protocols.py
-tests/unit/test_regions.py
-tests/unit/test_response.py
-tests/unit/test_retryhandler.py
-tests/unit/test_s3_addressing.py
-tests/unit/test_serialize.py
-tests/unit/test_session.py
-tests/unit/test_signers.py
-tests/unit/test_stub.py
-tests/unit/test_translate.py
-tests/unit/test_utils.py
-tests/unit/test_validate.py
-tests/unit/test_waiters.py
-tests/unit/auth/__init__.py
-tests/unit/auth/test_signers.py
-tests/unit/auth/test_sigv4.py
-tests/unit/auth/aws4_testsuite/get-header-key-duplicate.authz
-tests/unit/auth/aws4_testsuite/get-header-key-duplicate.creq
-tests/unit/auth/aws4_testsuite/get-header-key-duplicate.req
-tests/unit/auth/aws4_testsuite/get-header-key-duplicate.sreq
-tests/unit/auth/aws4_testsuite/get-header-key-duplicate.sts
-tests/unit/auth/aws4_testsuite/get-header-value-order.authz
-tests/unit/auth/aws4_testsuite/get-header-value-order.creq
-tests/unit/auth/aws4_testsuite/get-header-value-order.req
-tests/unit/auth/aws4_testsuite/get-header-value-order.sreq
-tests/unit/auth/aws4_testsuite/get-header-value-order.sts
-tests/unit/auth/aws4_testsuite/get-header-value-trim.authz
-tests/unit/auth/aws4_testsuite/get-header-value-trim.creq
-tests/unit/auth/aws4_testsuite/get-header-value-trim.req
-tests/unit/auth/aws4_testsuite/get-header-value-trim.sreq
-tests/unit/auth/aws4_testsuite/get-header-value-trim.sts
-tests/unit/auth/aws4_testsuite/get-relative-relative.authz
-tests/unit/auth/aws4_testsuite/get-relative-relative.creq
-tests/unit/auth/aws4_testsuite/get-relative-relative.req
-tests/unit/auth/aws4_testsuite/get-relative-relative.sreq
-tests/unit/auth/aws4_testsuite/get-relative-relative.sts
-tests/unit/auth/aws4_testsuite/get-relative.authz
-tests/unit/auth/aws4_testsuite/get-relative.creq
-tests/unit/auth/aws4_testsuite/get-relative.req
-tests/unit/auth/aws4_testsuite/get-relative.sreq
-tests/unit/auth/aws4_testsuite/get-relative.sts
-tests/unit/auth/aws4_testsuite/get-slash-dot-slash.authz
-tests/unit/auth/aws4_testsuite/get-slash-dot-slash.creq
-tests/unit/auth/aws4_testsuite/get-slash-dot-slash.req
-tests/unit/auth/aws4_testsuite/get-slash-dot-slash.sreq
-tests/unit/auth/aws4_testsuite/get-slash-dot-slash.sts
-tests/unit/auth/aws4_testsuite/get-slash-pointless-dot.authz
-tests/unit/auth/aws4_testsuite/get-slash-pointless-dot.creq
-tests/unit/auth/aws4_testsuite/get-slash-pointless-dot.req
-tests/unit/auth/aws4_testsuite/get-slash-pointless-dot.sreq
-tests/unit/auth/aws4_testsuite/get-slash-pointless-dot.sts
-tests/unit/auth/aws4_testsuite/get-slash.authz
-tests/unit/auth/aws4_testsuite/get-slash.creq
-tests/unit/auth/aws4_testsuite/get-slash.req
-tests/unit/auth/aws4_testsuite/get-slash.sreq
-tests/unit/auth/aws4_testsuite/get-slash.sts
-tests/unit/auth/aws4_testsuite/get-slashes.authz
-tests/unit/auth/aws4_testsuite/get-slashes.creq
-tests/unit/auth/aws4_testsuite/get-slashes.req
-tests/unit/auth/aws4_testsuite/get-slashes.sreq
-tests/unit/auth/aws4_testsuite/get-slashes.sts
-tests/unit/auth/aws4_testsuite/get-space.authz
-tests/unit/auth/aws4_testsuite/get-space.creq
-tests/unit/auth/aws4_testsuite/get-space.req
-tests/unit/auth/aws4_testsuite/get-space.sreq
-tests/unit/auth/aws4_testsuite/get-space.sts
-tests/unit/auth/aws4_testsuite/get-unreserved.authz
-tests/unit/auth/aws4_testsuite/get-unreserved.creq
-tests/unit/auth/aws4_testsuite/get-unreserved.req
-tests/unit/auth/aws4_testsuite/get-unreserved.sreq
-tests/unit/auth/aws4_testsuite/get-unreserved.sts
-tests/unit/auth/aws4_testsuite/get-utf8.authz
-tests/unit/auth/aws4_testsuite/get-utf8.creq
-tests/unit/auth/aws4_testsuite/get-utf8.req
-tests/unit/auth/aws4_testsuite/get-utf8.sreq
-tests/unit/auth/aws4_testsuite/get-utf8.sts
-tests/unit/auth/aws4_testsuite/get-vanilla-empty-query-key.authz
-tests/unit/auth/aws4_testsuite/get-vanilla-empty-query-key.creq
-tests/unit/auth/aws4_testsuite/get-vanilla-empty-query-key.req
-tests/unit/auth/aws4_testsuite/get-vanilla-empty-query-key.sreq
-tests/unit/auth/aws4_testsuite/get-vanilla-empty-query-key.sts
-tests/unit/auth/aws4_testsuite/get-vanilla-query-order-key-case.authz
-tests/unit/auth/aws4_testsuite/get-vanilla-query-order-key-case.creq
-tests/unit/auth/aws4_testsuite/get-vanilla-query-order-key-case.req
-tests/unit/auth/aws4_testsuite/get-vanilla-query-order-key-case.sreq
-tests/unit/auth/aws4_testsuite/get-vanilla-query-order-key-case.sts
-tests/unit/auth/aws4_testsuite/get-vanilla-query-order-key.authz
-tests/unit/auth/aws4_testsuite/get-vanilla-query-order-key.creq
-tests/unit/auth/aws4_testsuite/get-vanilla-query-order-key.req
-tests/unit/auth/aws4_testsuite/get-vanilla-query-order-key.sreq
-tests/unit/auth/aws4_testsuite/get-vanilla-query-order-key.sts
-tests/unit/auth/aws4_testsuite/get-vanilla-query-order-value.authz
-tests/unit/auth/aws4_testsuite/get-vanilla-query-order-value.creq
-tests/unit/auth/aws4_testsuite/get-vanilla-query-order-value.req
-tests/unit/auth/aws4_testsuite/get-vanilla-query-order-value.sreq
-tests/unit/auth/aws4_testsuite/get-vanilla-query-order-value.sts
-tests/unit/auth/aws4_testsuite/get-vanilla-query-unreserved.authz
-tests/unit/auth/aws4_testsuite/get-vanilla-query-unreserved.creq
-tests/unit/auth/aws4_testsuite/get-vanilla-query-unreserved.req
-tests/unit/auth/aws4_testsuite/get-vanilla-query-unreserved.sreq
-tests/unit/auth/aws4_testsuite/get-vanilla-query-unreserved.sts
-tests/unit/auth/aws4_testsuite/get-vanilla-query.authz
-tests/unit/auth/aws4_testsuite/get-vanilla-query.creq
-tests/unit/auth/aws4_testsuite/get-vanilla-query.req
-tests/unit/auth/aws4_testsuite/get-vanilla-query.sreq
-tests/unit/auth/aws4_testsuite/get-vanilla-query.sts
-tests/unit/auth/aws4_testsuite/get-vanilla-ut8-query.authz
-tests/unit/auth/aws4_testsuite/get-vanilla-ut8-query.creq
-tests/unit/auth/aws4_testsuite/get-vanilla-ut8-query.req
-tests/unit/auth/aws4_testsuite/get-vanilla-ut8-query.sreq
-tests/unit/auth/aws4_testsuite/get-vanilla-ut8-query.sts
-tests/unit/auth/aws4_testsuite/get-vanilla.authz
-tests/unit/auth/aws4_testsuite/get-vanilla.creq
-tests/unit/auth/aws4_testsuite/get-vanilla.req
-tests/unit/auth/aws4_testsuite/get-vanilla.sreq
-tests/unit/auth/aws4_testsuite/get-vanilla.sts
-tests/unit/auth/aws4_testsuite/post-header-key-case.authz
-tests/unit/auth/aws4_testsuite/post-header-key-case.creq
-tests/unit/auth/aws4_testsuite/post-header-key-case.req
-tests/unit/auth/aws4_testsuite/post-header-key-case.sreq
-tests/unit/auth/aws4_testsuite/post-header-key-case.sts
-tests/unit/auth/aws4_testsuite/post-header-key-sort.authz
-tests/unit/auth/aws4_testsuite/post-header-key-sort.creq
-tests/unit/auth/aws4_testsuite/post-header-key-sort.req
-tests/unit/auth/aws4_testsuite/post-header-key-sort.sreq
-tests/unit/auth/aws4_testsuite/post-header-key-sort.sts
-tests/unit/auth/aws4_testsuite/post-header-value-case.authz
-tests/unit/auth/aws4_testsuite/post-header-value-case.creq
-tests/unit/auth/aws4_testsuite/post-header-value-case.req
-tests/unit/auth/aws4_testsuite/post-header-value-case.sreq
-tests/unit/auth/aws4_testsuite/post-header-value-case.sts
-tests/unit/auth/aws4_testsuite/post-vanilla-empty-query-value.authz
-tests/unit/auth/aws4_testsuite/post-vanilla-empty-query-value.creq
-tests/unit/auth/aws4_testsuite/post-vanilla-empty-query-value.req
-tests/unit/auth/aws4_testsuite/post-vanilla-empty-query-value.sreq
-tests/unit/auth/aws4_testsuite/post-vanilla-empty-query-value.sts
-tests/unit/auth/aws4_testsuite/post-vanilla-query-nonunreserved.authz
-tests/unit/auth/aws4_testsuite/post-vanilla-query-nonunreserved.creq
-tests/unit/auth/aws4_testsuite/post-vanilla-query-nonunreserved.req
-tests/unit/auth/aws4_testsuite/post-vanilla-query-nonunreserved.sreq
-tests/unit/auth/aws4_testsuite/post-vanilla-query-nonunreserved.sts
-tests/unit/auth/aws4_testsuite/post-vanilla-query-space.authz
-tests/unit/auth/aws4_testsuite/post-vanilla-query-space.creq
-tests/unit/auth/aws4_testsuite/post-vanilla-query-space.req
-tests/unit/auth/aws4_testsuite/post-vanilla-query-space.sreq
-tests/unit/auth/aws4_testsuite/post-vanilla-query-space.sts
-tests/unit/auth/aws4_testsuite/post-vanilla-query.authz
-tests/unit/auth/aws4_testsuite/post-vanilla-query.creq
-tests/unit/auth/aws4_testsuite/post-vanilla-query.req
-tests/unit/auth/aws4_testsuite/post-vanilla-query.sreq
-tests/unit/auth/aws4_testsuite/post-vanilla-query.sts
-tests/unit/auth/aws4_testsuite/post-vanilla.authz
-tests/unit/auth/aws4_testsuite/post-vanilla.creq
-tests/unit/auth/aws4_testsuite/post-vanilla.req
-tests/unit/auth/aws4_testsuite/post-vanilla.sreq
-tests/unit/auth/aws4_testsuite/post-vanilla.sts
-tests/unit/auth/aws4_testsuite/post-x-www-form-urlencoded-parameters.authz
-tests/unit/auth/aws4_testsuite/post-x-www-form-urlencoded-parameters.creq
-tests/unit/auth/aws4_testsuite/post-x-www-form-urlencoded-parameters.req
-tests/unit/auth/aws4_testsuite/post-x-www-form-urlencoded-parameters.sreq
-tests/unit/auth/aws4_testsuite/post-x-www-form-urlencoded-parameters.sts
-tests/unit/auth/aws4_testsuite/post-x-www-form-urlencoded.authz
-tests/unit/auth/aws4_testsuite/post-x-www-form-urlencoded.creq
-tests/unit/auth/aws4_testsuite/post-x-www-form-urlencoded.req
-tests/unit/auth/aws4_testsuite/post-x-www-form-urlencoded.sreq
-tests/unit/auth/aws4_testsuite/post-x-www-form-urlencoded.sts
-tests/unit/cfg/aws_bad_profile
-tests/unit/cfg/aws_config
-tests/unit/cfg/aws_config_bad
-tests/unit/cfg/aws_config_nested
-tests/unit/cfg/aws_config_nested_bad
-tests/unit/cfg/aws_config_nocreds
-tests/unit/cfg/aws_config_other
-tests/unit/cfg/aws_credentials
-tests/unit/cfg/aws_third_config
-tests/unit/cfg/boto_config
-tests/unit/cfg/boto_config_empty
-tests/unit/cfg/foo_config
-tests/unit/data/baz.json
-tests/unit/data/foo.json
-tests/unit/data/non_ascii.json
-tests/unit/data/aws/s3/2006-03-01.normal.json
-tests/unit/data/someservice/2012-10-01.normal.json
-tests/unit/data/someservice/2013-08-21.normal.json
-tests/unit/data/sub/fie.normal.json
-tests/unit/data_overrides/someservice/2012-10-01.json
-tests/unit/docs/__init__.py
-tests/unit/docs/test_client.py
-tests/unit/docs/test_docs.py
-tests/unit/docs/test_docstring.py
-tests/unit/docs/test_example.py
-tests/unit/docs/test_method.py
-tests/unit/docs/test_paginator.py
-tests/unit/docs/test_params.py
-tests/unit/docs/test_service.py
-tests/unit/docs/test_sharedexample.py
-tests/unit/docs/test_utils.py
-tests/unit/docs/test_waiter.py
-tests/unit/docs/bcdoc/__init__.py
-tests/unit/docs/bcdoc/test_docstringparser.py
-tests/unit/docs/bcdoc/test_document.py
-tests/unit/docs/bcdoc/test_style.py
-tests/unit/protocols/input/ec2.json
-tests/unit/protocols/input/json.json
-tests/unit/protocols/input/query.json
-tests/unit/protocols/input/rest-json.json
-tests/unit/protocols/input/rest-xml.json
-tests/unit/protocols/output/ec2.json
-tests/unit/protocols/output/event-stream.json
-tests/unit/protocols/output/json.json
-tests/unit/protocols/output/query.json
-tests/unit/protocols/output/rest-json.json
-tests/unit/protocols/output/rest-xml.json
-tests/unit/response_parsing/README.rst
-tests/unit/response_parsing/__init__.py
-tests/unit/response_parsing/test_response_parsing.py
-tests/unit/response_parsing/json/errors/datapipeline-create-pipeline.json
-tests/unit/response_parsing/json/errors/directconnect-delete-connection.json
-tests/unit/response_parsing/json/errors/dynamodb-put-item.json
-tests/unit/response_parsing/json/errors/elastictranscoder-delete-pipeline.json
-tests/unit/response_parsing/json/errors/opsworks-delete-stack.json
-tests/unit/response_parsing/json/errors/storagegateway-delete-gateway.json
-tests/unit/response_parsing/json/errors/swf-deprecate-domain.json
-tests/unit/response_parsing/json/expected/datapipeline-create-pipeline.json
-tests/unit/response_parsing/json/expected/directconnect-delete-connection.json
-tests/unit/response_parsing/json/expected/dynamodb-put-item.json
-tests/unit/response_parsing/json/expected/elastictranscoder-delete-pipeline.json
-tests/unit/response_parsing/json/expected/elastictranscoder-list-pipelines.json
-tests/unit/response_parsing/json/expected/opsworks-delete-stack.json
-tests/unit/response_parsing/json/expected/storagegateway-delete-gateway.json
-tests/unit/response_parsing/json/expected/swf-deprecate-domain.json
-tests/unit/response_parsing/xml/errors/autoscaling-delete-policy.json
-tests/unit/response_parsing/xml/errors/autoscaling-delete-policy.xml
-tests/unit/response_parsing/xml/errors/cloudformation-cancel-update-stack.json
-tests/unit/response_parsing/xml/errors/cloudformation-cancel-update-stack.xml
-tests/unit/response_parsing/xml/errors/cloudwatch-describe-alarm-history.json
-tests/unit/response_parsing/xml/errors/cloudwatch-describe-alarm-history.xml
-tests/unit/response_parsing/xml/errors/ec2-describe-instances.json
-tests/unit/response_parsing/xml/errors/ec2-describe-instances.xml
-tests/unit/response_parsing/xml/errors/elb-describe-load-balancers.json
-tests/unit/response_parsing/xml/errors/elb-describe-load-balancers.xml
-tests/unit/response_parsing/xml/errors/iam-get-user.json
-tests/unit/response_parsing/xml/errors/iam-get-user.xml
-tests/unit/response_parsing/xml/errors/importexport-get-status.json
-tests/unit/response_parsing/xml/errors/importexport-get-status.xml
-tests/unit/response_parsing/xml/errors/rds-describe-db-instances.json
-tests/unit/response_parsing/xml/errors/rds-describe-db-instances.xml
-tests/unit/response_parsing/xml/errors/route53-get-hosted-zone.json
-tests/unit/response_parsing/xml/errors/route53-get-hosted-zone.xml
-tests/unit/response_parsing/xml/errors/s3-create-bucket.json
-tests/unit/response_parsing/xml/errors/s3-create-bucket.xml
-tests/unit/response_parsing/xml/errors/s3-list-objects.json
-tests/unit/response_parsing/xml/errors/s3-list-objects.xml
-tests/unit/response_parsing/xml/errors/ses-delete-identity.json
-tests/unit/response_parsing/xml/errors/ses-delete-identity.xml
-tests/unit/response_parsing/xml/errors/sns-delete-topic.json
-tests/unit/response_parsing/xml/errors/sns-delete-topic.xml
-tests/unit/response_parsing/xml/errors/sqs-delete-queue.json
-tests/unit/response_parsing/xml/errors/sqs-delete-queue.xml
-tests/unit/response_parsing/xml/errors/sts-get-session-token.json
-tests/unit/response_parsing/xml/errors/sts-get-session-token.xml
-tests/unit/response_parsing/xml/responses/autoscaling-describe-adjustment-types.json
-tests/unit/response_parsing/xml/responses/autoscaling-describe-adjustment-types.xml
-tests/unit/response_parsing/xml/responses/autoscaling-describe-auto-scaling-groups.json
-tests/unit/response_parsing/xml/responses/autoscaling-describe-auto-scaling-groups.xml
-tests/unit/response_parsing/xml/responses/autoscaling-describe-auto-scaling-instances.json
-tests/unit/response_parsing/xml/responses/autoscaling-describe-auto-scaling-instances.xml
-tests/unit/response_parsing/xml/responses/autoscaling-describe-auto-scaling-notification-types.json
-tests/unit/response_parsing/xml/responses/autoscaling-describe-auto-scaling-notification-types.xml
-tests/unit/response_parsing/xml/responses/autoscaling-describe-launch-configurations.json
-tests/unit/response_parsing/xml/responses/autoscaling-describe-launch-configurations.xml
-tests/unit/response_parsing/xml/responses/autoscaling-describe-metric-collection-types.json
-tests/unit/response_parsing/xml/responses/autoscaling-describe-metric-collection-types.xml
-tests/unit/response_parsing/xml/responses/autoscaling-describe-notification-configurations.json
-tests/unit/response_parsing/xml/responses/autoscaling-describe-notification-configurations.xml
-tests/unit/response_parsing/xml/responses/autoscaling-describe-policies.json
-tests/unit/response_parsing/xml/responses/autoscaling-describe-policies.xml
-tests/unit/response_parsing/xml/responses/autoscaling-describe-scaling-activities.json
-tests/unit/response_parsing/xml/responses/autoscaling-describe-scaling-activities.xml
-tests/unit/response_parsing/xml/responses/autoscaling-describe-scaling-process-types.json
-tests/unit/response_parsing/xml/responses/autoscaling-describe-scaling-process-types.xml
-tests/unit/response_parsing/xml/responses/autoscaling-describe-scheduled-actions.json
-tests/unit/response_parsing/xml/responses/autoscaling-describe-scheduled-actions.xml
-tests/unit/response_parsing/xml/responses/autoscaling-describe-tags.json
-tests/unit/response_parsing/xml/responses/autoscaling-describe-tags.xml
-tests/unit/response_parsing/xml/responses/autoscaling-describe-termination-policy-types.json
-tests/unit/response_parsing/xml/responses/autoscaling-describe-termination-policy-types.xml
-tests/unit/response_parsing/xml/responses/cloudformation-describe-stacks.json
-tests/unit/response_parsing/xml/responses/cloudformation-describe-stacks.xml
-tests/unit/response_parsing/xml/responses/cloudformation-get-template.json
-tests/unit/response_parsing/xml/responses/cloudformation-get-template.xml
-tests/unit/response_parsing/xml/responses/cloudformation-list-stacks.json
-tests/unit/response_parsing/xml/responses/cloudformation-list-stacks.xml
-tests/unit/response_parsing/xml/responses/cloudfront-get-cloud-front-origin-access-identity.json
-tests/unit/response_parsing/xml/responses/cloudfront-get-cloud-front-origin-access-identity.xml
-tests/unit/response_parsing/xml/responses/cloudfront-get-distribution.json
-tests/unit/response_parsing/xml/responses/cloudfront-get-distribution.xml
-tests/unit/response_parsing/xml/responses/cloudfront-get-invalidation.json
-tests/unit/response_parsing/xml/responses/cloudfront-get-invalidation.xml
-tests/unit/response_parsing/xml/responses/cloudfront-get-streaming-distribution.json
-tests/unit/response_parsing/xml/responses/cloudfront-get-streaming-distribution.xml
-tests/unit/response_parsing/xml/responses/cloudfront-list-cloud-front-origin-access-identities.json
-tests/unit/response_parsing/xml/responses/cloudfront-list-cloud-front-origin-access-identities.xml
-tests/unit/response_parsing/xml/responses/cloudfront-list-distributions.json
-tests/unit/response_parsing/xml/responses/cloudfront-list-distributions.xml
-tests/unit/response_parsing/xml/responses/cloudfront-list-invalidations.json
-tests/unit/response_parsing/xml/responses/cloudfront-list-invalidations.xml
-tests/unit/response_parsing/xml/responses/cloudfront-list-streaming-distributions.json
-tests/unit/response_parsing/xml/responses/cloudfront-list-streaming-distributions.xml
-tests/unit/response_parsing/xml/responses/cloudwatch-describe-alarm-history.json
-tests/unit/response_parsing/xml/responses/cloudwatch-describe-alarm-history.xml
-tests/unit/response_parsing/xml/responses/cloudwatch-describe-alarms.json
-tests/unit/response_parsing/xml/responses/cloudwatch-describe-alarms.xml
-tests/unit/response_parsing/xml/responses/cloudwatch-list-metrics.json
-tests/unit/response_parsing/xml/responses/cloudwatch-list-metrics.xml
-tests/unit/response_parsing/xml/responses/ec2-allocate-address.json
-tests/unit/response_parsing/xml/responses/ec2-allocate-address.xml
-tests/unit/response_parsing/xml/responses/ec2-assign-private-ip-addresses.json
-tests/unit/response_parsing/xml/responses/ec2-assign-private-ip-addresses.xml
-tests/unit/response_parsing/xml/responses/ec2-associate-address.json
-tests/unit/response_parsing/xml/responses/ec2-associate-address.xml
-tests/unit/response_parsing/xml/responses/ec2-associate-route-table.json
-tests/unit/response_parsing/xml/responses/ec2-associate-route-table.xml
-tests/unit/response_parsing/xml/responses/ec2-attach-volume.json
-tests/unit/response_parsing/xml/responses/ec2-attach-volume.xml
-tests/unit/response_parsing/xml/responses/ec2-attach-vpn-gateway.json
-tests/unit/response_parsing/xml/responses/ec2-attach-vpn-gateway.xml
-tests/unit/response_parsing/xml/responses/ec2-bundle-instance.json
-tests/unit/response_parsing/xml/responses/ec2-bundle-instance.xml
-tests/unit/response_parsing/xml/responses/ec2-cancel-bundle-task.json
-tests/unit/response_parsing/xml/responses/ec2-cancel-bundle-task.xml
-tests/unit/response_parsing/xml/responses/ec2-cancel-reserved-instances-listing.json
-tests/unit/response_parsing/xml/responses/ec2-cancel-reserved-instances-listing.xml
-tests/unit/response_parsing/xml/responses/ec2-cancel-spot-instance-requests.json
-tests/unit/response_parsing/xml/responses/ec2-cancel-spot-instance-requests.xml
-tests/unit/response_parsing/xml/responses/ec2-confirm-product-instance.json
-tests/unit/response_parsing/xml/responses/ec2-confirm-product-instance.xml
-tests/unit/response_parsing/xml/responses/ec2-copy-snapshot.json
-tests/unit/response_parsing/xml/responses/ec2-copy-snapshot.xml
-tests/unit/response_parsing/xml/responses/ec2-create-customer-gateway.json
-tests/unit/response_parsing/xml/responses/ec2-create-customer-gateway.xml
-tests/unit/response_parsing/xml/responses/ec2-create-dhcp-options.json
-tests/unit/response_parsing/xml/responses/ec2-create-dhcp-options.xml
-tests/unit/response_parsing/xml/responses/ec2-create-instance-export-task.json
-tests/unit/response_parsing/xml/responses/ec2-create-instance-export-task.xml
-tests/unit/response_parsing/xml/responses/ec2-create-key-pair.json
-tests/unit/response_parsing/xml/responses/ec2-create-key-pair.xml
-tests/unit/response_parsing/xml/responses/ec2-create-network-acl.json
-tests/unit/response_parsing/xml/responses/ec2-create-network-acl.xml
-tests/unit/response_parsing/xml/responses/ec2-create-network-interface.json
-tests/unit/response_parsing/xml/responses/ec2-create-network-interface.xml
-tests/unit/response_parsing/xml/responses/ec2-create-reserved-instances-listing.json
-tests/unit/response_parsing/xml/responses/ec2-create-reserved-instances-listing.xml
-tests/unit/response_parsing/xml/responses/ec2-create-route-table.json
-tests/unit/response_parsing/xml/responses/ec2-create-route-table.xml
-tests/unit/response_parsing/xml/responses/ec2-create-snapshot.json
-tests/unit/response_parsing/xml/responses/ec2-create-snapshot.xml
-tests/unit/response_parsing/xml/responses/ec2-create-spot-datafeed-subscription.json
-tests/unit/response_parsing/xml/responses/ec2-create-spot-datafeed-subscription.xml
-tests/unit/response_parsing/xml/responses/ec2-create-subnet.json
-tests/unit/response_parsing/xml/responses/ec2-create-subnet.xml
-tests/unit/response_parsing/xml/responses/ec2-create-volume.json
-tests/unit/response_parsing/xml/responses/ec2-create-volume.xml
-tests/unit/response_parsing/xml/responses/ec2-create-vpc.json
-tests/unit/response_parsing/xml/responses/ec2-create-vpc.xml
-tests/unit/response_parsing/xml/responses/ec2-create-vpn-gateway.json
-tests/unit/response_parsing/xml/responses/ec2-create-vpn-gateway.xml
-tests/unit/response_parsing/xml/responses/ec2-delete-internet-gateway.json
-tests/unit/response_parsing/xml/responses/ec2-delete-internet-gateway.xml
-tests/unit/response_parsing/xml/responses/ec2-describe-account-attributes.json
-tests/unit/response_parsing/xml/responses/ec2-describe-account-attributes.xml
-tests/unit/response_parsing/xml/responses/ec2-describe-addresses.json
-tests/unit/response_parsing/xml/responses/ec2-describe-addresses.xml
-tests/unit/response_parsing/xml/responses/ec2-describe-availability-zones.json
-tests/unit/response_parsing/xml/responses/ec2-describe-availability-zones.xml
-tests/unit/response_parsing/xml/responses/ec2-describe-bundle-tasks.json
-tests/unit/response_parsing/xml/responses/ec2-describe-bundle-tasks.xml
-tests/unit/response_parsing/xml/responses/ec2-describe-customer-gateways.json
-tests/unit/response_parsing/xml/responses/ec2-describe-customer-gateways.xml
-tests/unit/response_parsing/xml/responses/ec2-describe-dhcp-options.json
-tests/unit/response_parsing/xml/responses/ec2-describe-dhcp-options.xml
-tests/unit/response_parsing/xml/responses/ec2-describe-export-tasks.json
-tests/unit/response_parsing/xml/responses/ec2-describe-export-tasks.xml
-tests/unit/response_parsing/xml/responses/ec2-describe-instance-attribute.json
-tests/unit/response_parsing/xml/responses/ec2-describe-instance-attribute.xml
-tests/unit/response_parsing/xml/responses/ec2-describe-instance-status.json
-tests/unit/response_parsing/xml/responses/ec2-describe-instance-status.xml
-tests/unit/response_parsing/xml/responses/ec2-describe-instances.json
-tests/unit/response_parsing/xml/responses/ec2-describe-instances.xml
-tests/unit/response_parsing/xml/responses/ec2-describe-internet-gateways.json
-tests/unit/response_parsing/xml/responses/ec2-describe-internet-gateways.xml
-tests/unit/response_parsing/xml/responses/ec2-describe-key-pairs.json
-tests/unit/response_parsing/xml/responses/ec2-describe-key-pairs.xml
-tests/unit/response_parsing/xml/responses/ec2-describe-network-acls.json
-tests/unit/response_parsing/xml/responses/ec2-describe-network-acls.xml
-tests/unit/response_parsing/xml/responses/ec2-describe-network-interfaces.json
-tests/unit/response_parsing/xml/responses/ec2-describe-network-interfaces.xml
-tests/unit/response_parsing/xml/responses/ec2-describe-placement-groups.json
-tests/unit/response_parsing/xml/responses/ec2-describe-placement-groups.xml
-tests/unit/response_parsing/xml/responses/ec2-describe-regions.json
-tests/unit/response_parsing/xml/responses/ec2-describe-regions.xml
-tests/unit/response_parsing/xml/responses/ec2-describe-reserved-instances-offerings.json
-tests/unit/response_parsing/xml/responses/ec2-describe-reserved-instances-offerings.xml
-tests/unit/response_parsing/xml/responses/ec2-describe-reserved-instances.json
-tests/unit/response_parsing/xml/responses/ec2-describe-reserved-instances.xml
-tests/unit/response_parsing/xml/responses/ec2-describe-route-tables.json
-tests/unit/response_parsing/xml/responses/ec2-describe-route-tables.xml
-tests/unit/response_parsing/xml/responses/ec2-describe-security-groups.json
-tests/unit/response_parsing/xml/responses/ec2-describe-security-groups.xml
-tests/unit/response_parsing/xml/responses/ec2-describe-snapshots.json
-tests/unit/response_parsing/xml/responses/ec2-describe-snapshots.xml
-tests/unit/response_parsing/xml/responses/ec2-describe-spot-instance-requests.json
-tests/unit/response_parsing/xml/responses/ec2-describe-spot-instance-requests.xml
-tests/unit/response_parsing/xml/responses/ec2-describe-spot-price-history.json
-tests/unit/response_parsing/xml/responses/ec2-describe-spot-price-history.xml
-tests/unit/response_parsing/xml/responses/ec2-describe-subnets.json
-tests/unit/response_parsing/xml/responses/ec2-describe-subnets.xml
-tests/unit/response_parsing/xml/responses/ec2-describe-tags.json
-tests/unit/response_parsing/xml/responses/ec2-describe-tags.xml
-tests/unit/response_parsing/xml/responses/ec2-describe-volume-status.json
-tests/unit/response_parsing/xml/responses/ec2-describe-volume-status.xml
-tests/unit/response_parsing/xml/responses/ec2-describe-volumes.json
-tests/unit/response_parsing/xml/responses/ec2-describe-volumes.xml
-tests/unit/response_parsing/xml/responses/ec2-describe-vpcs.json
-tests/unit/response_parsing/xml/responses/ec2-describe-vpcs.xml
-tests/unit/response_parsing/xml/responses/ec2-describe-vpn-connections.json
-tests/unit/response_parsing/xml/responses/ec2-describe-vpn-connections.xml
-tests/unit/response_parsing/xml/responses/ec2-describe-vpn-gateways.json
-tests/unit/response_parsing/xml/responses/ec2-describe-vpn-gateways.xml
-tests/unit/response_parsing/xml/responses/ec2-detach-network-interface.json
-tests/unit/response_parsing/xml/responses/ec2-detach-network-interface.xml
-tests/unit/response_parsing/xml/responses/ec2-detach-volume.json
-tests/unit/response_parsing/xml/responses/ec2-detach-volume.xml
-tests/unit/response_parsing/xml/responses/ec2-get-password-data.json
-tests/unit/response_parsing/xml/responses/ec2-get-password-data.xml
-tests/unit/response_parsing/xml/responses/ec2-import-instance.json
-tests/unit/response_parsing/xml/responses/ec2-import-instance.xml
-tests/unit/response_parsing/xml/responses/ec2-import-key-pair.json
-tests/unit/response_parsing/xml/responses/ec2-import-key-pair.xml
-tests/unit/response_parsing/xml/responses/ec2-import-volume.json
-tests/unit/response_parsing/xml/responses/ec2-import-volume.xml
-tests/unit/response_parsing/xml/responses/ec2-modify-snapshot-attribute.json
-tests/unit/response_parsing/xml/responses/ec2-modify-snapshot-attribute.xml
-tests/unit/response_parsing/xml/responses/ec2-monitor-instances.json
-tests/unit/response_parsing/xml/responses/ec2-monitor-instances.xml
-tests/unit/response_parsing/xml/responses/ec2-register-image.json
-tests/unit/response_parsing/xml/responses/ec2-register-image.xml
-tests/unit/response_parsing/xml/responses/ec2-replace-network-acl-association.json
-tests/unit/response_parsing/xml/responses/ec2-replace-network-acl-association.xml
-tests/unit/response_parsing/xml/responses/ec2-request-spot-instances.json
-tests/unit/response_parsing/xml/responses/ec2-request-spot-instances.xml
-tests/unit/response_parsing/xml/responses/ec2-run-instances.json
-tests/unit/response_parsing/xml/responses/ec2-run-instances.xml
-tests/unit/response_parsing/xml/responses/ec2-start-instances.json
-tests/unit/response_parsing/xml/responses/ec2-start-instances.xml
-tests/unit/response_parsing/xml/responses/ec2-stop-instances.json
-tests/unit/response_parsing/xml/responses/ec2-stop-instances.xml
-tests/unit/response_parsing/xml/responses/ec2-unmonitor-instances.json
-tests/unit/response_parsing/xml/responses/ec2-unmonitor-instances.xml
-tests/unit/response_parsing/xml/responses/elasticbeanstalk-check-dns-availability.json
-tests/unit/response_parsing/xml/responses/elasticbeanstalk-check-dns-availability.xml
-tests/unit/response_parsing/xml/responses/elasticbeanstalk-create-application-version.json
-tests/unit/response_parsing/xml/responses/elasticbeanstalk-create-application-version.xml
-tests/unit/response_parsing/xml/responses/elasticbeanstalk-create-application.json
-tests/unit/response_parsing/xml/responses/elasticbeanstalk-create-application.xml
-tests/unit/response_parsing/xml/responses/elasticbeanstalk-create-configuration-template.json
-tests/unit/response_parsing/xml/responses/elasticbeanstalk-create-configuration-template.xml
-tests/unit/response_parsing/xml/responses/elasticbeanstalk-create-environment.json
-tests/unit/response_parsing/xml/responses/elasticbeanstalk-create-environment.xml
-tests/unit/response_parsing/xml/responses/elasticbeanstalk-create-storage-location.json
-tests/unit/response_parsing/xml/responses/elasticbeanstalk-create-storage-location.xml
-tests/unit/response_parsing/xml/responses/elasticbeanstalk-delete-application.json
-tests/unit/response_parsing/xml/responses/elasticbeanstalk-delete-application.xml
-tests/unit/response_parsing/xml/responses/elasticbeanstalk-describe-application-versions.json
-tests/unit/response_parsing/xml/responses/elasticbeanstalk-describe-application-versions.xml
-tests/unit/response_parsing/xml/responses/elasticbeanstalk-describe-applications.json
-tests/unit/response_parsing/xml/responses/elasticbeanstalk-describe-applications.xml
-tests/unit/response_parsing/xml/responses/elasticbeanstalk-describe-configuration-options.json
-tests/unit/response_parsing/xml/responses/elasticbeanstalk-describe-configuration-options.xml
-tests/unit/response_parsing/xml/responses/elasticbeanstalk-describe-environments.json
-tests/unit/response_parsing/xml/responses/elasticbeanstalk-describe-environments.xml
-tests/unit/response_parsing/xml/responses/elasticbeanstalk-describe-events.json
-tests/unit/response_parsing/xml/responses/elasticbeanstalk-describe-events.xml
-tests/unit/response_parsing/xml/responses/elasticbeanstalk-list-available-solution-stacks.json
-tests/unit/response_parsing/xml/responses/elasticbeanstalk-list-available-solution-stacks.xml
-tests/unit/response_parsing/xml/responses/elasticbeanstalk-retrieve-environment-info.json
-tests/unit/response_parsing/xml/responses/elasticbeanstalk-retrieve-environment-info.xml
-tests/unit/response_parsing/xml/responses/elasticbeanstalk-terminate-environment.json
-tests/unit/response_parsing/xml/responses/elasticbeanstalk-terminate-environment.xml
-tests/unit/response_parsing/xml/responses/elasticbeanstalk-update-application-version.json
-tests/unit/response_parsing/xml/responses/elasticbeanstalk-update-application-version.xml
-tests/unit/response_parsing/xml/responses/elasticbeanstalk-update-application.json
-tests/unit/response_parsing/xml/responses/elasticbeanstalk-update-application.xml
-tests/unit/response_parsing/xml/responses/elb-describe-load-balancer-policies.json
-tests/unit/response_parsing/xml/responses/elb-describe-load-balancer-policies.xml
-tests/unit/response_parsing/xml/responses/elb-describe-load-balancer-policy-types.json
-tests/unit/response_parsing/xml/responses/elb-describe-load-balancer-policy-types.xml
-tests/unit/response_parsing/xml/responses/elb-describe-load-balancers.json
-tests/unit/response_parsing/xml/responses/elb-describe-load-balancers.xml
-tests/unit/response_parsing/xml/responses/iam-create-virtual-mfa-device.json
-tests/unit/response_parsing/xml/responses/iam-create-virtual-mfa-device.xml
-tests/unit/response_parsing/xml/responses/iam-get-account-summary.json
-tests/unit/response_parsing/xml/responses/iam-get-account-summary.xml
-tests/unit/response_parsing/xml/responses/iam-get-group.json
-tests/unit/response_parsing/xml/responses/iam-get-group.xml
-tests/unit/response_parsing/xml/responses/iam-get-user-policy.json
-tests/unit/response_parsing/xml/responses/iam-get-user-policy.xml
-tests/unit/response_parsing/xml/responses/iam-get-user.json
-tests/unit/response_parsing/xml/responses/iam-get-user.xml
-tests/unit/response_parsing/xml/responses/iam-list-access-keys.json
-tests/unit/response_parsing/xml/responses/iam-list-access-keys.xml
-tests/unit/response_parsing/xml/responses/iam-list-account-aliases.json
-tests/unit/response_parsing/xml/responses/iam-list-account-aliases.xml
-tests/unit/response_parsing/xml/responses/iam-list-groups.json
-tests/unit/response_parsing/xml/responses/iam-list-groups.xml
-tests/unit/response_parsing/xml/responses/iam-list-instance-profiles.json
-tests/unit/response_parsing/xml/responses/iam-list-instance-profiles.xml
-tests/unit/response_parsing/xml/responses/iam-list-mfa-devices.json
-tests/unit/response_parsing/xml/responses/iam-list-mfa-devices.xml
-tests/unit/response_parsing/xml/responses/iam-list-roles.json
-tests/unit/response_parsing/xml/responses/iam-list-roles.xml
-tests/unit/response_parsing/xml/responses/iam-list-server-certificates.json
-tests/unit/response_parsing/xml/responses/iam-list-server-certificates.xml
-tests/unit/response_parsing/xml/responses/iam-list-signing-certificates.json
-tests/unit/response_parsing/xml/responses/iam-list-signing-certificates.xml
-tests/unit/response_parsing/xml/responses/iam-list-users.json
-tests/unit/response_parsing/xml/responses/iam-list-users.xml
-tests/unit/response_parsing/xml/responses/iam-list-virtual-mfa-devices.json
-tests/unit/response_parsing/xml/responses/iam-list-virtual-mfa-devices.xml
-tests/unit/response_parsing/xml/responses/importexport-list-jobs.json
-tests/unit/response_parsing/xml/responses/importexport-list-jobs.xml
-tests/unit/response_parsing/xml/responses/rds-describe-db-engine-versions.json
-tests/unit/response_parsing/xml/responses/rds-describe-db-engine-versions.xml
-tests/unit/response_parsing/xml/responses/rds-describe-db-instances.json
-tests/unit/response_parsing/xml/responses/rds-describe-db-instances.xml
-tests/unit/response_parsing/xml/responses/rds-describe-db-parameter-groups.json
-tests/unit/response_parsing/xml/responses/rds-describe-db-parameter-groups.xml
-tests/unit/response_parsing/xml/responses/rds-describe-db-security-groups.json
-tests/unit/response_parsing/xml/responses/rds-describe-db-security-groups.xml
-tests/unit/response_parsing/xml/responses/rds-describe-db-snapshots.json
-tests/unit/response_parsing/xml/responses/rds-describe-db-snapshots.xml
-tests/unit/response_parsing/xml/responses/rds-describe-db-subnet-groups.json
-tests/unit/response_parsing/xml/responses/rds-describe-db-subnet-groups.xml
-tests/unit/response_parsing/xml/responses/rds-describe-event-categories.json
-tests/unit/response_parsing/xml/responses/rds-describe-event-categories.xml
-tests/unit/response_parsing/xml/responses/rds-describe-event-subscriptions.json
-tests/unit/response_parsing/xml/responses/rds-describe-event-subscriptions.xml
-tests/unit/response_parsing/xml/responses/rds-describe-events.json
-tests/unit/response_parsing/xml/responses/rds-describe-events.xml
-tests/unit/response_parsing/xml/responses/rds-describe-option-groups.json
-tests/unit/response_parsing/xml/responses/rds-describe-option-groups.xml
-tests/unit/response_parsing/xml/responses/rds-describe-reserved-db-instances-offerings.json
-tests/unit/response_parsing/xml/responses/rds-describe-reserved-db-instances-offerings.xml
-tests/unit/response_parsing/xml/responses/rds-describe-reserved-db-instances.json
-tests/unit/response_parsing/xml/responses/rds-describe-reserved-db-instances.xml
-tests/unit/response_parsing/xml/responses/redshift-authorize-cluster-security-group-ingress.json
-tests/unit/response_parsing/xml/responses/redshift-authorize-cluster-security-group-ingress.xml
-tests/unit/response_parsing/xml/responses/redshift-copy-cluster-snapshot.json
-tests/unit/response_parsing/xml/responses/redshift-copy-cluster-snapshot.xml
-tests/unit/response_parsing/xml/responses/redshift-create-cluster-parameter-group.json
-tests/unit/response_parsing/xml/responses/redshift-create-cluster-parameter-group.xml
-tests/unit/response_parsing/xml/responses/redshift-create-cluster-security-group.json
-tests/unit/response_parsing/xml/responses/redshift-create-cluster-security-group.xml
-tests/unit/response_parsing/xml/responses/redshift-create-cluster-snapshot.json
-tests/unit/response_parsing/xml/responses/redshift-create-cluster-snapshot.xml
-tests/unit/response_parsing/xml/responses/redshift-create-cluster-subnet-group.json
-tests/unit/response_parsing/xml/responses/redshift-create-cluster-subnet-group.xml
-tests/unit/response_parsing/xml/responses/redshift-create-cluster.json
-tests/unit/response_parsing/xml/responses/redshift-create-cluster.xml
-tests/unit/response_parsing/xml/responses/redshift-delete-cluster-parameter-group.json
-tests/unit/response_parsing/xml/responses/redshift-delete-cluster-parameter-group.xml
-tests/unit/response_parsing/xml/responses/redshift-delete-cluster-snapshot.json
-tests/unit/response_parsing/xml/responses/redshift-delete-cluster-snapshot.xml
-tests/unit/response_parsing/xml/responses/redshift-delete-cluster.json
-tests/unit/response_parsing/xml/responses/redshift-delete-cluster.xml
-tests/unit/response_parsing/xml/responses/redshift-describe-cluster-parameter-groups.json
-tests/unit/response_parsing/xml/responses/redshift-describe-cluster-parameter-groups.xml
-tests/unit/response_parsing/xml/responses/redshift-describe-cluster-parameters.json
-tests/unit/response_parsing/xml/responses/redshift-describe-cluster-parameters.xml
-tests/unit/response_parsing/xml/responses/redshift-describe-cluster-security-groups.json
-tests/unit/response_parsing/xml/responses/redshift-describe-cluster-security-groups.xml
-tests/unit/response_parsing/xml/responses/redshift-describe-cluster-snapshots.json
-tests/unit/response_parsing/xml/responses/redshift-describe-cluster-snapshots.xml
-tests/unit/response_parsing/xml/responses/redshift-describe-cluster-subnet-groups.json
-tests/unit/response_parsing/xml/responses/redshift-describe-cluster-subnet-groups.xml
-tests/unit/response_parsing/xml/responses/redshift-describe-cluster-versions.json
-tests/unit/response_parsing/xml/responses/redshift-describe-cluster-versions.xml
-tests/unit/response_parsing/xml/responses/redshift-describe-clusters.json
-tests/unit/response_parsing/xml/responses/redshift-describe-clusters.xml
-tests/unit/response_parsing/xml/responses/redshift-describe-events.json
-tests/unit/response_parsing/xml/responses/redshift-describe-events.xml
-tests/unit/response_parsing/xml/responses/redshift-describe-orderable-cluster-options.json
-tests/unit/response_parsing/xml/responses/redshift-describe-orderable-cluster-options.xml
-tests/unit/response_parsing/xml/responses/redshift-describe-reserved-node-offerings.json
-tests/unit/response_parsing/xml/responses/redshift-describe-reserved-node-offerings.xml
-tests/unit/response_parsing/xml/responses/redshift-describe-reserved-nodes.json
-tests/unit/response_parsing/xml/responses/redshift-describe-reserved-nodes.xml
-tests/unit/response_parsing/xml/responses/redshift-describe-resize.json
-tests/unit/response_parsing/xml/responses/redshift-describe-resize.xml
-tests/unit/response_parsing/xml/responses/redshift-modify-cluster-parameter-group.json
-tests/unit/response_parsing/xml/responses/redshift-modify-cluster-parameter-group.xml
-tests/unit/response_parsing/xml/responses/redshift-purchase-reserved-node-offering.json
-tests/unit/response_parsing/xml/responses/redshift-purchase-reserved-node-offering.xml
-tests/unit/response_parsing/xml/responses/redshift-reboot-cluster.json
-tests/unit/response_parsing/xml/responses/redshift-reboot-cluster.xml
-tests/unit/response_parsing/xml/responses/redshift-reset-cluster-parameter-group.json
-tests/unit/response_parsing/xml/responses/redshift-reset-cluster-parameter-group.xml
-tests/unit/response_parsing/xml/responses/redshift-restore-from-cluster-snapshot.json
-tests/unit/response_parsing/xml/responses/redshift-restore-from-cluster-snapshot.xml
-tests/unit/response_parsing/xml/responses/redshift-revoke-cluster-security-group-ingress.json
-tests/unit/response_parsing/xml/responses/redshift-revoke-cluster-security-group-ingress.xml
-tests/unit/response_parsing/xml/responses/s3-get-bucket-acl.json
-tests/unit/response_parsing/xml/responses/s3-get-bucket-acl.xml
-tests/unit/response_parsing/xml/responses/s3-get-bucket-location.json
-tests/unit/response_parsing/xml/responses/s3-get-bucket-location.xml
-tests/unit/response_parsing/xml/responses/s3-get-bucket-logging.json
-tests/unit/response_parsing/xml/responses/s3-get-bucket-logging.xml
-tests/unit/response_parsing/xml/responses/s3-get-bucket-policy.json
-tests/unit/response_parsing/xml/responses/s3-get-bucket-policy.xml
-tests/unit/response_parsing/xml/responses/s3-list-buckets.json
-tests/unit/response_parsing/xml/responses/s3-list-buckets.xml
-tests/unit/response_parsing/xml/responses/s3-list-multipart-uploads#2.json
-tests/unit/response_parsing/xml/responses/s3-list-multipart-uploads#2.xml
-tests/unit/response_parsing/xml/responses/s3-list-multipart-uploads.json
-tests/unit/response_parsing/xml/responses/s3-list-multipart-uploads.xml
-tests/unit/response_parsing/xml/responses/s3-list-object-versions.json
-tests/unit/response_parsing/xml/responses/s3-list-object-versions.xml
-tests/unit/response_parsing/xml/responses/s3-list-objects.json
-tests/unit/response_parsing/xml/responses/s3-list-objects.xml
-tests/unit/response_parsing/xml/responses/ses-delete-identity.json
-tests/unit/response_parsing/xml/responses/ses-delete-identity.xml
-tests/unit/response_parsing/xml/responses/ses-get-identity-dkim-attributes.json
-tests/unit/response_parsing/xml/responses/ses-get-identity-dkim-attributes.xml
-tests/unit/response_parsing/xml/responses/ses-get-identity-notification-attributes.json
-tests/unit/response_parsing/xml/responses/ses-get-identity-notification-attributes.xml
-tests/unit/response_parsing/xml/responses/ses-get-identity-verification-attributes.json
-tests/unit/response_parsing/xml/responses/ses-get-identity-verification-attributes.xml
-tests/unit/response_parsing/xml/responses/ses-get-send-quota.json
-tests/unit/response_parsing/xml/responses/ses-get-send-quota.xml
-tests/unit/response_parsing/xml/responses/ses-get-send-statistics.json
-tests/unit/response_parsing/xml/responses/ses-get-send-statistics.xml
-tests/unit/response_parsing/xml/responses/ses-list-identities.json
-tests/unit/response_parsing/xml/responses/ses-list-identities.xml
-tests/unit/response_parsing/xml/responses/ses-send-email.json
-tests/unit/response_parsing/xml/responses/ses-send-email.xml
-tests/unit/response_parsing/xml/responses/ses-send-raw-email.json
-tests/unit/response_parsing/xml/responses/ses-send-raw-email.xml
-tests/unit/response_parsing/xml/responses/ses-set-identity-dkim-enabled.json
-tests/unit/response_parsing/xml/responses/ses-set-identity-dkim-enabled.xml
-tests/unit/response_parsing/xml/responses/ses-verify-domain-dkim.json
-tests/unit/response_parsing/xml/responses/ses-verify-domain-dkim.xml
-tests/unit/response_parsing/xml/responses/ses-verify-domain-identity.json
-tests/unit/response_parsing/xml/responses/ses-verify-domain-identity.xml
-tests/unit/response_parsing/xml/responses/sns-add-permission.json
-tests/unit/response_parsing/xml/responses/sns-add-permission.xml
-tests/unit/response_parsing/xml/responses/sns-confirm-subscription.json
-tests/unit/response_parsing/xml/responses/sns-confirm-subscription.xml
-tests/unit/response_parsing/xml/responses/sns-create-topic.json
-tests/unit/response_parsing/xml/responses/sns-create-topic.xml
-tests/unit/response_parsing/xml/responses/sns-get-subscription-attributes.json
-tests/unit/response_parsing/xml/responses/sns-get-subscription-attributes.xml
-tests/unit/response_parsing/xml/responses/sns-get-topic-attributes.json
-tests/unit/response_parsing/xml/responses/sns-get-topic-attributes.xml
-tests/unit/response_parsing/xml/responses/sns-list-subscriptions-by-topic.json
-tests/unit/response_parsing/xml/responses/sns-list-subscriptions-by-topic.xml
-tests/unit/response_parsing/xml/responses/sns-list-subscriptions.json
-tests/unit/response_parsing/xml/responses/sns-list-subscriptions.xml
-tests/unit/response_parsing/xml/responses/sns-list-topics.json
-tests/unit/response_parsing/xml/responses/sns-list-topics.xml
-tests/unit/response_parsing/xml/responses/sns-publish.json
-tests/unit/response_parsing/xml/responses/sns-publish.xml
-tests/unit/response_parsing/xml/responses/sns-subscribe.json
-tests/unit/response_parsing/xml/responses/sns-subscribe.xml
-tests/unit/response_parsing/xml/responses/sqs-add-permission.json
-tests/unit/response_parsing/xml/responses/sqs-add-permission.xml
-tests/unit/response_parsing/xml/responses/sqs-change-message-visibility-batch.json
-tests/unit/response_parsing/xml/responses/sqs-change-message-visibility-batch.xml
-tests/unit/response_parsing/xml/responses/sqs-create-queue.json
-tests/unit/response_parsing/xml/responses/sqs-create-queue.xml
-tests/unit/response_parsing/xml/responses/sqs-delete-message-batch.json
-tests/unit/response_parsing/xml/responses/sqs-delete-message-batch.xml
-tests/unit/response_parsing/xml/responses/sqs-get-queue-attributes.json
-tests/unit/response_parsing/xml/responses/sqs-get-queue-attributes.xml
-tests/unit/response_parsing/xml/responses/sqs-get-queue-url.json
-tests/unit/response_parsing/xml/responses/sqs-get-queue-url.xml
-tests/unit/response_parsing/xml/responses/sqs-list-queues.json
-tests/unit/response_parsing/xml/responses/sqs-list-queues.xml
-tests/unit/response_parsing/xml/responses/sqs-receive-message.json
-tests/unit/response_parsing/xml/responses/sqs-receive-message.xml
-tests/unit/response_parsing/xml/responses/sqs-send-message-batch.json
-tests/unit/response_parsing/xml/responses/sqs-send-message-batch.xml
-tests/unit/response_parsing/xml/responses/sqs-send-message.json
-tests/unit/response_parsing/xml/responses/sqs-send-message.xml
-tests/unit/response_parsing/xml/responses/sts-get-session-token.json
-tests/unit/response_parsing/xml/responses/sts-get-session-token.xml
\ No newline at end of file
diff --git a/.eggs/botocore-1.10.75-py2.7.egg/EGG-INFO/dependency_links.txt b/.eggs/botocore-1.10.75-py2.7.egg/EGG-INFO/dependency_links.txt
deleted file mode 100644
index 8b137891..00000000
--- a/.eggs/botocore-1.10.75-py2.7.egg/EGG-INFO/dependency_links.txt
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/.eggs/botocore-1.10.75-py2.7.egg/EGG-INFO/not-zip-safe b/.eggs/botocore-1.10.75-py2.7.egg/EGG-INFO/not-zip-safe
deleted file mode 100644
index 8b137891..00000000
--- a/.eggs/botocore-1.10.75-py2.7.egg/EGG-INFO/not-zip-safe
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/.eggs/botocore-1.10.75-py2.7.egg/EGG-INFO/requires.txt b/.eggs/botocore-1.10.75-py2.7.egg/EGG-INFO/requires.txt
deleted file mode 100644
index 11678506..00000000
--- a/.eggs/botocore-1.10.75-py2.7.egg/EGG-INFO/requires.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-jmespath>=0.7.1,<1.0.0
-docutils>=0.10
-python-dateutil>=2.1,<3.0.0
-
-[:python_version=="2.6"]
-ordereddict==1.1
-simplejson==3.3.0
diff --git a/.eggs/botocore-1.10.75-py2.7.egg/EGG-INFO/top_level.txt b/.eggs/botocore-1.10.75-py2.7.egg/EGG-INFO/top_level.txt
deleted file mode 100644
index c5b9e129..00000000
--- a/.eggs/botocore-1.10.75-py2.7.egg/EGG-INFO/top_level.txt
+++ /dev/null
@@ -1 +0,0 @@
-botocore
diff --git a/.eggs/botocore-1.10.75-py2.7.egg/botocore/__init__.py b/.eggs/botocore-1.10.75-py2.7.egg/botocore/__init__.py
deleted file mode 100644
index 69e2e503..00000000
--- a/.eggs/botocore-1.10.75-py2.7.egg/botocore/__init__.py
+++ /dev/null
@@ -1,92 +0,0 @@
-# Copyright (c) 2012-2013 Mitch Garnaat http://garnaat.org/
-# Copyright 2012-2014 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"). You
-# may not use this file except in compliance with the License. A copy of
-# the License is located at
-#
-# http://aws.amazon.com/apache2.0/
-#
-# or in the "license" file accompanying this file. This file 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.
-
-import os
-import re
-import logging
-
-__version__ = '1.10.75'
-
-
-class NullHandler(logging.Handler):
- def emit(self, record):
- pass
-
-# Configure default logger to do nothing
-log = logging.getLogger('botocore')
-log.addHandler(NullHandler())
-
-
-_first_cap_regex = re.compile('(.)([A-Z][a-z]+)')
-_end_cap_regex = re.compile('([a-z0-9])([A-Z])')
-# The regex below handles the special case where some acryonym
-# name is pluralized, e.g GatewayARNs, ListWebACLs, SomeCNAMEs.
-_special_case_transform = re.compile('[A-Z]{3,}s$')
-# Prepopulate the cache with special cases that don't match
-# our regular transformation.
-_xform_cache = {
- ('CreateCachediSCSIVolume', '_'): 'create_cached_iscsi_volume',
- ('CreateCachediSCSIVolume', '-'): 'create-cached-iscsi-volume',
- ('DescribeCachediSCSIVolumes', '_'): 'describe_cached_iscsi_volumes',
- ('DescribeCachediSCSIVolumes', '-'): 'describe-cached-iscsi-volumes',
- ('DescribeStorediSCSIVolumes', '_'): 'describe_stored_iscsi_volumes',
- ('DescribeStorediSCSIVolumes', '-'): 'describe-stored-iscsi-volumes',
- ('CreateStorediSCSIVolume', '_'): 'create_stored_iscsi_volume',
- ('CreateStorediSCSIVolume', '-'): 'create-stored-iscsi-volume',
- ('ListHITsForQualificationType', '_'): 'list_hits_for_qualification_type',
- ('ListHITsForQualificationType', '-'): 'list-hits-for-qualification-type',
-}
-# The items in this dict represent partial renames to apply globally to all
-# services which might have a matching argument or operation. This way a
-# common mis-translation can be fixed without having to call out each
-# individual case.
-ScalarTypes = ('string', 'integer', 'boolean', 'timestamp', 'float', 'double')
-
-BOTOCORE_ROOT = os.path.dirname(os.path.abspath(__file__))
-
-
-# Used to specify anonymous (unsigned) request signature
-class UNSIGNED(object):
- def __copy__(self):
- return self
-
- def __deepcopy__(self, memodict):
- return self
-
-
-UNSIGNED = UNSIGNED()
-
-
-def xform_name(name, sep='_', _xform_cache=_xform_cache):
- """Convert camel case to a "pythonic" name.
-
- If the name contains the ``sep`` character, then it is
- returned unchanged.
-
- """
- if sep in name:
- # If the sep is in the name, assume that it's already
- # transformed and return the string unchanged.
- return name
- key = (name, sep)
- if key not in _xform_cache:
- if _special_case_transform.search(name) is not None:
- is_special = _special_case_transform.search(name)
- matched = is_special.group()
- # Replace something like ARNs, ACLs with _arns, _acls.
- name = name[:-len(matched)] + sep + matched.lower()
- s1 = _first_cap_regex.sub(r'\1' + sep + r'\2', name)
- transformed = _end_cap_regex.sub(r'\1' + sep + r'\2', s1).lower()
- _xform_cache[key] = transformed
- return _xform_cache[key]
diff --git a/.eggs/botocore-1.10.75-py2.7.egg/botocore/args.py b/.eggs/botocore-1.10.75-py2.7.egg/botocore/args.py
deleted file mode 100644
index fb6b5bc2..00000000
--- a/.eggs/botocore-1.10.75-py2.7.egg/botocore/args.py
+++ /dev/null
@@ -1,208 +0,0 @@
-# Copyright 2016 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"). You
-# may not use this file except in compliance with the License. A copy of
-# the License is located at
-#
-# http://aws.amazon.com/apache2.0/
-#
-# or in the "license" file accompanying this file. This file 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.
-"""Internal module to help with normalizing botocore client args.
-
-This module (and all function/classes within this module) should be
-considered internal, and *not* a public API.
-
-"""
-import copy
-import logging
-
-import botocore.serialize
-from botocore.signers import RequestSigner
-from botocore.config import Config
-from botocore.endpoint import EndpointCreator
-
-
-logger = logging.getLogger(__name__)
-
-
-class ClientArgsCreator(object):
- def __init__(self, event_emitter, user_agent, response_parser_factory,
- loader, exceptions_factory):
- self._event_emitter = event_emitter
- self._user_agent = user_agent
- self._response_parser_factory = response_parser_factory
- self._loader = loader
- self._exceptions_factory = exceptions_factory
-
- def get_client_args(self, service_model, region_name, is_secure,
- endpoint_url, verify, credentials, scoped_config,
- client_config, endpoint_bridge):
- final_args = self.compute_client_args(
- service_model, client_config, endpoint_bridge, region_name,
- endpoint_url, is_secure, scoped_config)
-
- service_name = final_args['service_name']
- parameter_validation = final_args['parameter_validation']
- endpoint_config = final_args['endpoint_config']
- protocol = final_args['protocol']
- config_kwargs = final_args['config_kwargs']
- s3_config = final_args['s3_config']
- partition = endpoint_config['metadata'].get('partition', None)
-
- signing_region = endpoint_config['signing_region']
- endpoint_region_name = endpoint_config['region_name']
- if signing_region is None and endpoint_region_name is None:
- signing_region, endpoint_region_name = \
- self._get_default_s3_region(service_name, endpoint_bridge)
- config_kwargs['region_name'] = endpoint_region_name
-
- event_emitter = copy.copy(self._event_emitter)
- signer = RequestSigner(
- service_name, signing_region,
- endpoint_config['signing_name'],
- endpoint_config['signature_version'],
- credentials, event_emitter)
-
- config_kwargs['s3'] = s3_config
- new_config = Config(**config_kwargs)
- endpoint_creator = EndpointCreator(event_emitter)
-
- endpoint = endpoint_creator.create_endpoint(
- service_model, region_name=endpoint_region_name,
- endpoint_url=endpoint_config['endpoint_url'], verify=verify,
- response_parser_factory=self._response_parser_factory,
- max_pool_connections=new_config.max_pool_connections,
- proxies=new_config.proxies,
- timeout=(new_config.connect_timeout, new_config.read_timeout))
-
- serializer = botocore.serialize.create_serializer(
- protocol, parameter_validation)
- response_parser = botocore.parsers.create_parser(protocol)
- return {
- 'serializer': serializer,
- 'endpoint': endpoint,
- 'response_parser': response_parser,
- 'event_emitter': event_emitter,
- 'request_signer': signer,
- 'service_model': service_model,
- 'loader': self._loader,
- 'client_config': new_config,
- 'partition': partition,
- 'exceptions_factory': self._exceptions_factory
- }
-
- def compute_client_args(self, service_model, client_config,
- endpoint_bridge, region_name, endpoint_url,
- is_secure, scoped_config):
- service_name = service_model.endpoint_prefix
- protocol = service_model.metadata['protocol']
- parameter_validation = True
- if client_config and not client_config.parameter_validation:
- parameter_validation = False
- elif scoped_config:
- raw_value = str(scoped_config.get('parameter_validation', ''))
- if raw_value.lower() == 'false':
- parameter_validation = False
-
- endpoint_config = endpoint_bridge.resolve(
- service_name, region_name, endpoint_url, is_secure)
-
- # Override the user agent if specified in the client config.
- user_agent = self._user_agent
- if client_config is not None:
- if client_config.user_agent is not None:
- user_agent = client_config.user_agent
- if client_config.user_agent_extra is not None:
- user_agent += ' %s' % client_config.user_agent_extra
-
- # Create a new client config to be passed to the client based
- # on the final values. We do not want the user to be able
- # to try to modify an existing client with a client config.
- config_kwargs = dict(
- region_name=endpoint_config['region_name'],
- signature_version=endpoint_config['signature_version'],
- user_agent=user_agent)
- if client_config is not None:
- config_kwargs.update(
- connect_timeout=client_config.connect_timeout,
- read_timeout=client_config.read_timeout,
- max_pool_connections=client_config.max_pool_connections,
- proxies=client_config.proxies,
- retries=client_config.retries
- )
- s3_config = self.compute_s3_config(scoped_config,
- client_config)
- return {
- 'service_name': service_name,
- 'parameter_validation': parameter_validation,
- 'user_agent': user_agent,
- 'endpoint_config': endpoint_config,
- 'protocol': protocol,
- 'config_kwargs': config_kwargs,
- 's3_config': s3_config,
- }
-
- def compute_s3_config(self, scoped_config, client_config):
- s3_configuration = None
-
- # Check the scoped config first.
- if scoped_config is not None:
- s3_configuration = scoped_config.get('s3')
- # Until we have proper validation of the config file (including
- # nested types), we have to account for the fact that the s3
- # key could be parsed as a string, e.g 's3 = foo'.
- # In the case we'll ignore the key for now.
- if not isinstance(s3_configuration, dict):
- logger.debug("The s3 config key is not a dictionary type, "
- "ignoring its value of: %s", s3_configuration)
- s3_configuration = None
-
- # Convert logic for several s3 keys in the scoped config
- # so that the various strings map to the appropriate boolean value.
- if s3_configuration:
- boolean_keys = ['use_accelerate_endpoint',
- 'use_dualstack_endpoint',
- 'payload_signing_enabled']
- s3_configuration = self._convert_config_to_bool(
- s3_configuration, boolean_keys)
-
- # Next specific client config values takes precedence over
- # specific values in the scoped config.
- if client_config is not None:
- if client_config.s3 is not None:
- if s3_configuration is None:
- s3_configuration = client_config.s3
- else:
- # The current s3_configuration dictionary may be
- # from a source that only should be read from so
- # we want to be safe and just make a copy of it to modify
- # before it actually gets updated.
- s3_configuration = s3_configuration.copy()
- s3_configuration.update(client_config.s3)
-
- return s3_configuration
-
- def _convert_config_to_bool(self, config_dict, keys):
- # Make sure any further modifications to this section of the config
- # will not affect the scoped config by making a copy of it.
- config_copy = config_dict.copy()
- present_keys = [k for k in keys if k in config_copy]
- for key in present_keys:
- # Normalize on different possible values of True
- if config_copy[key] in [True, 'True', 'true']:
- config_copy[key] = True
- else:
- config_copy[key] = False
- return config_copy
-
- def _get_default_s3_region(self, service_name, endpoint_bridge):
- # If a user is providing a custom URL, the endpoint resolver will
- # refuse to infer a signing region. If we want to default to s3v4,
- # we have to account for this.
- if service_name == 's3':
- endpoint = endpoint_bridge.resolve('s3')
- return endpoint['signing_region'], endpoint['region_name']
- return None, None
diff --git a/.eggs/botocore-1.10.75-py2.7.egg/botocore/auth.py b/.eggs/botocore-1.10.75-py2.7.egg/botocore/auth.py
deleted file mode 100644
index b81764be..00000000
--- a/.eggs/botocore-1.10.75-py2.7.egg/botocore/auth.py
+++ /dev/null
@@ -1,867 +0,0 @@
-# Copyright (c) 2012-2013 Mitch Garnaat http://garnaat.org/
-# Copyright 2012-2014 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"). You
-# may not use this file except in compliance with the License. A copy of
-# the License is located at
-#
-# http://aws.amazon.com/apache2.0/
-#
-# or in the "license" file accompanying this file. This file 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.
-import base64
-import datetime
-from hashlib import sha256
-from hashlib import sha1
-import hmac
-import logging
-from email.utils import formatdate
-from operator import itemgetter
-import functools
-import time
-import calendar
-import json
-
-from botocore.exceptions import NoCredentialsError
-from botocore.utils import normalize_url_path, percent_encode_sequence
-from botocore.compat import HTTPHeaders
-from botocore.compat import quote, unquote, urlsplit, parse_qs
-from botocore.compat import urlunsplit
-from botocore.compat import encodebytes
-from botocore.compat import six
-from botocore.compat import json
-from botocore.compat import MD5_AVAILABLE
-from botocore.compat import ensure_unicode
-
-logger = logging.getLogger(__name__)
-
-
-EMPTY_SHA256_HASH = (
- 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855')
-# This is the buffer size used when calculating sha256 checksums.
-# Experimenting with various buffer sizes showed that this value generally
-# gave the best result (in terms of performance).
-PAYLOAD_BUFFER = 1024 * 1024
-ISO8601 = '%Y-%m-%dT%H:%M:%SZ'
-SIGV4_TIMESTAMP = '%Y%m%dT%H%M%SZ'
-SIGNED_HEADERS_BLACKLIST = [
- 'expect',
- 'user-agent',
- 'x-amzn-trace-id',
-]
-UNSIGNED_PAYLOAD = 'UNSIGNED-PAYLOAD'
-
-
-class BaseSigner(object):
- REQUIRES_REGION = False
-
- def add_auth(self, request):
- raise NotImplementedError("add_auth")
-
-
-class SigV2Auth(BaseSigner):
- """
- Sign a request with Signature V2.
- """
-
- def __init__(self, credentials):
- self.credentials = credentials
-
- def calc_signature(self, request, params):
- logger.debug("Calculating signature using v2 auth.")
- split = urlsplit(request.url)
- path = split.path
- if len(path) == 0:
- path = '/'
- string_to_sign = '%s\n%s\n%s\n' % (request.method,
- split.netloc,
- path)
- lhmac = hmac.new(self.credentials.secret_key.encode('utf-8'),
- digestmod=sha256)
- pairs = []
- for key in sorted(params):
- # Any previous signature should not be a part of this
- # one, so we skip that particular key. This prevents
- # issues during retries.
- if key == 'Signature':
- continue
- value = six.text_type(params[key])
- pairs.append(quote(key.encode('utf-8'), safe='') + '=' +
- quote(value.encode('utf-8'), safe='-_~'))
- qs = '&'.join(pairs)
- string_to_sign += qs
- logger.debug('String to sign: %s', string_to_sign)
- lhmac.update(string_to_sign.encode('utf-8'))
- b64 = base64.b64encode(lhmac.digest()).strip().decode('utf-8')
- return (qs, b64)
-
- def add_auth(self, request):
- # The auth handler is the last thing called in the
- # preparation phase of a prepared request.
- # Because of this we have to parse the query params
- # from the request body so we can update them with
- # the sigv2 auth params.
- if self.credentials is None:
- raise NoCredentialsError
- if request.data:
- # POST
- params = request.data
- else:
- # GET
- params = request.params
- params['AWSAccessKeyId'] = self.credentials.access_key
- params['SignatureVersion'] = '2'
- params['SignatureMethod'] = 'HmacSHA256'
- params['Timestamp'] = time.strftime(ISO8601, time.gmtime())
- if self.credentials.token:
- params['SecurityToken'] = self.credentials.token
- qs, signature = self.calc_signature(request, params)
- params['Signature'] = signature
- return request
-
-
-class SigV3Auth(BaseSigner):
- def __init__(self, credentials):
- self.credentials = credentials
-
- def add_auth(self, request):
- if self.credentials is None:
- raise NoCredentialsError
- if 'Date' in request.headers:
- del request.headers['Date']
- request.headers['Date'] = formatdate(usegmt=True)
- if self.credentials.token:
- if 'X-Amz-Security-Token' in request.headers:
- del request.headers['X-Amz-Security-Token']
- request.headers['X-Amz-Security-Token'] = self.credentials.token
- new_hmac = hmac.new(self.credentials.secret_key.encode('utf-8'),
- digestmod=sha256)
- new_hmac.update(request.headers['Date'].encode('utf-8'))
- encoded_signature = encodebytes(new_hmac.digest()).strip()
- signature = ('AWS3-HTTPS AWSAccessKeyId=%s,Algorithm=%s,Signature=%s' %
- (self.credentials.access_key, 'HmacSHA256',
- encoded_signature.decode('utf-8')))
- if 'X-Amzn-Authorization' in request.headers:
- del request.headers['X-Amzn-Authorization']
- request.headers['X-Amzn-Authorization'] = signature
-
-
-class SigV4Auth(BaseSigner):
- """
- Sign a request with Signature V4.
- """
- REQUIRES_REGION = True
-
- def __init__(self, credentials, service_name, region_name):
- self.credentials = credentials
- # We initialize these value here so the unit tests can have
- # valid values. But these will get overriden in ``add_auth``
- # later for real requests.
- self._region_name = region_name
- self._service_name = service_name
-
- def _sign(self, key, msg, hex=False):
- if hex:
- sig = hmac.new(key, msg.encode('utf-8'), sha256).hexdigest()
- else:
- sig = hmac.new(key, msg.encode('utf-8'), sha256).digest()
- return sig
-
- def headers_to_sign(self, request):
- """
- Select the headers from the request that need to be included
- in the StringToSign.
- """
- header_map = HTTPHeaders()
- for name, value in request.headers.items():
- lname = name.lower()
- if lname not in SIGNED_HEADERS_BLACKLIST:
- header_map[lname] = value
- if 'host' not in header_map:
- header_map['host'] = self._canonical_host(request.url)
- return header_map
-
- def _canonical_host(self, url):
- url_parts = urlsplit(url)
- default_ports = {
- 'http': 80,
- 'https': 443
- }
- if any(url_parts.scheme == scheme and url_parts.port == port
- for scheme, port in default_ports.items()):
- # No need to include the port if it's the default port.
- return url_parts.hostname
- # Strip out auth if it's present in the netloc.
- return url_parts.netloc.rsplit('@', 1)[-1]
-
- def canonical_query_string(self, request):
- # The query string can come from two parts. One is the
- # params attribute of the request. The other is from the request
- # url (in which case we have to re-split the url into its components
- # and parse out the query string component).
- if request.params:
- return self._canonical_query_string_params(request.params)
- else:
- return self._canonical_query_string_url(urlsplit(request.url))
-
- def _canonical_query_string_params(self, params):
- l = []
- for param in sorted(params):
- value = str(params[param])
- l.append('%s=%s' % (quote(param, safe='-_.~'),
- quote(value, safe='-_.~')))
- cqs = '&'.join(l)
- return cqs
-
- def _canonical_query_string_url(self, parts):
- canonical_query_string = ''
- if parts.query:
- # [(key, value), (key2, value2)]
- key_val_pairs = []
- for pair in parts.query.split('&'):
- key, _, value = pair.partition('=')
- key_val_pairs.append((key, value))
- sorted_key_vals = []
- # Sort by the key names, and in the case of
- # repeated keys, then sort by the value.
- for key, value in sorted(key_val_pairs):
- sorted_key_vals.append('%s=%s' % (key, value))
- canonical_query_string = '&'.join(sorted_key_vals)
- return canonical_query_string
-
- def canonical_headers(self, headers_to_sign):
- """
- Return the headers that need to be included in the StringToSign
- in their canonical form by converting all header keys to lower
- case, sorting them in alphabetical order and then joining
- them into a string, separated by newlines.
- """
- headers = []
- sorted_header_names = sorted(set(headers_to_sign))
- for key in sorted_header_names:
- value = ','.join(self._header_value(v) for v in
- sorted(headers_to_sign.get_all(key)))
- headers.append('%s:%s' % (key, ensure_unicode(value)))
- return '\n'.join(headers)
-
- def _header_value(self, value):
- # From the sigv4 docs:
- # Lowercase(HeaderName) + ':' + Trimall(HeaderValue)
- #
- # The Trimall function removes excess white space before and after
- # values, and converts sequential spaces to a single space.
- return ' '.join(value.split())
-
- def signed_headers(self, headers_to_sign):
- l = ['%s' % n.lower().strip() for n in set(headers_to_sign)]
- l = sorted(l)
- return ';'.join(l)
-
- def payload(self, request):
- if not self._should_sha256_sign_payload(request):
- # When payload signing is disabled, we use this static string in
- # place of the payload checksum.
- return UNSIGNED_PAYLOAD
- if request.body and hasattr(request.body, 'seek'):
- position = request.body.tell()
- read_chunksize = functools.partial(request.body.read,
- PAYLOAD_BUFFER)
- checksum = sha256()
- for chunk in iter(read_chunksize, b''):
- checksum.update(chunk)
- hex_checksum = checksum.hexdigest()
- request.body.seek(position)
- return hex_checksum
- elif request.body:
- # The request serialization has ensured that
- # request.body is a bytes() type.
- return sha256(request.body).hexdigest()
- else:
- return EMPTY_SHA256_HASH
-
- def _should_sha256_sign_payload(self, request):
- # Payloads will always be signed over insecure connections.
- if not request.url.startswith('https'):
- return True
-
- # Certain operations may have payload signing disabled by default.
- # Since we don't have access to the operation model, we pass in this
- # bit of metadata through the request context.
- return request.context.get('payload_signing_enabled', True)
-
- def canonical_request(self, request):
- cr = [request.method.upper()]
- path = self._normalize_url_path(urlsplit(request.url).path)
- cr.append(path)
- cr.append(self.canonical_query_string(request))
- headers_to_sign = self.headers_to_sign(request)
- cr.append(self.canonical_headers(headers_to_sign) + '\n')
- cr.append(self.signed_headers(headers_to_sign))
- if 'X-Amz-Content-SHA256' in request.headers:
- body_checksum = request.headers['X-Amz-Content-SHA256']
- else:
- body_checksum = self.payload(request)
- cr.append(body_checksum)
- return '\n'.join(cr)
-
- def _normalize_url_path(self, path):
- normalized_path = quote(normalize_url_path(path), safe='/~')
- return normalized_path
-
- def scope(self, request):
- scope = [self.credentials.access_key]
- scope.append(request.context['timestamp'][0:8])
- scope.append(self._region_name)
- scope.append(self._service_name)
- scope.append('aws4_request')
- return '/'.join(scope)
-
- def credential_scope(self, request):
- scope = []
- scope.append(request.context['timestamp'][0:8])
- scope.append(self._region_name)
- scope.append(self._service_name)
- scope.append('aws4_request')
- return '/'.join(scope)
-
- def string_to_sign(self, request, canonical_request):
- """
- Return the canonical StringToSign as well as a dict
- containing the original version of all headers that
- were included in the StringToSign.
- """
- sts = ['AWS4-HMAC-SHA256']
- sts.append(request.context['timestamp'])
- sts.append(self.credential_scope(request))
- sts.append(sha256(canonical_request.encode('utf-8')).hexdigest())
- return '\n'.join(sts)
-
- def signature(self, string_to_sign, request):
- key = self.credentials.secret_key
- k_date = self._sign(('AWS4' + key).encode('utf-8'),
- request.context['timestamp'][0:8])
- k_region = self._sign(k_date, self._region_name)
- k_service = self._sign(k_region, self._service_name)
- k_signing = self._sign(k_service, 'aws4_request')
- return self._sign(k_signing, string_to_sign, hex=True)
-
- def add_auth(self, request):
- if self.credentials is None:
- raise NoCredentialsError
- datetime_now = datetime.datetime.utcnow()
- request.context['timestamp'] = datetime_now.strftime(SIGV4_TIMESTAMP)
- # This could be a retry. Make sure the previous
- # authorization header is removed first.
- self._modify_request_before_signing(request)
- canonical_request = self.canonical_request(request)
- logger.debug("Calculating signature using v4 auth.")
- logger.debug('CanonicalRequest:\n%s', canonical_request)
- string_to_sign = self.string_to_sign(request, canonical_request)
- logger.debug('StringToSign:\n%s', string_to_sign)
- signature = self.signature(string_to_sign, request)
- logger.debug('Signature:\n%s', signature)
-
- self._inject_signature_to_request(request, signature)
-
- def _inject_signature_to_request(self, request, signature):
- l = ['AWS4-HMAC-SHA256 Credential=%s' % self.scope(request)]
- headers_to_sign = self.headers_to_sign(request)
- l.append('SignedHeaders=%s' % self.signed_headers(headers_to_sign))
- l.append('Signature=%s' % signature)
- request.headers['Authorization'] = ', '.join(l)
- return request
-
- def _modify_request_before_signing(self, request):
- if 'Authorization' in request.headers:
- del request.headers['Authorization']
- self._set_necessary_date_headers(request)
- if self.credentials.token:
- if 'X-Amz-Security-Token' in request.headers:
- del request.headers['X-Amz-Security-Token']
- request.headers['X-Amz-Security-Token'] = self.credentials.token
-
- if not request.context.get('payload_signing_enabled', True):
- if 'X-Amz-Content-SHA256' in request.headers:
- del request.headers['X-Amz-Content-SHA256']
- request.headers['X-Amz-Content-SHA256'] = UNSIGNED_PAYLOAD
-
- def _set_necessary_date_headers(self, request):
- # The spec allows for either the Date _or_ the X-Amz-Date value to be
- # used so we check both. If there's a Date header, we use the date
- # header. Otherwise we use the X-Amz-Date header.
- if 'Date' in request.headers:
- del request.headers['Date']
- datetime_timestamp = datetime.datetime.strptime(
- request.context['timestamp'], SIGV4_TIMESTAMP)
- request.headers['Date'] = formatdate(
- int(calendar.timegm(datetime_timestamp.timetuple())))
- if 'X-Amz-Date' in request.headers:
- del request.headers['X-Amz-Date']
- else:
- if 'X-Amz-Date' in request.headers:
- del request.headers['X-Amz-Date']
- request.headers['X-Amz-Date'] = request.context['timestamp']
-
-
-class S3SigV4Auth(SigV4Auth):
- def __init__(self, credentials, service_name, region_name):
- super(S3SigV4Auth, self).__init__(
- credentials, service_name, region_name)
- self._default_region_name = region_name
-
- def add_auth(self, request):
- # If we ever decide to share auth sessions, this could potentially be
- # a source of concurrency bugs.
- signing_context = request.context.get('signing', {})
- self._region_name = signing_context.get(
- 'region', self._default_region_name)
- super(S3SigV4Auth, self).add_auth(request)
-
- def _modify_request_before_signing(self, request):
- super(S3SigV4Auth, self)._modify_request_before_signing(request)
- if 'X-Amz-Content-SHA256' in request.headers:
- del request.headers['X-Amz-Content-SHA256']
-
- request.headers['X-Amz-Content-SHA256'] = self.payload(request)
-
- def _should_sha256_sign_payload(self, request):
- # S3 allows optional body signing, so to minimize the performance
- # impact, we opt to not SHA256 sign the body on streaming uploads,
- # provided that we're on https.
- client_config = request.context.get('client_config')
- s3_config = getattr(client_config, 's3', None)
-
- # The config could be None if it isn't set, or if the customer sets it
- # to None.
- if s3_config is None:
- s3_config = {}
-
- # The explicit configuration takes precedence over any implicit
- # configuration.
- sign_payload = s3_config.get('payload_signing_enabled', None)
- if sign_payload is not None:
- return sign_payload
-
- # We require that both content-md5 be present and https be enabled
- # to implicitly disable body signing. The combination of TLS and
- # content-md5 is sufficiently secure and durable for us to be
- # confident in the request without body signing.
- if not request.url.startswith('https') or \
- 'Content-MD5' not in request.headers:
- return True
-
- # If the input is streaming we disable body signing by default.
- if request.context.get('has_streaming_input', False):
- return False
-
- # If the S3-specific checks had no results, delegate to the generic
- # checks.
- return super(S3SigV4Auth, self)._should_sha256_sign_payload(request)
-
- def _normalize_url_path(self, path):
- # For S3, we do not normalize the path.
- return path
-
-
-class SigV4QueryAuth(SigV4Auth):
- DEFAULT_EXPIRES = 3600
-
- def __init__(self, credentials, service_name, region_name,
- expires=DEFAULT_EXPIRES):
- super(SigV4QueryAuth, self).__init__(credentials, service_name,
- region_name)
- self._expires = expires
-
- def _modify_request_before_signing(self, request):
- # We automatically set this header, so if it's the auto-set value we
- # want to get rid of it since it doesn't make sense for presigned urls.
- content_type = request.headers.get('content-type')
- blacklisted_content_type = (
- 'application/x-www-form-urlencoded; charset=utf-8'
- )
- if content_type == blacklisted_content_type:
- del request.headers['content-type']
-
- # Note that we're not including X-Amz-Signature.
- # From the docs: "The Canonical Query String must include all the query
- # parameters from the preceding table except for X-Amz-Signature.
- signed_headers = self.signed_headers(self.headers_to_sign(request))
-
- auth_params = {
- 'X-Amz-Algorithm': 'AWS4-HMAC-SHA256',
- 'X-Amz-Credential': self.scope(request),
- 'X-Amz-Date': request.context['timestamp'],
- 'X-Amz-Expires': self._expires,
- 'X-Amz-SignedHeaders': signed_headers,
- }
- if self.credentials.token is not None:
- auth_params['X-Amz-Security-Token'] = self.credentials.token
- # Now parse the original query string to a dict, inject our new query
- # params, and serialize back to a query string.
- url_parts = urlsplit(request.url)
- # parse_qs makes each value a list, but in our case we know we won't
- # have repeated keys so we know we have single element lists which we
- # can convert back to scalar values.
- query_dict = dict(
- [(k, v[0]) for k, v in
- parse_qs(url_parts.query, keep_blank_values=True).items()])
- # The spec is particular about this. It *has* to be:
- # https://?&
- # You can't mix the two types of params together, i.e just keep doing
- # new_query_params.update(op_params)
- # new_query_params.update(auth_params)
- # percent_encode_sequence(new_query_params)
- operation_params = ''
- if request.data:
- # We also need to move the body params into the query string. To
- # do this, we first have to convert it to a dict.
- query_dict.update(self._get_body_as_dict(request))
- request.data = ''
- if query_dict:
- operation_params = percent_encode_sequence(query_dict) + '&'
- new_query_string = (operation_params +
- percent_encode_sequence(auth_params))
- # url_parts is a tuple (and therefore immutable) so we need to create
- # a new url_parts with the new query string.
- # -
- # scheme - 0
- # netloc - 1
- # path - 2
- # query - 3 <-- we're replacing this.
- # fragment - 4
- p = url_parts
- new_url_parts = (p[0], p[1], p[2], new_query_string, p[4])
- request.url = urlunsplit(new_url_parts)
-
- def _get_body_as_dict(self, request):
- # For query services, request.data is form-encoded and is already a
- # dict, but for other services such as rest-json it could be a json
- # string or bytes. In those cases we attempt to load the data as a
- # dict.
- data = request.data
- if isinstance(data, six.binary_type):
- data = json.loads(data.decode('utf-8'))
- elif isinstance(data, six.string_types):
- data = json.loads(data)
- return data
-
- def _inject_signature_to_request(self, request, signature):
- # Rather than calculating an "Authorization" header, for the query
- # param quth, we just append an 'X-Amz-Signature' param to the end
- # of the query string.
- request.url += '&X-Amz-Signature=%s' % signature
-
-
-class S3SigV4QueryAuth(SigV4QueryAuth):
- """S3 SigV4 auth using query parameters.
-
- This signer will sign a request using query parameters and signature
- version 4, i.e a "presigned url" signer.
-
- Based off of:
-
- http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html
-
- """
- def _normalize_url_path(self, path):
- # For S3, we do not normalize the path.
- return path
-
- def payload(self, request):
- # From the doc link above:
- # "You don't include a payload hash in the Canonical Request, because
- # when you create a presigned URL, you don't know anything about the
- # payload. Instead, you use a constant string "UNSIGNED-PAYLOAD".
- return UNSIGNED_PAYLOAD
-
-
-class S3SigV4PostAuth(SigV4Auth):
- """
- Presigns a s3 post
-
- Implementation doc here:
- http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-UsingHTTPPOST.html
- """
- def add_auth(self, request):
- datetime_now = datetime.datetime.utcnow()
- request.context['timestamp'] = datetime_now.strftime(SIGV4_TIMESTAMP)
-
- fields = {}
- if request.context.get('s3-presign-post-fields', None) is not None:
- fields = request.context['s3-presign-post-fields']
-
- policy = {}
- conditions = []
- if request.context.get('s3-presign-post-policy', None) is not None:
- policy = request.context['s3-presign-post-policy']
- if policy.get('conditions', None) is not None:
- conditions = policy['conditions']
-
- policy['conditions'] = conditions
-
- fields['x-amz-algorithm'] = 'AWS4-HMAC-SHA256'
- fields['x-amz-credential'] = self.scope(request)
- fields['x-amz-date'] = request.context['timestamp']
-
- conditions.append({'x-amz-algorithm': 'AWS4-HMAC-SHA256'})
- conditions.append({'x-amz-credential': self.scope(request)})
- conditions.append({'x-amz-date': request.context['timestamp']})
-
- if self.credentials.token is not None:
- fields['x-amz-security-token'] = self.credentials.token
- conditions.append({'x-amz-security-token': self.credentials.token})
-
- # Dump the base64 encoded policy into the fields dictionary.
- fields['policy'] = base64.b64encode(
- json.dumps(policy).encode('utf-8')).decode('utf-8')
-
- fields['x-amz-signature'] = self.signature(fields['policy'], request)
-
- request.context['s3-presign-post-fields'] = fields
- request.context['s3-presign-post-policy'] = policy
-
-
-class HmacV1Auth(BaseSigner):
-
- # List of Query String Arguments of Interest
- QSAOfInterest = ['accelerate', 'acl', 'cors', 'defaultObjectAcl',
- 'location', 'logging', 'partNumber', 'policy',
- 'requestPayment', 'torrent',
- 'versioning', 'versionId', 'versions', 'website',
- 'uploads', 'uploadId', 'response-content-type',
- 'response-content-language', 'response-expires',
- 'response-cache-control', 'response-content-disposition',
- 'response-content-encoding', 'delete', 'lifecycle',
- 'tagging', 'restore', 'storageClass', 'notification',
- 'replication', 'requestPayment', 'analytics', 'metrics',
- 'inventory', 'select', 'select-type']
-
- def __init__(self, credentials, service_name=None, region_name=None):
- self.credentials = credentials
-
- def sign_string(self, string_to_sign):
- new_hmac = hmac.new(self.credentials.secret_key.encode('utf-8'),
- digestmod=sha1)
- new_hmac.update(string_to_sign.encode('utf-8'))
- return encodebytes(new_hmac.digest()).strip().decode('utf-8')
-
- def canonical_standard_headers(self, headers):
- interesting_headers = ['content-md5', 'content-type', 'date']
- hoi = []
- if 'Date' in headers:
- del headers['Date']
- headers['Date'] = self._get_date()
- for ih in interesting_headers:
- found = False
- for key in headers:
- lk = key.lower()
- if headers[key] is not None and lk == ih:
- hoi.append(headers[key].strip())
- found = True
- if not found:
- hoi.append('')
- return '\n'.join(hoi)
-
- def canonical_custom_headers(self, headers):
- hoi = []
- custom_headers = {}
- for key in headers:
- lk = key.lower()
- if headers[key] is not None:
- if lk.startswith('x-amz-'):
- custom_headers[lk] = ','.join(v.strip() for v in
- headers.get_all(key))
- sorted_header_keys = sorted(custom_headers.keys())
- for key in sorted_header_keys:
- hoi.append("%s:%s" % (key, custom_headers[key]))
- return '\n'.join(hoi)
-
- def unquote_v(self, nv):
- """
- TODO: Do we need this?
- """
- if len(nv) == 1:
- return nv
- else:
- return (nv[0], unquote(nv[1]))
-
- def canonical_resource(self, split, auth_path=None):
- # don't include anything after the first ? in the resource...
- # unless it is one of the QSA of interest, defined above
- # NOTE:
- # The path in the canonical resource should always be the
- # full path including the bucket name, even for virtual-hosting
- # style addressing. The ``auth_path`` keeps track of the full
- # path for the canonical resource and would be passed in if
- # the client was using virtual-hosting style.
- if auth_path is not None:
- buf = auth_path
- else:
- buf = split.path
- if split.query:
- qsa = split.query.split('&')
- qsa = [a.split('=', 1) for a in qsa]
- qsa = [self.unquote_v(a) for a in qsa
- if a[0] in self.QSAOfInterest]
- if len(qsa) > 0:
- qsa.sort(key=itemgetter(0))
- qsa = ['='.join(a) for a in qsa]
- buf += '?'
- buf += '&'.join(qsa)
- return buf
-
- def canonical_string(self, method, split, headers, expires=None,
- auth_path=None):
- cs = method.upper() + '\n'
- cs += self.canonical_standard_headers(headers) + '\n'
- custom_headers = self.canonical_custom_headers(headers)
- if custom_headers:
- cs += custom_headers + '\n'
- cs += self.canonical_resource(split, auth_path=auth_path)
- return cs
-
- def get_signature(self, method, split, headers, expires=None,
- auth_path=None):
- if self.credentials.token:
- del headers['x-amz-security-token']
- headers['x-amz-security-token'] = self.credentials.token
- string_to_sign = self.canonical_string(method,
- split,
- headers,
- auth_path=auth_path)
- logger.debug('StringToSign:\n%s', string_to_sign)
- return self.sign_string(string_to_sign)
-
- def add_auth(self, request):
- if self.credentials is None:
- raise NoCredentialsError
- logger.debug("Calculating signature using hmacv1 auth.")
- split = urlsplit(request.url)
- logger.debug('HTTP request method: %s', request.method)
- signature = self.get_signature(request.method, split,
- request.headers,
- auth_path=request.auth_path)
- self._inject_signature(request, signature)
-
- def _get_date(self):
- return formatdate(usegmt=True)
-
- def _inject_signature(self, request, signature):
- if 'Authorization' in request.headers:
- # We have to do this because request.headers is not
- # normal dictionary. It has the (unintuitive) behavior
- # of aggregating repeated setattr calls for the same
- # key value. For example:
- # headers['foo'] = 'a'; headers['foo'] = 'b'
- # list(headers) will print ['foo', 'foo'].
- del request.headers['Authorization']
- request.headers['Authorization'] = (
- "AWS %s:%s" % (self.credentials.access_key, signature))
-
-
-class HmacV1QueryAuth(HmacV1Auth):
- """
- Generates a presigned request for s3.
-
- Spec from this document:
-
- http://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html
- #RESTAuthenticationQueryStringAuth
-
- """
- DEFAULT_EXPIRES = 3600
-
- def __init__(self, credentials, expires=DEFAULT_EXPIRES):
- self.credentials = credentials
- self._expires = expires
-
- def _get_date(self):
- return str(int(time.time() + int(self._expires)))
-
- def _inject_signature(self, request, signature):
- query_dict = {}
- query_dict['AWSAccessKeyId'] = self.credentials.access_key
- query_dict['Signature'] = signature
-
- for header_key in request.headers:
- lk = header_key.lower()
- # For query string requests, Expires is used instead of the
- # Date header.
- if header_key == 'Date':
- query_dict['Expires'] = request.headers['Date']
- # We only want to include relevant headers in the query string.
- # These can be anything that starts with x-amz, is Content-MD5,
- # or is Content-Type.
- elif lk.startswith('x-amz-') or lk in ['content-md5',
- 'content-type']:
- query_dict[lk] = request.headers[lk]
- # Combine all of the identified headers into an encoded
- # query string
- new_query_string = percent_encode_sequence(query_dict)
-
- # Create a new url with the presigned url.
- p = urlsplit(request.url)
- if p[3]:
- # If there was a pre-existing query string, we should
- # add that back before injecting the new query string.
- new_query_string = '%s&%s' % (p[3], new_query_string)
- new_url_parts = (p[0], p[1], p[2], new_query_string, p[4])
- request.url = urlunsplit(new_url_parts)
-
-
-class HmacV1PostAuth(HmacV1Auth):
- """
- Generates a presigned post for s3.
-
- Spec from this document:
-
- http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingHTTPPOST.html
- """
- def add_auth(self, request):
- fields = {}
- if request.context.get('s3-presign-post-fields', None) is not None:
- fields = request.context['s3-presign-post-fields']
-
- policy = {}
- conditions = []
- if request.context.get('s3-presign-post-policy', None) is not None:
- policy = request.context['s3-presign-post-policy']
- if policy.get('conditions', None) is not None:
- conditions = policy['conditions']
-
- policy['conditions'] = conditions
-
- fields['AWSAccessKeyId'] = self.credentials.access_key
-
- if self.credentials.token is not None:
- fields['x-amz-security-token'] = self.credentials.token
- conditions.append({'x-amz-security-token': self.credentials.token})
-
- # Dump the base64 encoded policy into the fields dictionary.
- fields['policy'] = base64.b64encode(
- json.dumps(policy).encode('utf-8')).decode('utf-8')
-
- fields['signature'] = self.sign_string(fields['policy'])
-
- request.context['s3-presign-post-fields'] = fields
- request.context['s3-presign-post-policy'] = policy
-
-
-# Defined at the bottom instead of the top of the module because the Auth
-# classes weren't defined yet.
-AUTH_TYPE_MAPS = {
- 'v2': SigV2Auth,
- 'v4': SigV4Auth,
- 'v4-query': SigV4QueryAuth,
- 'v3': SigV3Auth,
- 'v3https': SigV3Auth,
- 's3': HmacV1Auth,
- 's3-query': HmacV1QueryAuth,
- 's3-presign-post': HmacV1PostAuth,
- 's3v4': S3SigV4Auth,
- 's3v4-query': S3SigV4QueryAuth,
- 's3v4-presign-post': S3SigV4PostAuth,
-
-}
diff --git a/.eggs/botocore-1.10.75-py2.7.egg/botocore/awsrequest.py b/.eggs/botocore-1.10.75-py2.7.egg/botocore/awsrequest.py
deleted file mode 100644
index c26ebc07..00000000
--- a/.eggs/botocore-1.10.75-py2.7.egg/botocore/awsrequest.py
+++ /dev/null
@@ -1,455 +0,0 @@
-# Copyright (c) 2012-2013 Mitch Garnaat http://garnaat.org/
-# Copyright 2012-2014 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"). You
-# may not use this file except in compliance with the License. A copy of
-# the License is located at
-#
-# http://aws.amazon.com/apache2.0/
-#
-# or in the "license" file accompanying this file. This file 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.
-import sys
-import logging
-import select
-import functools
-import socket
-import inspect
-
-from botocore.compat import six
-from botocore.compat import HTTPHeaders, HTTPResponse, urlunsplit, urlsplit,\
- urlparse
-from botocore.exceptions import UnseekableStreamError
-from botocore.utils import percent_encode_sequence
-from botocore.vendored.requests import models
-from botocore.vendored.requests.sessions import REDIRECT_STATI
-from botocore.vendored.requests.packages.urllib3.connection import \
- VerifiedHTTPSConnection
-from botocore.vendored.requests.packages.urllib3.connection import \
- HTTPConnection
-from botocore.vendored.requests.packages.urllib3.connectionpool import \
- HTTPConnectionPool
-from botocore.vendored.requests.packages.urllib3.connectionpool import \
- HTTPSConnectionPool
-
-
-logger = logging.getLogger(__name__)
-
-
-class AWSHTTPResponse(HTTPResponse):
- # The *args, **kwargs is used because the args are slightly
- # different in py2.6 than in py2.7/py3.
- def __init__(self, *args, **kwargs):
- self._status_tuple = kwargs.pop('status_tuple')
- HTTPResponse.__init__(self, *args, **kwargs)
-
- def _read_status(self):
- if self._status_tuple is not None:
- status_tuple = self._status_tuple
- self._status_tuple = None
- return status_tuple
- else:
- return HTTPResponse._read_status(self)
-
-
-class AWSHTTPConnection(HTTPConnection):
- """HTTPConnection that supports Expect 100-continue.
-
- This is conceptually a subclass of httplib.HTTPConnection (though
- technically we subclass from urllib3, which subclasses
- httplib.HTTPConnection) and we only override this class to support Expect
- 100-continue, which we need for S3. As far as I can tell, this is
- general purpose enough to not be specific to S3, but I'm being
- tentative and keeping it in botocore because I've only tested
- this against AWS services.
-
- """
- def __init__(self, *args, **kwargs):
- HTTPConnection.__init__(self, *args, **kwargs)
- self._original_response_cls = self.response_class
- # We'd ideally hook into httplib's states, but they're all
- # __mangled_vars so we use our own state var. This variable is set
- # when we receive an early response from the server. If this value is
- # set to True, any calls to send() are noops. This value is reset to
- # false every time _send_request is called. This is to workaround the
- # fact that py2.6 (and only py2.6) has a separate send() call for the
- # body in _send_request, as opposed to endheaders(), which is where the
- # body is sent in all versions > 2.6.
- self._response_received = False
- self._expect_header_set = False
-
- def close(self):
- HTTPConnection.close(self)
- # Reset all of our instance state we were tracking.
- self._response_received = False
- self._expect_header_set = False
- self.response_class = self._original_response_cls
-
- def _tunnel(self):
- # Works around a bug in py26 which is fixed in later versions of
- # python. Bug involves hitting an infinite loop if readline() returns
- # nothing as opposed to just ``\r\n``.
- # As much as I don't like having if py2: code blocks, this seems
- # the cleanest way to handle this workaround. Fortunately, the
- # difference from py26 to py3 is very minimal. We're essentially
- # just overriding the while loop.
- if sys.version_info[:2] != (2, 6):
- return HTTPConnection._tunnel(self)
-
- # Otherwise we workaround the issue.
- self._set_hostport(self._tunnel_host, self._tunnel_port)
- self.send("CONNECT %s:%d HTTP/1.0\r\n" % (self.host, self.port))
- for header, value in self._tunnel_headers.iteritems():
- self.send("%s: %s\r\n" % (header, value))
- self.send("\r\n")
- response = self.response_class(self.sock, strict=self.strict,
- method=self._method)
- (version, code, message) = response._read_status()
-
- if code != 200:
- self.close()
- raise socket.error("Tunnel connection failed: %d %s" %
- (code, message.strip()))
- while True:
- line = response.fp.readline()
- if not line:
- break
- if line in (b'\r\n', b'\n', b''):
- break
-
- def _send_request(self, method, url, body, headers, *args, **kwargs):
- self._response_received = False
- if headers.get('Expect', b'') == b'100-continue':
- self._expect_header_set = True
- else:
- self._expect_header_set = False
- self.response_class = self._original_response_cls
- rval = HTTPConnection._send_request(
- self, method, url, body, headers, *args, **kwargs)
- self._expect_header_set = False
- return rval
-
- def _convert_to_bytes(self, mixed_buffer):
- # Take a list of mixed str/bytes and convert it
- # all into a single bytestring.
- # Any six.text_types will be encoded as utf-8.
- bytes_buffer = []
- for chunk in mixed_buffer:
- if isinstance(chunk, six.text_type):
- bytes_buffer.append(chunk.encode('utf-8'))
- else:
- bytes_buffer.append(chunk)
- msg = b"\r\n".join(bytes_buffer)
- return msg
-
- def _send_output(self, message_body=None, *args, **kwargs):
- self._buffer.extend((b"", b""))
- msg = self._convert_to_bytes(self._buffer)
- del self._buffer[:]
- # If msg and message_body are sent in a single send() call,
- # it will avoid performance problems caused by the interaction
- # between delayed ack and the Nagle algorithm.
- if isinstance(message_body, bytes):
- msg += message_body
- message_body = None
- self.send(msg)
- if self._expect_header_set:
- # This is our custom behavior. If the Expect header was
- # set, it will trigger this custom behavior.
- logger.debug("Waiting for 100 Continue response.")
- # Wait for 1 second for the server to send a response.
- read, write, exc = select.select([self.sock], [], [self.sock], 1)
- if read:
- self._handle_expect_response(message_body)
- return
- else:
- # From the RFC:
- # Because of the presence of older implementations, the
- # protocol allows ambiguous situations in which a client may
- # send "Expect: 100-continue" without receiving either a 417
- # (Expectation Failed) status or a 100 (Continue) status.
- # Therefore, when a client sends this header field to an origin
- # server (possibly via a proxy) from which it has never seen a
- # 100 (Continue) status, the client SHOULD NOT wait for an
- # indefinite period before sending the request body.
- logger.debug("No response seen from server, continuing to "
- "send the response body.")
- if message_body is not None:
- # message_body was not a string (i.e. it is a file), and
- # we must run the risk of Nagle.
- self.send(message_body)
-
- def _consume_headers(self, fp):
- # Most servers (including S3) will just return
- # the CLRF after the 100 continue response. However,
- # some servers (I've specifically seen this for squid when
- # used as a straight HTTP proxy) will also inject a
- # Connection: keep-alive header. To account for this
- # we'll read until we read '\r\n', and ignore any headers
- # that come immediately after the 100 continue response.
- current = None
- while current != b'\r\n':
- current = fp.readline()
-
- def _handle_expect_response(self, message_body):
- # This is called when we sent the request headers containing
- # an Expect: 100-continue header and received a response.
- # We now need to figure out what to do.
- fp = self.sock.makefile('rb', 0)
- try:
- maybe_status_line = fp.readline()
- parts = maybe_status_line.split(None, 2)
- if self._is_100_continue_status(maybe_status_line):
- self._consume_headers(fp)
- logger.debug("100 Continue response seen, "
- "now sending request body.")
- self._send_message_body(message_body)
- elif len(parts) == 3 and parts[0].startswith(b'HTTP/'):
- # From the RFC:
- # Requirements for HTTP/1.1 origin servers:
- #
- # - Upon receiving a request which includes an Expect
- # request-header field with the "100-continue"
- # expectation, an origin server MUST either respond with
- # 100 (Continue) status and continue to read from the
- # input stream, or respond with a final status code.
- #
- # So if we don't get a 100 Continue response, then
- # whatever the server has sent back is the final response
- # and don't send the message_body.
- logger.debug("Received a non 100 Continue response "
- "from the server, NOT sending request body.")
- status_tuple = (parts[0].decode('ascii'),
- int(parts[1]), parts[2].decode('ascii'))
- response_class = functools.partial(
- AWSHTTPResponse, status_tuple=status_tuple)
- self.response_class = response_class
- self._response_received = True
- finally:
- fp.close()
-
- def _send_message_body(self, message_body):
- if message_body is not None:
- self.send(message_body)
-
- def send(self, str):
- if self._response_received:
- logger.debug("send() called, but reseponse already received. "
- "Not sending data.")
- return
- return HTTPConnection.send(self, str)
-
- def _is_100_continue_status(self, maybe_status_line):
- parts = maybe_status_line.split(None, 2)
- # Check for HTTP/ 100 Continue\r\n
- return (
- len(parts) >= 3 and parts[0].startswith(b'HTTP/') and
- parts[1] == b'100')
-
-
-class AWSHTTPSConnection(VerifiedHTTPSConnection):
- pass
-
-
-# Now we need to set the methods we overrode from AWSHTTPConnection
-# onto AWSHTTPSConnection. This is just a shortcut to avoid
-# copy/pasting the same code into AWSHTTPSConnection.
-for name, function in AWSHTTPConnection.__dict__.items():
- if inspect.isfunction(function):
- setattr(AWSHTTPSConnection, name, function)
-
-
-def prepare_request_dict(request_dict, endpoint_url, context=None,
- user_agent=None):
- """
- This method prepares a request dict to be created into an
- AWSRequestObject. This prepares the request dict by adding the
- url and the user agent to the request dict.
-
- :type request_dict: dict
- :param request_dict: The request dict (created from the
- ``serialize`` module).
-
- :type user_agent: string
- :param user_agent: The user agent to use for this request.
-
- :type endpoint_url: string
- :param endpoint_url: The full endpoint url, which contains at least
- the scheme, the hostname, and optionally any path components.
- """
- r = request_dict
- if user_agent is not None:
- headers = r['headers']
- headers['User-Agent'] = user_agent
- url = _urljoin(endpoint_url, r['url_path'])
- if r['query_string']:
- encoded_query_string = percent_encode_sequence(r['query_string'])
- if '?' not in url:
- url += '?%s' % encoded_query_string
- else:
- url += '&%s' % encoded_query_string
- r['url'] = url
- r['context'] = context
- if context is None:
- r['context'] = {}
-
-
-def create_request_object(request_dict):
- """
- This method takes a request dict and creates an AWSRequest object
- from it.
-
- :type request_dict: dict
- :param request_dict: The request dict (created from the
- ``prepare_request_dict`` method).
-
- :rtype: ``botocore.awsrequest.AWSRequest``
- :return: An AWSRequest object based on the request_dict.
-
- """
- r = request_dict
- request_object = AWSRequest(
- method=r['method'], url=r['url'], data=r['body'], headers=r['headers'])
- request_object.context.update(r['context'])
- return request_object
-
-
-def _urljoin(endpoint_url, url_path):
- p = urlsplit(endpoint_url)
- # -
- # scheme - p[0]
- # netloc - p[1]
- # path - p[2]
- # query - p[3]
- # fragment - p[4]
- if not url_path or url_path == '/':
- # If there's no path component, ensure the URL ends with
- # a '/' for backwards compatibility.
- if not p[2]:
- return endpoint_url + '/'
- return endpoint_url
- if p[2].endswith('/') and url_path.startswith('/'):
- new_path = p[2][:-1] + url_path
- else:
- new_path = p[2] + url_path
- reconstructed = urlunsplit((p[0], p[1], new_path, p[3], p[4]))
- return reconstructed
-
-
-class AWSRequest(models.RequestEncodingMixin, models.Request):
- def __init__(self, *args, **kwargs):
- self.auth_path = None
- if 'auth_path' in kwargs:
- self.auth_path = kwargs['auth_path']
- del kwargs['auth_path']
- models.Request.__init__(self, *args, **kwargs)
- headers = HTTPHeaders()
- if self.headers is not None:
- for key, value in self.headers.items():
- headers[key] = value
- self.headers = headers
- # This is a dictionary to hold information that is used when
- # processing the request. What is inside of ``context`` is open-ended.
- # For example, it may have a timestamp key that is used for holding
- # what the timestamp is when signing the request. Note that none
- # of the information that is inside of ``context`` is directly
- # sent over the wire; the information is only used to assist in
- # creating what is sent over the wire.
- self.context = {}
-
- def prepare(self):
- """Constructs a :class:`AWSPreparedRequest `."""
- # Eventually I think it would be nice to add hooks into this process.
- p = AWSPreparedRequest(self)
- p.prepare_method(self.method)
- p.prepare_url(self.url, self.params)
- p.prepare_headers(self.headers)
- p.prepare_cookies(self.cookies)
- p.prepare_body(self.data, self.files)
- p.prepare_auth(self.auth)
- return p
-
- @property
- def body(self):
- p = models.PreparedRequest()
- p.prepare_headers({})
- p.prepare_body(self.data, self.files)
- if isinstance(p.body, six.text_type):
- p.body = p.body.encode('utf-8')
- return p.body
-
-
-class AWSPreparedRequest(models.PreparedRequest):
- """Represents a prepared request.
-
- :ivar method: HTTP Method
- :ivar url: The full url
- :ivar headers: The HTTP headers to send.
- :ivar body: The HTTP body.
- :ivar hooks: The set of callback hooks.
-
- In addition to the above attributes, the following attributes are
- available:
-
- :ivar query_params: The original query parameters.
- :ivar post_param: The original POST params (dict).
-
- """
- def __init__(self, original_request):
- self.original = original_request
- super(AWSPreparedRequest, self).__init__()
- self.hooks.setdefault('response', []).append(
- self.reset_stream_on_redirect)
-
- def reset_stream_on_redirect(self, response, **kwargs):
- if response.status_code in REDIRECT_STATI and \
- self._looks_like_file(self.body):
- logger.debug("Redirect received, rewinding stream: %s", self.body)
- self.reset_stream()
-
- def _looks_like_file(self, body):
- return hasattr(body, 'read') and hasattr(body, 'seek')
-
- def reset_stream(self):
- # Trying to reset a stream when there is a no stream will
- # just immediately return. It's not an error, it will produce
- # the same result as if we had actually reset the stream (we'll send
- # the entire body contents again if we need to).
- # Same case if the body is a string/bytes type.
- if self.body is None or isinstance(self.body, six.text_type) or \
- isinstance(self.body, six.binary_type):
- return
- try:
- logger.debug("Rewinding stream: %s", self.body)
- self.body.seek(0)
- except Exception as e:
- logger.debug("Unable to rewind stream: %s", e)
- raise UnseekableStreamError(stream_object=self.body)
-
- def prepare_body(self, data, files, json=None):
- """Prepares the given HTTP body data."""
- super(AWSPreparedRequest, self).prepare_body(data, files, json)
-
- # Calculate the Content-Length by trying to seek the file as
- # requests cannot determine content length for some seekable file-like
- # objects.
- if 'Content-Length' not in self.headers:
- if hasattr(data, 'seek') and hasattr(data, 'tell'):
- orig_pos = data.tell()
- data.seek(0, 2)
- end_file_pos = data.tell()
- self.headers['Content-Length'] = str(end_file_pos - orig_pos)
- data.seek(orig_pos)
- # If the Content-Length was added this way, a
- # Transfer-Encoding was added by requests because it did
- # not add a Content-Length header. However, the
- # Transfer-Encoding header is not supported for
- # AWS Services so remove it if it is added.
- if 'Transfer-Encoding' in self.headers:
- self.headers.pop('Transfer-Encoding')
-
-
-HTTPSConnectionPool.ConnectionCls = AWSHTTPSConnection
-HTTPConnectionPool.ConnectionCls = AWSHTTPConnection
diff --git a/.eggs/botocore-1.10.75-py2.7.egg/botocore/client.py b/.eggs/botocore-1.10.75-py2.7.egg/botocore/client.py
deleted file mode 100644
index d34d4b1a..00000000
--- a/.eggs/botocore-1.10.75-py2.7.egg/botocore/client.py
+++ /dev/null
@@ -1,864 +0,0 @@
-# Copyright 2014 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"). You
-# may not use this file except in compliance with the License. A copy of
-# the License is located at
-#
-# http://aws.amazon.com/apache2.0/
-#
-# or in the "license" file accompanying this file. This file 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.
-import logging
-import functools
-
-from botocore import waiter, xform_name
-from botocore.auth import AUTH_TYPE_MAPS
-from botocore.awsrequest import prepare_request_dict
-from botocore.docs.docstring import ClientMethodDocstring
-from botocore.docs.docstring import PaginatorDocstring
-from botocore.exceptions import ClientError, DataNotFoundError
-from botocore.exceptions import OperationNotPageableError
-from botocore.exceptions import UnknownSignatureVersionError
-from botocore.hooks import first_non_none_response
-from botocore.model import ServiceModel
-from botocore.paginate import Paginator
-from botocore.utils import CachedProperty
-from botocore.utils import get_service_module_name
-from botocore.utils import switch_host_s3_accelerate
-from botocore.utils import S3RegionRedirector
-from botocore.utils import fix_s3_host
-from botocore.utils import switch_to_virtual_host_style
-from botocore.utils import S3_ACCELERATE_WHITELIST
-from botocore.args import ClientArgsCreator
-from botocore.compat import urlsplit
-from botocore import UNSIGNED
-# Keep this imported. There's pre-existing code that uses
-# "from botocore.client import Config".
-from botocore.config import Config
-from botocore.history import get_global_history_recorder
-
-
-logger = logging.getLogger(__name__)
-history_recorder = get_global_history_recorder()
-
-
-class ClientCreator(object):
- """Creates client objects for a service."""
- def __init__(self, loader, endpoint_resolver, user_agent, event_emitter,
- retry_handler_factory, retry_config_translator,
- response_parser_factory=None, exceptions_factory=None):
- self._loader = loader
- self._endpoint_resolver = endpoint_resolver
- self._user_agent = user_agent
- self._event_emitter = event_emitter
- self._retry_handler_factory = retry_handler_factory
- self._retry_config_translator = retry_config_translator
- self._response_parser_factory = response_parser_factory
- self._exceptions_factory = exceptions_factory
-
- def create_client(self, service_name, region_name, is_secure=True,
- endpoint_url=None, verify=None,
- credentials=None, scoped_config=None,
- api_version=None,
- client_config=None):
- responses = self._event_emitter.emit(
- 'choose-service-name', service_name=service_name)
- service_name = first_non_none_response(responses, default=service_name)
- service_model = self._load_service_model(service_name, api_version)
- cls = self._create_client_class(service_name, service_model)
- endpoint_bridge = ClientEndpointBridge(
- self._endpoint_resolver, scoped_config, client_config,
- service_signing_name=service_model.metadata.get('signingName'))
- client_args = self._get_client_args(
- service_model, region_name, is_secure, endpoint_url,
- verify, credentials, scoped_config, client_config, endpoint_bridge)
- service_client = cls(**client_args)
- self._register_retries(service_client)
- self._register_s3_events(
- service_client, endpoint_bridge, endpoint_url, client_config,
- scoped_config)
- return service_client
-
- def create_client_class(self, service_name, api_version=None):
- service_model = self._load_service_model(service_name, api_version)
- return self._create_client_class(service_name, service_model)
-
- def _create_client_class(self, service_name, service_model):
- class_attributes = self._create_methods(service_model)
- py_name_to_operation_name = self._create_name_mapping(service_model)
- class_attributes['_PY_TO_OP_NAME'] = py_name_to_operation_name
- bases = [BaseClient]
- self._event_emitter.emit('creating-client-class.%s' % service_name,
- class_attributes=class_attributes,
- base_classes=bases)
- class_name = get_service_module_name(service_model)
- cls = type(str(class_name), tuple(bases), class_attributes)
- return cls
-
- def _load_service_model(self, service_name, api_version=None):
- json_model = self._loader.load_service_model(service_name, 'service-2',
- api_version=api_version)
- service_model = ServiceModel(json_model, service_name=service_name)
- return service_model
-
- def _register_retries(self, client):
- endpoint_prefix = client.meta.service_model.endpoint_prefix
-
- # First, we load the entire retry config for all services,
- # then pull out just the information we need.
- original_config = self._loader.load_data('_retry')
- if not original_config:
- return
-
- retry_config = self._retry_config_translator.build_retry_config(
- endpoint_prefix, original_config.get('retry', {}),
- original_config.get('definitions', {}),
- client.meta.config.retries
- )
-
- logger.debug("Registering retry handlers for service: %s",
- client.meta.service_model.service_name)
- handler = self._retry_handler_factory.create_retry_handler(
- retry_config, endpoint_prefix)
- unique_id = 'retry-config-%s' % endpoint_prefix
- client.meta.events.register('needs-retry.%s' % endpoint_prefix,
- handler, unique_id=unique_id)
-
- def _register_s3_events(self, client, endpoint_bridge, endpoint_url,
- client_config, scoped_config):
- if client.meta.service_model.service_name != 's3':
- return
- S3RegionRedirector(endpoint_bridge, client).register()
- self._set_s3_addressing_style(
- endpoint_url, client.meta.config.s3, client.meta.events,
- client.meta.partition
- )
- # Enable accelerate if the configuration is set to to true or the
- # endpoint being used matches one of the accelerate endpoints.
- if self._is_s3_accelerate(endpoint_url, client.meta.config.s3):
- # Also make sure that the hostname gets switched to
- # s3-accelerate.amazonaws.com
- client.meta.events.register_first(
- 'before-sign.s3', switch_host_s3_accelerate)
-
- self._set_s3_presign_signature_version(
- client.meta, client_config, scoped_config)
-
- def _set_s3_addressing_style(self, endpoint_url, s3_config, event_emitter,
- partition):
- if s3_config is None:
- s3_config = {}
-
- addressing_style = self._get_s3_addressing_style(
- endpoint_url, s3_config)
- handler = self._get_s3_addressing_handler(
- endpoint_url, s3_config, addressing_style, partition)
- if handler is not None:
- event_emitter.register('before-sign.s3', handler)
-
- def _get_s3_addressing_style(self, endpoint_url, s3_config):
- # Use virtual host style addressing if accelerate is enabled or if
- # the given endpoint url is an accelerate endpoint.
- accelerate = s3_config.get('use_accelerate_endpoint', False)
- if accelerate or self._is_s3_accelerate(endpoint_url, s3_config):
- return 'virtual'
-
- # If a particular addressing style is configured, use it.
- configured_addressing_style = s3_config.get('addressing_style')
- if configured_addressing_style:
- return configured_addressing_style
-
- def _get_s3_addressing_handler(self, endpoint_url, s3_config,
- addressing_style, partition):
- # If virtual host style was configured, use it regardless of whether
- # or not the bucket looks dns compatible.
- if addressing_style == 'virtual':
- logger.debug("Using S3 virtual host style addressing.")
- return switch_to_virtual_host_style
-
- # If path style is configured, no additional steps are needed. If
- # endpoint_url was specified, don't default to virtual. We could
- # potentially default provided endpoint urls to virtual hosted
- # style, but for now it is avoided.
- if addressing_style == 'path' or endpoint_url is not None:
- logger.debug("Using S3 path style addressing.")
- return None
-
- logger.debug("Defaulting to S3 virtual host style addressing with "
- "path style addressing fallback.")
-
- # By default, try to use virtual style with path fallback.
- return fix_s3_host
-
- def _is_s3_accelerate(self, endpoint_url, s3_config):
- # Accelerate has been explicitly configured.
- if s3_config is not None and s3_config.get('use_accelerate_endpoint'):
- return True
-
- # Accelerate mode is turned on automatically if an endpoint url is
- # provided that matches the accelerate scheme.
- if endpoint_url is None:
- return False
-
- # Accelerate is only valid for Amazon endpoints.
- netloc = urlsplit(endpoint_url).netloc
- if not netloc.endswith('amazonaws.com'):
- return False
-
- # The first part of the url should always be s3-accelerate.
- parts = netloc.split('.')
- if parts[0] != 's3-accelerate':
- return False
-
- # Url parts between 's3-accelerate' and 'amazonaws.com' which
- # represent different url features.
- feature_parts = parts[1:-2]
-
- # There should be no duplicate url parts.
- if len(feature_parts) != len(set(feature_parts)):
- return False
-
- # Remaining parts must all be in the whitelist.
- return all(p in S3_ACCELERATE_WHITELIST for p in feature_parts)
-
- def _set_s3_presign_signature_version(self, client_meta,
- client_config, scoped_config):
- # This will return the manually configured signature version, or None
- # if none was manually set. If a customer manually sets the signature
- # version, we always want to use what they set.
- provided_signature_version = _get_configured_signature_version(
- 's3', client_config, scoped_config)
- if provided_signature_version is not None:
- return
-
- # Check to see if the region is a region that we know about. If we
- # don't know about a region, then we can safely assume it's a new
- # region that is sigv4 only, since all new S3 regions only allow sigv4.
- regions = self._endpoint_resolver.get_available_endpoints(
- 's3', client_meta.partition)
- if client_meta.region_name not in regions:
- return
-
- # If it is a region we know about, we want to default to sigv2, so here
- # we check to see if it is available.
- endpoint = self._endpoint_resolver.construct_endpoint(
- 's3', client_meta.region_name)
- signature_versions = endpoint['signatureVersions']
- if 's3' not in signature_versions:
- return
-
- # We now know that we're in a known region that supports sigv2 and
- # the customer hasn't set a signature version so we default the
- # signature version to sigv2.
- client_meta.events.register(
- 'choose-signer.s3', self._default_s3_presign_to_sigv2)
-
- def _default_s3_presign_to_sigv2(self, signature_version, **kwargs):
- """
- Returns the 's3' (sigv2) signer if presigning an s3 request. This is
- intended to be used to set the default signature version for the signer
- to sigv2.
-
- :type signature_version: str
- :param signature_version: The current client signature version.
-
- :type signing_name: str
- :param signing_name: The signing name of the service.
-
- :return: 's3' if the request is an s3 presign request, None otherwise
- """
- for suffix in ['-query', '-presign-post']:
- if signature_version.endswith(suffix):
- return 's3' + suffix
-
- def _get_client_args(self, service_model, region_name, is_secure,
- endpoint_url, verify, credentials,
- scoped_config, client_config, endpoint_bridge):
- args_creator = ClientArgsCreator(
- self._event_emitter, self._user_agent,
- self._response_parser_factory, self._loader,
- self._exceptions_factory)
- return args_creator.get_client_args(
- service_model, region_name, is_secure, endpoint_url,
- verify, credentials, scoped_config, client_config, endpoint_bridge)
-
- def _create_methods(self, service_model):
- op_dict = {}
- for operation_name in service_model.operation_names:
- py_operation_name = xform_name(operation_name)
- op_dict[py_operation_name] = self._create_api_method(
- py_operation_name, operation_name, service_model)
- return op_dict
-
- def _create_name_mapping(self, service_model):
- # py_name -> OperationName, for every operation available
- # for a service.
- mapping = {}
- for operation_name in service_model.operation_names:
- py_operation_name = xform_name(operation_name)
- mapping[py_operation_name] = operation_name
- return mapping
-
- def _create_api_method(self, py_operation_name, operation_name,
- service_model):
- def _api_call(self, *args, **kwargs):
- # We're accepting *args so that we can give a more helpful
- # error message than TypeError: _api_call takes exactly
- # 1 argument.
- if args:
- raise TypeError(
- "%s() only accepts keyword arguments." % py_operation_name)
- # The "self" in this scope is referring to the BaseClient.
- return self._make_api_call(operation_name, kwargs)
-
- _api_call.__name__ = str(py_operation_name)
-
- # Add the docstring to the client method
- operation_model = service_model.operation_model(operation_name)
- docstring = ClientMethodDocstring(
- operation_model=operation_model,
- method_name=operation_name,
- event_emitter=self._event_emitter,
- method_description=operation_model.documentation,
- example_prefix='response = client.%s' % py_operation_name,
- include_signature=False
- )
- _api_call.__doc__ = docstring
- return _api_call
-
-
-class ClientEndpointBridge(object):
- """Bridges endpoint data and client creation
-
- This class handles taking out the relevant arguments from the endpoint
- resolver and determining which values to use, taking into account any
- client configuration options and scope configuration options.
-
- This class also handles determining what, if any, region to use if no
- explicit region setting is provided. For example, Amazon S3 client will
- utilize "us-east-1" by default if no region can be resolved."""
-
- DEFAULT_ENDPOINT = '{service}.{region}.amazonaws.com'
-
- def __init__(self, endpoint_resolver, scoped_config=None,
- client_config=None, default_endpoint=None,
- service_signing_name=None):
- self.service_signing_name = service_signing_name
- self.endpoint_resolver = endpoint_resolver
- self.scoped_config = scoped_config
- self.client_config = client_config
- self.default_endpoint = default_endpoint or self.DEFAULT_ENDPOINT
-
- def resolve(self, service_name, region_name=None, endpoint_url=None,
- is_secure=True):
- region_name = self._check_default_region(service_name, region_name)
- resolved = self.endpoint_resolver.construct_endpoint(
- service_name, region_name)
- if resolved:
- return self._create_endpoint(
- resolved, service_name, region_name, endpoint_url, is_secure)
- else:
- return self._assume_endpoint(service_name, region_name,
- endpoint_url, is_secure)
-
- def _check_default_region(self, service_name, region_name):
- if region_name is not None:
- return region_name
- # Use the client_config region if no explicit region was provided.
- if self.client_config and self.client_config.region_name is not None:
- return self.client_config.region_name
-
- def _create_endpoint(self, resolved, service_name, region_name,
- endpoint_url, is_secure):
- region_name, signing_region = self._pick_region_values(
- resolved, region_name, endpoint_url)
- if endpoint_url is None:
- if self._is_s3_dualstack_mode(service_name):
- endpoint_url = self._create_dualstack_endpoint(
- service_name, region_name,
- resolved['dnsSuffix'], is_secure)
- else:
- # Use the sslCommonName over the hostname for Python 2.6 compat.
- hostname = resolved.get('sslCommonName', resolved.get('hostname'))
- endpoint_url = self._make_url(hostname, is_secure,
- resolved.get('protocols', []))
- signature_version = self._resolve_signature_version(
- service_name, resolved)
- signing_name = self._resolve_signing_name(service_name, resolved)
- return self._create_result(
- service_name=service_name, region_name=region_name,
- signing_region=signing_region, signing_name=signing_name,
- endpoint_url=endpoint_url, metadata=resolved,
- signature_version=signature_version)
-
- def _is_s3_dualstack_mode(self, service_name):
- if service_name != 's3':
- return False
- # TODO: This normalization logic is duplicated from the
- # ClientArgsCreator class. Consolidate everything to
- # ClientArgsCreator. _resolve_signature_version also has similarly
- # duplicated logic.
- client_config = self.client_config
- if client_config is not None and client_config.s3 is not None and \
- 'use_dualstack_endpoint' in client_config.s3:
- # Client config trumps scoped config.
- return client_config.s3['use_dualstack_endpoint']
- if self.scoped_config is None:
- return False
- enabled = self.scoped_config.get('s3', {}).get(
- 'use_dualstack_endpoint', False)
- if enabled in [True, 'True', 'true']:
- return True
- return False
-
- def _create_dualstack_endpoint(self, service_name, region_name,
- dns_suffix, is_secure):
- hostname = '{service}.dualstack.{region}.{dns_suffix}'.format(
- service=service_name, region=region_name,
- dns_suffix=dns_suffix)
- # Dualstack supports http and https so were hardcoding this value for
- # now. This can potentially move into the endpoints.json file.
- return self._make_url(hostname, is_secure, ['http', 'https'])
-
- def _assume_endpoint(self, service_name, region_name, endpoint_url,
- is_secure):
- if endpoint_url is None:
- # Expand the default hostname URI template.
- hostname = self.default_endpoint.format(
- service=service_name, region=region_name)
- endpoint_url = self._make_url(hostname, is_secure,
- ['http', 'https'])
- logger.debug('Assuming an endpoint for %s, %s: %s',
- service_name, region_name, endpoint_url)
- # We still want to allow the user to provide an explicit version.
- signature_version = self._resolve_signature_version(
- service_name, {'signatureVersions': ['v4']})
- signing_name = self._resolve_signing_name(service_name, resolved={})
- return self._create_result(
- service_name=service_name, region_name=region_name,
- signing_region=region_name, signing_name=signing_name,
- signature_version=signature_version, endpoint_url=endpoint_url,
- metadata={})
-
- def _create_result(self, service_name, region_name, signing_region,
- signing_name, endpoint_url, signature_version,
- metadata):
- return {
- 'service_name': service_name,
- 'region_name': region_name,
- 'signing_region': signing_region,
- 'signing_name': signing_name,
- 'endpoint_url': endpoint_url,
- 'signature_version': signature_version,
- 'metadata': metadata
- }
-
- def _make_url(self, hostname, is_secure, supported_protocols):
- if is_secure and 'https' in supported_protocols:
- scheme = 'https'
- else:
- scheme = 'http'
- return '%s://%s' % (scheme, hostname)
-
- def _resolve_signing_name(self, service_name, resolved):
- # CredentialScope overrides everything else.
- if 'credentialScope' in resolved \
- and 'service' in resolved['credentialScope']:
- return resolved['credentialScope']['service']
- # Use the signingName from the model if present.
- if self.service_signing_name:
- return self.service_signing_name
- # Just assume is the same as the service name.
- return service_name
-
- def _pick_region_values(self, resolved, region_name, endpoint_url):
- signing_region = region_name
- if endpoint_url is None:
- # Do not use the region name or signing name from the resolved
- # endpoint if the user explicitly provides an endpoint_url. This
- # would happen if we resolve to an endpoint where the service has
- # a "defaults" section that overrides all endpoint with a single
- # hostname and credentialScope. This has been the case historically
- # for how STS has worked. The only way to resolve an STS endpoint
- # was to provide a region_name and an endpoint_url. In that case,
- # we would still resolve an endpoint, but we would not use the
- # resolved endpointName or signingRegion because we want to allow
- # custom endpoints.
- region_name = resolved['endpointName']
- signing_region = region_name
- if 'credentialScope' in resolved \
- and 'region' in resolved['credentialScope']:
- signing_region = resolved['credentialScope']['region']
- return region_name, signing_region
-
- def _resolve_signature_version(self, service_name, resolved):
- configured_version = _get_configured_signature_version(
- service_name, self.client_config, self.scoped_config)
- if configured_version is not None:
- return configured_version
-
- # Pick a signature version from the endpoint metadata if present.
- if 'signatureVersions' in resolved:
- potential_versions = resolved['signatureVersions']
- if service_name == 's3':
- return 's3v4'
- if 'v4' in potential_versions:
- return 'v4'
- # Now just iterate over the signature versions in order until we
- # find the first one that is known to Botocore.
- for known in AUTH_TYPE_MAPS:
- if known in potential_versions:
- return known
- raise UnknownSignatureVersionError(
- signature_version=resolved.get('signatureVersions'))
-
-
-class BaseClient(object):
-
- # This is actually reassigned with the py->op_name mapping
- # when the client creator creates the subclass. This value is used
- # because calls such as client.get_paginator('list_objects') use the
- # snake_case name, but we need to know the ListObjects form.
- # xform_name() does the ListObjects->list_objects conversion, but
- # we need the reverse mapping here.
- _PY_TO_OP_NAME = {}
-
- def __init__(self, serializer, endpoint, response_parser,
- event_emitter, request_signer, service_model, loader,
- client_config, partition, exceptions_factory):
- self._serializer = serializer
- self._endpoint = endpoint
- self._response_parser = response_parser
- self._request_signer = request_signer
- self._cache = {}
- self._loader = loader
- self._client_config = client_config
- self.meta = ClientMeta(event_emitter, self._client_config,
- endpoint.host, service_model,
- self._PY_TO_OP_NAME, partition)
- self._exceptions_factory = exceptions_factory
- self._exceptions = None
- self._register_handlers()
-
- def __getattr__(self, item):
- event_name = 'getattr.%s.%s' % (self._service_model.service_name, item)
- handler, event_response = self.meta.events.emit_until_response(
- event_name, client=self)
-
- if event_response is not None:
- return event_response
-
- raise AttributeError(
- "'%s' object has no attribute '%s'" % (
- self.__class__.__name__, item)
- )
-
- def _register_handlers(self):
- # Register the handler required to sign requests.
- self.meta.events.register('request-created.%s' %
- self.meta.service_model.endpoint_prefix,
- self._request_signer.handler)
-
- @property
- def _service_model(self):
- return self.meta.service_model
-
- def _make_api_call(self, operation_name, api_params):
- operation_model = self._service_model.operation_model(operation_name)
- service_name = self._service_model.service_name
- history_recorder.record('API_CALL', {
- 'service': service_name,
- 'operation': operation_name,
- 'params': api_params,
- })
- if operation_model.deprecated:
- logger.debug('Warning: %s.%s() is deprecated',
- service_name, operation_name)
- request_context = {
- 'client_region': self.meta.region_name,
- 'client_config': self.meta.config,
- 'has_streaming_input': operation_model.has_streaming_input,
- 'auth_type': operation_model.auth_type,
- }
- request_dict = self._convert_to_request_dict(
- api_params, operation_model, context=request_context)
-
- handler, event_response = self.meta.events.emit_until_response(
- 'before-call.{endpoint_prefix}.{operation_name}'.format(
- endpoint_prefix=self._service_model.endpoint_prefix,
- operation_name=operation_name),
- model=operation_model, params=request_dict,
- request_signer=self._request_signer, context=request_context)
-
- if event_response is not None:
- http, parsed_response = event_response
- else:
- http, parsed_response = self._endpoint.make_request(
- operation_model, request_dict)
-
- self.meta.events.emit(
- 'after-call.{endpoint_prefix}.{operation_name}'.format(
- endpoint_prefix=self._service_model.endpoint_prefix,
- operation_name=operation_name),
- http_response=http, parsed=parsed_response,
- model=operation_model, context=request_context
- )
-
- if http.status_code >= 300:
- error_code = parsed_response.get("Error", {}).get("Code")
- error_class = self.exceptions.from_code(error_code)
- raise error_class(parsed_response, operation_name)
- else:
- return parsed_response
-
- 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
-
- # Emit an event that allows users to modify the parameters at the
- # beginning of the method. It allows handlers to modify existing
- # parameters or return a new set of parameters to use.
- responses = self.meta.events.emit(
- 'provide-client-params.{endpoint_prefix}.{operation_name}'.format(
- endpoint_prefix=self._service_model.endpoint_prefix,
- operation_name=operation_name),
- params=api_params, model=operation_model, context=context)
- api_params = first_non_none_response(responses, default=api_params)
-
- event_name = (
- 'before-parameter-build.{endpoint_prefix}.{operation_name}')
- self.meta.events.emit(
- event_name.format(
- endpoint_prefix=self._service_model.endpoint_prefix,
- operation_name=operation_name),
- params=api_params, model=operation_model, context=context)
- return api_params
-
- def get_paginator(self, operation_name):
- """Create a paginator for an operation.
-
- :type operation_name: string
- :param operation_name: The operation name. This is the same name
- as the method name on the client. For example, if the
- method name is ``create_foo``, and you'd normally invoke the
- operation as ``client.create_foo(**kwargs)``, if the
- ``create_foo`` operation can be paginated, you can use the
- call ``client.get_paginator("create_foo")``.
-
- :raise OperationNotPageableError: Raised if the operation is not
- pageable. You can use the ``client.can_paginate`` method to
- check if an operation is pageable.
-
- :rtype: L{botocore.paginate.Paginator}
- :return: A paginator object.
-
- """
- if not self.can_paginate(operation_name):
- raise OperationNotPageableError(operation_name=operation_name)
- else:
- actual_operation_name = self._PY_TO_OP_NAME[operation_name]
-
- # Create a new paginate method that will serve as a proxy to
- # the underlying Paginator.paginate method. This is needed to
- # attach a docstring to the method.
- def paginate(self, **kwargs):
- return Paginator.paginate(self, **kwargs)
-
- paginator_config = self._cache['page_config'][
- actual_operation_name]
- # Add the docstring for the paginate method.
- paginate.__doc__ = PaginatorDocstring(
- paginator_name=actual_operation_name,
- event_emitter=self.meta.events,
- service_model=self.meta.service_model,
- paginator_config=paginator_config,
- include_signature=False
- )
-
- # Rename the paginator class based on the type of paginator.
- paginator_class_name = str('%s.Paginator.%s' % (
- get_service_module_name(self.meta.service_model),
- actual_operation_name))
-
- # Create the new paginator class
- documented_paginator_cls = type(
- paginator_class_name, (Paginator,), {'paginate': paginate})
-
- operation_model = self._service_model.operation_model(actual_operation_name)
- paginator = documented_paginator_cls(
- getattr(self, operation_name),
- paginator_config,
- operation_model)
- return paginator
-
- def can_paginate(self, operation_name):
- """Check if an operation can be paginated.
-
- :type operation_name: string
- :param operation_name: The operation name. This is the same name
- as the method name on the client. For example, if the
- method name is ``create_foo``, and you'd normally invoke the
- operation as ``client.create_foo(**kwargs)``, if the
- ``create_foo`` operation can be paginated, you can use the
- call ``client.get_paginator("create_foo")``.
-
- :return: ``True`` if the operation can be paginated,
- ``False`` otherwise.
-
- """
- if 'page_config' not in self._cache:
- try:
- page_config = self._loader.load_service_model(
- self._service_model.service_name,
- 'paginators-1',
- self._service_model.api_version)['pagination']
- self._cache['page_config'] = page_config
- except DataNotFoundError:
- self._cache['page_config'] = {}
- actual_operation_name = self._PY_TO_OP_NAME[operation_name]
- return actual_operation_name in self._cache['page_config']
-
- def _get_waiter_config(self):
- if 'waiter_config' not in self._cache:
- try:
- waiter_config = self._loader.load_service_model(
- self._service_model.service_name,
- 'waiters-2',
- self._service_model.api_version)
- self._cache['waiter_config'] = waiter_config
- except DataNotFoundError:
- self._cache['waiter_config'] = {}
- return self._cache['waiter_config']
-
- def get_waiter(self, waiter_name):
- """Returns an object that can wait for some condition.
-
- :type waiter_name: str
- :param waiter_name: The name of the waiter to get. See the waiters
- section of the service docs for a list of available waiters.
-
- :returns: The specified waiter object.
- :rtype: botocore.waiter.Waiter
- """
- config = self._get_waiter_config()
- if not config:
- raise ValueError("Waiter does not exist: %s" % waiter_name)
- model = waiter.WaiterModel(config)
- mapping = {}
- for name in model.waiter_names:
- mapping[xform_name(name)] = name
- if waiter_name not in mapping:
- raise ValueError("Waiter does not exist: %s" % waiter_name)
-
- return waiter.create_waiter_with_client(
- mapping[waiter_name], model, self)
-
- @CachedProperty
- def waiter_names(self):
- """Returns a list of all available waiters."""
- config = self._get_waiter_config()
- if not config:
- return []
- model = waiter.WaiterModel(config)
- # Waiter configs is a dict, we just want the waiter names
- # which are the keys in the dict.
- return [xform_name(name) for name in model.waiter_names]
-
- @property
- def exceptions(self):
- if self._exceptions is None:
- self._exceptions = self._load_exceptions()
- return self._exceptions
-
- def _load_exceptions(self):
- return self._exceptions_factory.create_client_exceptions(
- self._service_model)
-
-
-class ClientMeta(object):
- """Holds additional client methods.
-
- This class holds additional information for clients. It exists for
- two reasons:
-
- * To give advanced functionality to clients
- * To namespace additional client attributes from the operation
- names which are mapped to methods at runtime. This avoids
- ever running into collisions with operation names.
-
- """
-
- def __init__(self, events, client_config, endpoint_url, service_model,
- method_to_api_mapping, partition):
- self.events = events
- self._client_config = client_config
- self._endpoint_url = endpoint_url
- self._service_model = service_model
- self._method_to_api_mapping = method_to_api_mapping
- self._partition = partition
-
- @property
- def service_model(self):
- return self._service_model
-
- @property
- def region_name(self):
- return self._client_config.region_name
-
- @property
- def endpoint_url(self):
- return self._endpoint_url
-
- @property
- def config(self):
- return self._client_config
-
- @property
- def method_to_api_mapping(self):
- return self._method_to_api_mapping
-
- @property
- def partition(self):
- return self._partition
-
-
-def _get_configured_signature_version(service_name, client_config,
- scoped_config):
- """
- Gets the manually configured signature version.
-
- :returns: the customer configured signature version, or None if no
- signature version was configured.
- """
- # Client config overrides everything.
- if client_config and client_config.signature_version is not None:
- return client_config.signature_version
-
- # Scoped config overrides picking from the endpoint metadata.
- if scoped_config is not None:
- # A given service may have service specific configuration in the
- # config file, so we need to check there as well.
- service_config = scoped_config.get(service_name)
- if service_config is not None and isinstance(service_config, dict):
- version = service_config.get('signature_version')
- if version:
- logger.debug(
- "Switching signature version for service %s "
- "to version %s based on config file override.",
- service_name, version)
- return version
- return None
diff --git a/.eggs/botocore-1.10.75-py2.7.egg/botocore/compat.py b/.eggs/botocore-1.10.75-py2.7.egg/botocore/compat.py
deleted file mode 100644
index edf4df46..00000000
--- a/.eggs/botocore-1.10.75-py2.7.egg/botocore/compat.py
+++ /dev/null
@@ -1,379 +0,0 @@
-# Copyright 2012-2014 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"). You
-# may not use this file except in compliance with the License. A copy of
-# the License is located at
-#
-# http://aws.amazon.com/apache2.0/
-#
-# or in the "license" file accompanying this file. This file 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.
-
-import copy
-import datetime
-import sys
-import inspect
-import warnings
-import hashlib
-import logging
-import shlex
-from math import floor
-
-from botocore.vendored import six
-from botocore.exceptions import MD5UnavailableError
-from botocore.vendored.requests.packages.urllib3 import exceptions
-
-logger = logging.getLogger(__name__)
-
-
-if six.PY3:
- from botocore.vendored.six.moves import http_client
-
- class HTTPHeaders(http_client.HTTPMessage):
- pass
-
- from urllib.parse import quote
- from urllib.parse import urlencode
- from urllib.parse import unquote
- from urllib.parse import unquote_plus
- from urllib.parse import urlparse
- from urllib.parse import urlsplit
- from urllib.parse import urlunsplit
- from urllib.parse import urljoin
- from urllib.parse import parse_qsl
- from urllib.parse import parse_qs
- from http.client import HTTPResponse
- from io import IOBase as _IOBase
- from base64 import encodebytes
- from email.utils import formatdate
- from itertools import zip_longest
- file_type = _IOBase
- zip = zip
-
- # In python3, unquote takes a str() object, url decodes it,
- # then takes the bytestring and decodes it to utf-8.
- # Python2 we'll have to do this ourself (see below).
- unquote_str = unquote_plus
-
- def set_socket_timeout(http_response, timeout):
- """Set the timeout of the socket from an HTTPResponse.
-
- :param http_response: An instance of ``httplib.HTTPResponse``
-
- """
- http_response._fp.fp.raw._sock.settimeout(timeout)
-
- def accepts_kwargs(func):
- # In python3.4.1, there's backwards incompatible
- # changes when using getargspec with functools.partials.
- return inspect.getfullargspec(func)[2]
-
- def ensure_unicode(s, encoding=None, errors=None):
- # NOOP in Python 3, because every string is already unicode
- return s
-
- def ensure_bytes(s, encoding='utf-8', errors='strict'):
- if isinstance(s, str):
- return s.encode(encoding, errors)
- if isinstance(s, bytes):
- return s
- raise ValueError("Expected str or bytes, received %s." % type(s))
-
-else:
- from urllib import quote
- from urllib import urlencode
- from urllib import unquote
- from urllib import unquote_plus
- from urlparse import urlparse
- from urlparse import urlsplit
- from urlparse import urlunsplit
- from urlparse import urljoin
- from urlparse import parse_qsl
- from urlparse import parse_qs
- from email.message import Message
- from email.Utils import formatdate
- file_type = file
- from itertools import izip as zip
- from itertools import izip_longest as zip_longest
- from httplib import HTTPResponse
- from base64 import encodestring as encodebytes
-
- class HTTPHeaders(Message):
-
- # The __iter__ method is not available in python2.x, so we have
- # to port the py3 version.
- def __iter__(self):
- for field, value in self._headers:
- yield field
-
- def unquote_str(value, encoding='utf-8'):
- # In python2, unquote() gives us a string back that has the urldecoded
- # bits, but not the unicode parts. We need to decode this manually.
- # unquote has special logic in which if it receives a unicode object it
- # will decode it to latin1. This is hard coded. To avoid this, we'll
- # encode the string with the passed in encoding before trying to
- # unquote it.
- byte_string = value.encode(encoding)
- return unquote_plus(byte_string).decode(encoding)
-
- def set_socket_timeout(http_response, timeout):
- """Set the timeout of the socket from an HTTPResponse.
-
- :param http_response: An instance of ``httplib.HTTPResponse``
-
- """
- http_response._fp.fp._sock.settimeout(timeout)
-
- def accepts_kwargs(func):
- return inspect.getargspec(func)[2]
-
- def ensure_unicode(s, encoding='utf-8', errors='strict'):
- if isinstance(s, six.text_type):
- return s
- return unicode(s, encoding, errors)
-
- def ensure_bytes(s, encoding='utf-8', errors='strict'):
- if isinstance(s, unicode):
- return s.encode(encoding, errors)
- if isinstance(s, str):
- return s
- raise ValueError("Expected str or unicode, received %s." % type(s))
-
-try:
- from collections import OrderedDict
-except ImportError:
- # Python2.6 we use the 3rd party back port.
- from ordereddict import OrderedDict
-
-
-if sys.version_info[:2] == (2, 6):
- import simplejson as json
- # In py26, invalid xml parsed by element tree
- # will raise a plain old SyntaxError instead of
- # a real exception, so we need to abstract this change.
- XMLParseError = SyntaxError
-
- # Handle https://github.com/shazow/urllib3/issues/497 for py2.6. In
- # python2.6, there is a known issue where sometimes we cannot read the SAN
- # from an SSL cert (http://bugs.python.org/issue13034). However, newer
- # versions of urllib3 will warn you when there is no SAN. While we could
- # just turn off this warning in urllib3 altogether, we _do_ want warnings
- # when they're legitimate warnings. This method tries to scope the warning
- # filter to be as specific as possible.
- def filter_ssl_san_warnings():
- warnings.filterwarnings(
- 'ignore',
- message="Certificate has no.*subjectAltName.*",
- category=exceptions.SecurityWarning,
- module=r".*urllib3\.connection")
-else:
- import xml.etree.cElementTree
- XMLParseError = xml.etree.cElementTree.ParseError
- import json
-
- def filter_ssl_san_warnings():
- # Noop for non-py26 versions. We will parse the SAN
- # appropriately.
- pass
-
-
-def filter_ssl_warnings():
- # Ignore warnings related to SNI as it is not being used in validations.
- warnings.filterwarnings(
- 'ignore',
- message="A true SSLContext object is not available.*",
- category=exceptions.InsecurePlatformWarning,
- module=r".*urllib3\.util\.ssl_")
- filter_ssl_san_warnings()
-
-
-@classmethod
-def from_dict(cls, d):
- new_instance = cls()
- for key, value in d.items():
- new_instance[key] = value
- return new_instance
-
-
-@classmethod
-def from_pairs(cls, pairs):
- new_instance = cls()
- for key, value in pairs:
- new_instance[key] = value
- return new_instance
-
-HTTPHeaders.from_dict = from_dict
-HTTPHeaders.from_pairs = from_pairs
-
-
-def copy_kwargs(kwargs):
- """
- There is a bug in Python versions < 2.6.5 that prevents you
- from passing unicode keyword args (#4978). This function
- takes a dictionary of kwargs and returns a copy. If you are
- using Python < 2.6.5, it also encodes the keys to avoid this bug.
- Oh, and version_info wasn't a namedtuple back then, either!
- """
- vi = sys.version_info
- if vi[0] == 2 and vi[1] <= 6 and vi[3] < 5:
- copy_kwargs = {}
- for key in kwargs:
- copy_kwargs[key.encode('utf-8')] = kwargs[key]
- else:
- copy_kwargs = copy.copy(kwargs)
- return copy_kwargs
-
-
-def total_seconds(delta):
- """
- Returns the total seconds in a ``datetime.timedelta``.
-
- Python 2.6 does not have ``timedelta.total_seconds()``, so we have
- to calculate this ourselves. On 2.7 or better, we'll take advantage of the
- built-in method.
-
- The math was pulled from the ``datetime`` docs
- (http://docs.python.org/2.7/library/datetime.html#datetime.timedelta.total_seconds).
-
- :param delta: The timedelta object
- :type delta: ``datetime.timedelta``
- """
- if sys.version_info[:2] != (2, 6):
- return delta.total_seconds()
-
- day_in_seconds = delta.days * 24 * 3600.0
- micro_in_seconds = delta.microseconds / 10.0**6
- return day_in_seconds + delta.seconds + micro_in_seconds
-
-
-# Checks to see if md5 is available on this system. A given system might not
-# have access to it for various reasons, such as FIPS mode being enabled.
-try:
- hashlib.md5()
- MD5_AVAILABLE = True
-except ValueError:
- MD5_AVAILABLE = False
-
-
-def get_md5(*args, **kwargs):
- """
- Attempts to get an md5 hashing object.
-
- :param raise_error_if_unavailable: raise an error if md5 is unavailable on
- this system. If False, None will be returned if it is unavailable.
- :type raise_error_if_unavailable: bool
- :param args: Args to pass to the MD5 constructor
- :param kwargs: Key word arguments to pass to the MD5 constructor
- :return: An MD5 hashing object if available. If it is unavailable, None
- is returned if raise_error_if_unavailable is set to False.
- """
- if MD5_AVAILABLE:
- return hashlib.md5(*args, **kwargs)
- else:
- raise MD5UnavailableError()
-
-
-def compat_shell_split(s, platform=None):
- if platform is None:
- platform = sys.platform
-
- if platform == "win32":
- return _windows_shell_split(s)
- else:
- return shlex.split(s)
-
-
-def _windows_shell_split(s):
- """Splits up a windows command as the built-in command parser would.
-
- Windows has potentially bizarre rules depending on where you look. When
- spawning a process via the Windows C runtime (which is what python does
- when you call popen) the rules are as follows:
-
- https://docs.microsoft.com/en-us/cpp/cpp/parsing-cpp-command-line-arguments
-
- To summarize:
-
- * Only space and tab are valid delimiters
- * Double quotes are the only valid quotes
- * Backslash is interpreted literally unless it is part of a chain that
- leads up to a double quote. Then the backslashes escape the backslashes,
- and if there is an odd number the final backslash escapes the quote.
-
- :param s: The command string to split up into parts.
- :return: A list of command components.
- """
- if not s:
- return []
-
- components = []
- buff = []
- is_quoted = False
- num_backslashes = 0
- for character in s:
- if character == '\\':
- # We can't simply append backslashes because we don't know if
- # they are being used as escape characters or not. Instead we
- # keep track of how many we've encountered and handle them when
- # we encounter a different character.
- num_backslashes += 1
- elif character == '"':
- if num_backslashes > 0:
- # The backslashes are in a chain leading up to a double
- # quote, so they are escaping each other.
- buff.append('\\' * int(floor(num_backslashes / 2)))
- remainder = num_backslashes % 2
- num_backslashes = 0
- if remainder == 1:
- # The number of backslashes is uneven, so they are also
- # escaping the double quote, so it needs to be added to
- # the current component buffer.
- buff.append('"')
- continue
-
- # We've encountered a double quote that is not escaped,
- # so we toggle is_quoted.
- is_quoted = not is_quoted
-
- # If there are quotes, then we may want an empty string. To be
- # safe, we add an empty string to the buffer so that we make
- # sure it sticks around if there's nothing else between quotes.
- # If there is other stuff between quotes, the empty string will
- # disappear during the joining process.
- buff.append('')
- elif character in [' ', '\t'] and not is_quoted:
- # Since the backslashes aren't leading up to a quote, we put in
- # the exact number of backslashes.
- if num_backslashes > 0:
- buff.append('\\' * num_backslashes)
- num_backslashes = 0
-
- # Excess whitespace is ignored, so only add the components list
- # if there is anything in the buffer.
- if buff:
- components.append(''.join(buff))
- buff = []
- else:
- # Since the backslashes aren't leading up to a quote, we put in
- # the exact number of backslashes.
- if num_backslashes > 0:
- buff.append('\\' * num_backslashes)
- num_backslashes = 0
- buff.append(character)
-
- # Quotes must be terminated.
- if is_quoted:
- raise ValueError('No closing quotation in string: %s' % s)
-
- # There may be some leftover backslashes, so we need to add them in.
- # There's no quote so we add the exact number.
- if num_backslashes > 0:
- buff.append('\\' * num_backslashes)
-
- # Add the final component in if there is anything in the buffer.
- if buff:
- components.append(''.join(buff))
-
- return components
diff --git a/.eggs/botocore-1.10.75-py2.7.egg/botocore/config.py b/.eggs/botocore-1.10.75-py2.7.egg/botocore/config.py
deleted file mode 100644
index 4b2e4c50..00000000
--- a/.eggs/botocore-1.10.75-py2.7.egg/botocore/config.py
+++ /dev/null
@@ -1,208 +0,0 @@
-# Copyright 2016 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"). You
-# may not use this file except in compliance with the License. A copy of
-# the License is located at
-#
-# http://aws.amazon.com/apache2.0/
-#
-# or in the "license" file accompanying this file. This file 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.
-import copy
-from botocore.compat import OrderedDict
-
-from botocore.endpoint import DEFAULT_TIMEOUT, MAX_POOL_CONNECTIONS
-from botocore.exceptions import InvalidS3AddressingStyleError
-from botocore.exceptions import InvalidRetryConfigurationError
-from botocore.exceptions import InvalidMaxRetryAttemptsError
-
-
-class Config(object):
- """Advanced configuration for Botocore clients.
-
- :type region_name: str
- :param region_name: The region to use in instantiating the client
-
- :type signature_version: str
- :param signature_version: The signature version when signing requests.
-
- :type user_agent: str
- :param user_agent: The value to use in the User-Agent header.
-
- :type user_agent_extra: str
- :param user_agent_extra: The value to append to the current User-Agent
- header value.
-
- :type connect_timeout: int
- :param connect_timeout: The time in seconds till a timeout exception is
- thrown when attempting to make a connection. The default is 60
- seconds.
-
- :type read_timeout: int
- :param read_timeout: The time in seconds till a timeout exception is
- thrown when attempting to read from a connection. The default is
- 60 seconds.
-
- :type parameter_validation: bool
- :param parameter_validation: Whether parameter validation should occur
- when serializing requests. The default is True. You can disable
- parameter validation for performance reasons. Otherwise, it's
- recommended to leave parameter validation enabled.
-
- :type max_pool_connections: int
- :param max_pool_connections: The maximum number of connections to
- keep in a connection pool. If this value is not set, the default
- value of 10 is used.
-
- :type proxies: dict
- :param proxies: A dictionary of proxy servers to use by protocol or
- endpoint, e.g.:
- {'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}.
- The proxies are used on each request.
-
- :type s3: dict
- :param s3: A dictionary of s3 specific configurations.
- Valid keys are:
-
- * 'use_accelerate_endpoint' -- Refers to whether to use the S3
- Accelerate endpoint. The value must be a boolean. If True, the
- client will use the S3 Accelerate endpoint. If the S3 Accelerate
- endpoint is being used then the addressing style will always
- be virtual.
-
- * 'payload_signing_enabled' -- Refers to whether or not to SHA256
- sign sigv4 payloads. By default, this is disabled for streaming
- uploads (UploadPart and PutObject).
-
- * 'addressing_style' -- Refers to the style in which to address
- s3 endpoints. Values must be a string that equals:
-
- * auto -- Addressing style is chosen for user. Depending
- on the configuration of client, the endpoint may be addressed in
- the virtual or the path style. Note that this is the default
- behavior if no style is specified.
-
- * virtual -- Addressing style is always virtual. The name of the
- bucket must be DNS compatible or an exception will be thrown.
- Endpoints will be addressed as such: mybucket.s3.amazonaws.com
-
- * path -- Addressing style is always by path. Endpoints will be
- addressed as such: s3.amazonaws.com/mybucket
-
- :type retries: dict
- :param retries: A dictionary for retry specific configurations.
- Valid keys are:
-
- * 'max_attempts' -- An integer representing the maximum number of
- retry attempts that will be made on a single request. For
- example, setting this value to 2 will result in the request
- being retried at most two times after the initial request. Setting
- this value to 0 will result in no retries ever being attempted on
- the initial request. If not provided, the number of retries will
- default to whatever is modeled, which is typically four retries.
- """
- OPTION_DEFAULTS = OrderedDict([
- ('region_name', None),
- ('signature_version', None),
- ('user_agent', None),
- ('user_agent_extra', None),
- ('connect_timeout', DEFAULT_TIMEOUT),
- ('read_timeout', DEFAULT_TIMEOUT),
- ('parameter_validation', True),
- ('max_pool_connections', MAX_POOL_CONNECTIONS),
- ('proxies', None),
- ('s3', None),
- ('retries', None)
- ])
-
- def __init__(self, *args, **kwargs):
- self._user_provided_options = self._record_user_provided_options(
- args, kwargs)
-
- # Merge the user_provided options onto the default options
- config_vars = copy.copy(self.OPTION_DEFAULTS)
- config_vars.update(self._user_provided_options)
-
- # Set the attributes based on the config_vars
- for key, value in config_vars.items():
- setattr(self, key, value)
-
- # Validate the s3 options
- self._validate_s3_configuration(self.s3)
-
- self._validate_retry_configuration(self.retries)
-
- def _record_user_provided_options(self, args, kwargs):
- option_order = list(self.OPTION_DEFAULTS)
- user_provided_options = {}
-
- # Iterate through the kwargs passed through to the constructor and
- # map valid keys to the dictionary
- for key, value in kwargs.items():
- if key in self.OPTION_DEFAULTS:
- user_provided_options[key] = value
- # The key must exist in the available options
- else:
- raise TypeError(
- 'Got unexpected keyword argument \'%s\'' % key)
-
- # The number of args should not be longer than the allowed
- # options
- if len(args) > len(option_order):
- raise TypeError(
- 'Takes at most %s arguments (%s given)' % (
- len(option_order), len(args)))
-
- # Iterate through the args passed through to the constructor and map
- # them to appropriate keys.
- for i, arg in enumerate(args):
- # If it a kwarg was specified for the arg, then error out
- if option_order[i] in user_provided_options:
- raise TypeError(
- 'Got multiple values for keyword argument \'%s\'' % (
- option_order[i]))
- user_provided_options[option_order[i]] = arg
-
- return user_provided_options
-
- def _validate_s3_configuration(self, s3):
- if s3 is not None:
- addressing_style = s3.get('addressing_style')
- if addressing_style not in ['virtual', 'auto', 'path', None]:
- raise InvalidS3AddressingStyleError(
- s3_addressing_style=addressing_style)
-
- def _validate_retry_configuration(self, retries):
- if retries is not None:
- for key in retries:
- if key not in ['max_attempts']:
- raise InvalidRetryConfigurationError(
- retry_config_option=key)
- if key == 'max_attempts' and retries[key] < 0:
- raise InvalidMaxRetryAttemptsError(
- provided_max_attempts=retries[key]
- )
-
- def merge(self, other_config):
- """Merges the config object with another config object
-
- This will merge in all non-default values from the provided config
- and return a new config object
-
- :type other_config: botocore.config.Config
- :param other config: Another config object to merge with. The values
- in the provided config object will take precedence in the merging
-
- :returns: A config object built from the merged values of both
- config objects.
- """
- # Make a copy of the current attributes in the config object.
- config_options = copy.copy(self._user_provided_options)
-
- # Merge in the user provided options from the other config
- config_options.update(other_config._user_provided_options)
-
- # Return a new config object with the merged properties.
- return Config(**config_options)
diff --git a/.eggs/botocore-1.10.75-py2.7.egg/botocore/configloader.py b/.eggs/botocore-1.10.75-py2.7.egg/botocore/configloader.py
deleted file mode 100644
index 385f05f7..00000000
--- a/.eggs/botocore-1.10.75-py2.7.egg/botocore/configloader.py
+++ /dev/null
@@ -1,272 +0,0 @@
-# Copyright (c) 2012-2013 Mitch Garnaat http://garnaat.org/
-# Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"). You
-# may not use this file except in compliance with the License. A copy of
-# the License is located at
-#
-# http://aws.amazon.com/apache2.0/
-#
-# or in the "license" file accompanying this file. This file 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.
-import os
-import shlex
-import copy
-import sys
-
-from botocore.compat import six
-
-import botocore.exceptions
-
-
-def multi_file_load_config(*filenames):
- """Load and combine multiple INI configs with profiles.
-
- This function will take a list of filesnames and return
- a single dictionary that represents the merging of the loaded
- config files.
-
- If any of the provided filenames does not exist, then that file
- is ignored. It is therefore ok to provide a list of filenames,
- some of which may not exist.
-
- Configuration files are **not** deep merged, only the top level
- keys are merged. The filenames should be passed in order of
- precedence. The first config file has precedence over the
- second config file, which has precedence over the third config file,
- etc. The only exception to this is that the "profiles" key is
- merged to combine profiles from multiple config files into a
- single profiles mapping. However, if a profile is defined in
- multiple config files, then the config file with the highest
- precedence is used. Profile values themselves are not merged.
- For example::
-
- FileA FileB FileC
- [foo] [foo] [bar]
- a=1 a=2 a=3
- b=2
-
- [bar] [baz] [profile a]
- a=2 a=3 region=e
-
- [profile a] [profile b] [profile c]
- region=c region=d region=f
-
- The final result of ``multi_file_load_config(FileA, FileB, FileC)``
- would be::
-
- {"foo": {"a": 1}, "bar": {"a": 2}, "baz": {"a": 3},
- "profiles": {"a": {"region": "c"}}, {"b": {"region": d"}},
- {"c": {"region": "f"}}}
-
- Note that the "foo" key comes from A, even though it's defined in both
- FileA and FileB. Because "foo" was defined in FileA first, then the values
- for "foo" from FileA are used and the values for "foo" from FileB are
- ignored. Also note where the profiles originate from. Profile "a"
- comes FileA, profile "b" comes from FileB, and profile "c" comes
- from FileC.
-
- """
- configs = []
- profiles = []
- for filename in filenames:
- try:
- loaded = load_config(filename)
- except botocore.exceptions.ConfigNotFound:
- continue
- profiles.append(loaded.pop('profiles'))
- configs.append(loaded)
- merged_config = _merge_list_of_dicts(configs)
- merged_profiles = _merge_list_of_dicts(profiles)
- merged_config['profiles'] = merged_profiles
- return merged_config
-
-
-def _merge_list_of_dicts(list_of_dicts):
- merged_dicts = {}
- for single_dict in list_of_dicts:
- for key, value in single_dict.items():
- if key not in merged_dicts:
- merged_dicts[key] = value
- return merged_dicts
-
-
-def load_config(config_filename):
- """Parse a INI config with profiles.
-
- This will parse an INI config file and map top level profiles
- into a top level "profile" key.
-
- If you want to parse an INI file and map all section names to
- top level keys, use ``raw_config_parse`` instead.
-
- """
- parsed = raw_config_parse(config_filename)
- return build_profile_map(parsed)
-
-
-def raw_config_parse(config_filename, parse_subsections=True):
- """Returns the parsed INI config contents.
-
- Each section name is a top level key.
-
- :param config_filename: The name of the INI file to parse
-
- :param parse_subsections: If True, parse indented blocks as
- subsections that represent their own configuration dictionary.
- For example, if the config file had the contents::
-
- s3 =
- signature_version = s3v4
- addressing_style = path
-
- The resulting ``raw_config_parse`` would be::
-
- {'s3': {'signature_version': 's3v4', 'addressing_style': 'path'}}
-
- If False, do not try to parse subsections and return the indented
- block as its literal value::
-
- {'s3': '\nsignature_version = s3v4\naddressing_style = path'}
-
- :returns: A dict with keys for each profile found in the config
- file and the value of each key being a dict containing name
- value pairs found in that profile.
-
- :raises: ConfigNotFound, ConfigParseError
- """
- config = {}
- path = config_filename
- if path is not None:
- path = os.path.expandvars(path)
- path = os.path.expanduser(path)
- if not os.path.isfile(path):
- raise botocore.exceptions.ConfigNotFound(path=_unicode_path(path))
- cp = six.moves.configparser.RawConfigParser()
- try:
- cp.read([path])
- except six.moves.configparser.Error:
- raise botocore.exceptions.ConfigParseError(
- path=_unicode_path(path))
- else:
- for section in cp.sections():
- config[section] = {}
- for option in cp.options(section):
- config_value = cp.get(section, option)
- if parse_subsections and config_value.startswith('\n'):
- # Then we need to parse the inner contents as
- # hierarchical. We support a single level
- # of nesting for now.
- try:
- config_value = _parse_nested(config_value)
- except ValueError:
- raise botocore.exceptions.ConfigParseError(
- path=_unicode_path(path))
- config[section][option] = config_value
- return config
-
-
-def _unicode_path(path):
- if isinstance(path, six.text_type):
- return path
- # According to the documentation getfilesystemencoding can return None
- # on unix in which case the default encoding is used instead.
- filesystem_encoding = sys.getfilesystemencoding()
- if filesystem_encoding is None:
- filesystem_encoding = sys.getdefaultencoding()
- return path.decode(filesystem_encoding, 'replace')
-
-
-def _parse_nested(config_value):
- # Given a value like this:
- # \n
- # foo = bar
- # bar = baz
- # We need to parse this into
- # {'foo': 'bar', 'bar': 'baz}
- parsed = {}
- for line in config_value.splitlines():
- line = line.strip()
- if not line:
- continue
- # The caller will catch ValueError
- # and raise an appropriate error
- # if this fails.
- key, value = line.split('=', 1)
- parsed[key.strip()] = value.strip()
- return parsed
-
-
-def build_profile_map(parsed_ini_config):
- """Convert the parsed INI config into a profile map.
-
- The config file format requires that every profile except the
- default to be prepended with "profile", e.g.::
-
- [profile test]
- aws_... = foo
- aws_... = bar
-
- [profile bar]
- aws_... = foo
- aws_... = bar
-
- # This is *not* a profile
- [preview]
- otherstuff = 1
-
- # Neither is this
- [foobar]
- morestuff = 2
-
- The build_profile_map will take a parsed INI config file where each top
- level key represents a section name, and convert into a format where all
- the profiles are under a single top level "profiles" key, and each key in
- the sub dictionary is a profile name. For example, the above config file
- would be converted from::
-
- {"profile test": {"aws_...": "foo", "aws...": "bar"},
- "profile bar": {"aws...": "foo", "aws...": "bar"},
- "preview": {"otherstuff": ...},
- "foobar": {"morestuff": ...},
- }
-
- into::
-
- {"profiles": {"test": {"aws_...": "foo", "aws...": "bar"},
- "bar": {"aws...": "foo", "aws...": "bar"},
- "preview": {"otherstuff": ...},
- "foobar": {"morestuff": ...},
- }
-
- If there are no profiles in the provided parsed INI contents, then
- an empty dict will be the value associated with the ``profiles`` key.
-
- .. note::
-
- This will not mutate the passed in parsed_ini_config. Instead it will
- make a deepcopy and return that value.
-
- """
- parsed_config = copy.deepcopy(parsed_ini_config)
- profiles = {}
- final_config = {}
- for key, values in parsed_config.items():
- if key.startswith("profile"):
- try:
- parts = shlex.split(key)
- except ValueError:
- continue
- if len(parts) == 2:
- profiles[parts[1]] = values
- elif key == 'default':
- # default section is special and is considered a profile
- # name but we don't require you use 'profile "default"'
- # as a section.
- profiles[key] = values
- else:
- final_config[key] = values
- final_config['profiles'] = profiles
- return final_config
diff --git a/.eggs/botocore-1.10.75-py2.7.egg/botocore/credentials.py b/.eggs/botocore-1.10.75-py2.7.egg/botocore/credentials.py
deleted file mode 100644
index d82c04d2..00000000
--- a/.eggs/botocore-1.10.75-py2.7.egg/botocore/credentials.py
+++ /dev/null
@@ -1,1673 +0,0 @@
-# Copyright (c) 2012-2013 Mitch Garnaat http://garnaat.org/
-# Copyright 2012-2014 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"). You
-# may not use this file except in compliance with the License. A copy of
-# the License is located at
-#
-# http://aws.amazon.com/apache2.0/
-#
-# or in the "license" file accompanying this file. This file 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.
-import time
-import datetime
-import logging
-import os
-import getpass
-import threading
-import json
-import subprocess
-from collections import namedtuple
-from copy import deepcopy
-from hashlib import sha1
-import json
-
-from dateutil.parser import parse
-from dateutil.tz import tzlocal
-
-import botocore.configloader
-import botocore.compat
-from botocore.compat import total_seconds
-from botocore.compat import compat_shell_split
-from botocore.exceptions import UnknownCredentialError
-from botocore.exceptions import PartialCredentialsError
-from botocore.exceptions import ConfigNotFound
-from botocore.exceptions import InvalidConfigError
-from botocore.exceptions import InfiniteLoopConfigError
-from botocore.exceptions import RefreshWithMFAUnsupportedError
-from botocore.exceptions import MetadataRetrievalError
-from botocore.exceptions import CredentialRetrievalError
-from botocore.utils import InstanceMetadataFetcher, parse_key_val_file
-from botocore.utils import ContainerMetadataFetcher
-
-
-logger = logging.getLogger(__name__)
-ReadOnlyCredentials = namedtuple('ReadOnlyCredentials',
- ['access_key', 'secret_key', 'token'])
-
-
-def create_credential_resolver(session, cache=None):
- """Create a default credential resolver.
-
- This creates a pre-configured credential resolver
- that includes the default lookup chain for
- credentials.
-
- """
- profile_name = session.get_config_variable('profile') or 'default'
- credential_file = session.get_config_variable('credentials_file')
- config_file = session.get_config_variable('config_file')
- metadata_timeout = session.get_config_variable('metadata_service_timeout')
- num_attempts = session.get_config_variable('metadata_service_num_attempts')
- if cache is None:
- cache = {}
-
- env_provider = EnvProvider()
- container_provider = ContainerProvider()
- instance_metadata_provider = InstanceMetadataProvider(
- iam_role_fetcher=InstanceMetadataFetcher(
- timeout=metadata_timeout,
- num_attempts=num_attempts,
- user_agent=session.user_agent())
- )
- assume_role_provider = AssumeRoleProvider(
- load_config=lambda: session.full_config,
- client_creator=session.create_client,
- cache=cache,
- profile_name=profile_name,
- credential_sourcer=CanonicalNameCredentialSourcer([
- env_provider, container_provider, instance_metadata_provider
- ])
- )
- providers = [
- env_provider,
- assume_role_provider,
- SharedCredentialProvider(
- creds_filename=credential_file,
- profile_name=profile_name
- ),
- ProcessProvider(profile_name=profile_name,
- load_config=lambda: session.full_config),
- # The new config file has precedence over the legacy
- # config file.
- ConfigProvider(config_filename=config_file, profile_name=profile_name),
- OriginalEC2Provider(),
- BotoProvider(),
- container_provider,
- instance_metadata_provider
- ]
-
- explicit_profile = session.get_config_variable('profile',
- methods=('instance',))
- if explicit_profile is not None:
- # An explicitly provided profile will negate an EnvProvider.
- # We will defer to providers that understand the "profile"
- # concept to retrieve credentials.
- # The one edge case if is all three values are provided via
- # env vars:
- # export AWS_ACCESS_KEY_ID=foo
- # export AWS_SECRET_ACCESS_KEY=bar
- # export AWS_PROFILE=baz
- # Then, just like our client() calls, the explicit credentials
- # will take precedence.
- #
- # This precedence is enforced by leaving the EnvProvider in the chain.
- # This means that the only way a "profile" would win is if the
- # EnvProvider does not return credentials, which is what we want
- # in this scenario.
- providers.remove(env_provider)
- logger.debug('Skipping environment variable credential check'
- ' because profile name was explicitly set.')
-
- resolver = CredentialResolver(providers=providers)
- return resolver
-
-
-def get_credentials(session):
- resolver = create_credential_resolver(session)
- return resolver.load_credentials()
-
-
-def _local_now():
- return datetime.datetime.now(tzlocal())
-
-
-def _parse_if_needed(value):
- if isinstance(value, datetime.datetime):
- return value
- return parse(value)
-
-
-def _serialize_if_needed(value, iso=False):
- if isinstance(value, datetime.datetime):
- if iso:
- return value.isoformat()
- return value.strftime('%Y-%m-%dT%H:%M:%S%Z')
- return value
-
-
-def create_assume_role_refresher(client, params):
- def refresh():
- response = client.assume_role(**params)
- credentials = response['Credentials']
- # We need to normalize the credential names to
- # the values expected by the refresh creds.
- return {
- 'access_key': credentials['AccessKeyId'],
- 'secret_key': credentials['SecretAccessKey'],
- 'token': credentials['SessionToken'],
- 'expiry_time': _serialize_if_needed(credentials['Expiration']),
- }
- return refresh
-
-
-def create_mfa_serial_refresher(actual_refresh):
-
- class _Refresher(object):
- def __init__(self, refresh):
- self._refresh = refresh
- self._has_been_called = False
-
- def __call__(self):
- if self._has_been_called:
- # We can explore an option in the future to support
- # reprompting for MFA, but for now we just error out
- # when the temp creds expire.
- raise RefreshWithMFAUnsupportedError()
- self._has_been_called = True
- return self._refresh()
-
- return _Refresher(actual_refresh)
-
-
-class JSONFileCache(object):
- """JSON file cache.
- This provides a dict like interface that stores JSON serializable
- objects.
- The objects are serialized to JSON and stored in a file. These
- values can be retrieved at a later time.
- """
-
- CACHE_DIR = os.path.expanduser(os.path.join('~', '.aws', 'boto', 'cache'))
-
- def __init__(self, working_dir=CACHE_DIR):
- self._working_dir = working_dir
-
- def __contains__(self, cache_key):
- actual_key = self._convert_cache_key(cache_key)
- return os.path.isfile(actual_key)
-
- def __getitem__(self, cache_key):
- """Retrieve value from a cache key."""
- actual_key = self._convert_cache_key(cache_key)
- try:
- with open(actual_key) as f:
- return json.load(f)
- except (OSError, ValueError, IOError):
- raise KeyError(cache_key)
-
- def __setitem__(self, cache_key, value):
- full_key = self._convert_cache_key(cache_key)
- try:
- file_content = json.dumps(value, default=_serialize_if_needed)
- except (TypeError, ValueError):
- raise ValueError("Value cannot be cached, must be "
- "JSON serializable: %s" % value)
- if not os.path.isdir(self._working_dir):
- os.makedirs(self._working_dir)
- with os.fdopen(os.open(full_key,
- os.O_WRONLY | os.O_CREAT, 0o600), 'w') as f:
- f.truncate()
- f.write(file_content)
-
- def _convert_cache_key(self, cache_key):
- full_path = os.path.join(self._working_dir, cache_key + '.json')
- return full_path
-
-
-class Credentials(object):
- """
- Holds the credentials needed to authenticate requests.
-
- :ivar access_key: The access key part of the credentials.
- :ivar secret_key: The secret key part of the credentials.
- :ivar token: The security token, valid only for session credentials.
- :ivar method: A string which identifies where the credentials
- were found.
- """
-
- def __init__(self, access_key, secret_key, token=None,
- method=None):
- self.access_key = access_key
- self.secret_key = secret_key
- self.token = token
-
- if method is None:
- method = 'explicit'
- self.method = method
-
- self._normalize()
-
- def _normalize(self):
- # Keys would sometimes (accidentally) contain non-ascii characters.
- # It would cause a confusing UnicodeDecodeError in Python 2.
- # We explicitly convert them into unicode to avoid such error.
- #
- # Eventually the service will decide whether to accept the credential.
- # This also complies with the behavior in Python 3.
- self.access_key = botocore.compat.ensure_unicode(self.access_key)
- self.secret_key = botocore.compat.ensure_unicode(self.secret_key)
-
- def get_frozen_credentials(self):
- return ReadOnlyCredentials(self.access_key,
- self.secret_key,
- self.token)
-
-
-class RefreshableCredentials(Credentials):
- """
- Holds the credentials needed to authenticate requests. In addition, it
- knows how to refresh itself.
-
- :ivar access_key: The access key part of the credentials.
- :ivar secret_key: The secret key part of the credentials.
- :ivar token: The security token, valid only for session credentials.
- :ivar method: A string which identifies where the credentials
- were found.
- """
- # The time at which we'll attempt to refresh, but not
- # block if someone else is refreshing.
- _advisory_refresh_timeout = 15 * 60
- # The time at which all threads will block waiting for
- # refreshed credentials.
- _mandatory_refresh_timeout = 10 * 60
-
- def __init__(self, access_key, secret_key, token,
- expiry_time, refresh_using, method,
- time_fetcher=_local_now):
- self._refresh_using = refresh_using
- self._access_key = access_key
- self._secret_key = secret_key
- self._token = token
- self._expiry_time = expiry_time
- self._time_fetcher = time_fetcher
- self._refresh_lock = threading.Lock()
- self.method = method
- self._frozen_credentials = ReadOnlyCredentials(
- access_key, secret_key, token)
- self._normalize()
-
- def _normalize(self):
- self._access_key = botocore.compat.ensure_unicode(self._access_key)
- self._secret_key = botocore.compat.ensure_unicode(self._secret_key)
-
- @classmethod
- def create_from_metadata(cls, metadata, refresh_using, method):
- instance = cls(
- access_key=metadata['access_key'],
- secret_key=metadata['secret_key'],
- token=metadata['token'],
- expiry_time=cls._expiry_datetime(metadata['expiry_time']),
- method=method,
- refresh_using=refresh_using
- )
- return instance
-
- @property
- def access_key(self):
- """Warning: Using this property can lead to race conditions if you
- access another property subsequently along the refresh boundary.
- Please use get_frozen_credentials instead.
- """
- self._refresh()
- return self._access_key
-
- @access_key.setter
- def access_key(self, value):
- self._access_key = value
-
- @property
- def secret_key(self):
- """Warning: Using this property can lead to race conditions if you
- access another property subsequently along the refresh boundary.
- Please use get_frozen_credentials instead.
- """
- self._refresh()
- return self._secret_key
-
- @secret_key.setter
- def secret_key(self, value):
- self._secret_key = value
-
- @property
- def token(self):
- """Warning: Using this property can lead to race conditions if you
- access another property subsequently along the refresh boundary.
- Please use get_frozen_credentials instead.
- """
- self._refresh()
- return self._token
-
- @token.setter
- def token(self, value):
- self._token = value
-
- def _seconds_remaining(self):
- delta = self._expiry_time - self._time_fetcher()
- return total_seconds(delta)
-
- def refresh_needed(self, refresh_in=None):
- """Check if a refresh is needed.
-
- A refresh is needed if the expiry time associated
- with the temporary credentials is less than the
- provided ``refresh_in``. If ``time_delta`` is not
- provided, ``self.advisory_refresh_needed`` will be used.
-
- For example, if your temporary credentials expire
- in 10 minutes and the provided ``refresh_in`` is
- ``15 * 60``, then this function will return ``True``.
-
- :type refresh_in: int
- :param refresh_in: The number of seconds before the
- credentials expire in which refresh attempts should
- be made.
-
- :return: True if refresh neeeded, False otherwise.
-
- """
- if self._expiry_time is None:
- # No expiration, so assume we don't need to refresh.
- return False
-
- if refresh_in is None:
- refresh_in = self._advisory_refresh_timeout
- # The credentials should be refreshed if they're going to expire
- # in less than 5 minutes.
- if self._seconds_remaining() >= refresh_in:
- # There's enough time left. Don't refresh.
- return False
- logger.debug("Credentials need to be refreshed.")
- return True
-
- def _is_expired(self):
- # Checks if the current credentials are expired.
- return self.refresh_needed(refresh_in=0)
-
- def _refresh(self):
- # In the common case where we don't need a refresh, we
- # can immediately exit and not require acquiring the
- # refresh lock.
- if not self.refresh_needed(self._advisory_refresh_timeout):
- return
-
- # acquire() doesn't accept kwargs, but False is indicating
- # that we should not block if we can't acquire the lock.
- # If we aren't able to acquire the lock, we'll trigger
- # the else clause.
- if self._refresh_lock.acquire(False):
- try:
- if not self.refresh_needed(self._advisory_refresh_timeout):
- return
- is_mandatory_refresh = self.refresh_needed(
- self._mandatory_refresh_timeout)
- self._protected_refresh(is_mandatory=is_mandatory_refresh)
- return
- finally:
- self._refresh_lock.release()
- elif self.refresh_needed(self._mandatory_refresh_timeout):
- # If we're within the mandatory refresh window,
- # we must block until we get refreshed credentials.
- with self._refresh_lock:
- if not self.refresh_needed(self._mandatory_refresh_timeout):
- return
- self._protected_refresh(is_mandatory=True)
-
- def _protected_refresh(self, is_mandatory):
- # precondition: this method should only be called if you've acquired
- # the self._refresh_lock.
- try:
- metadata = self._refresh_using()
- except Exception as e:
- period_name = 'mandatory' if is_mandatory else 'advisory'
- logger.warning("Refreshing temporary credentials failed "
- "during %s refresh period.",
- period_name, exc_info=True)
- if is_mandatory:
- # If this is a mandatory refresh, then
- # all errors that occur when we attempt to refresh
- # credentials are propagated back to the user.
- raise
- # Otherwise we'll just return.
- # The end result will be that we'll use the current
- # set of temporary credentials we have.
- return
- self._set_from_data(metadata)
- self._frozen_credentials = ReadOnlyCredentials(
- self._access_key, self._secret_key, self._token)
- if self._is_expired():
- # We successfully refreshed credentials but for whatever
- # reason, our refreshing function returned credentials
- # that are still expired. In this scenario, the only
- # thing we can do is let the user know and raise
- # an exception.
- msg = ("Credentials were refreshed, but the "
- "refreshed credentials are still expired.")
- logger.warning(msg)
- raise RuntimeError(msg)
-
- @staticmethod
- def _expiry_datetime(time_str):
- return parse(time_str)
-
- def _set_from_data(self, data):
- self.access_key = data['access_key']
- self.secret_key = data['secret_key']
- self.token = data['token']
- self._expiry_time = parse(data['expiry_time'])
- logger.debug("Retrieved credentials will expire at: %s",
- self._expiry_time)
- self._normalize()
-
- def get_frozen_credentials(self):
- """Return immutable credentials.
-
- The ``access_key``, ``secret_key``, and ``token`` properties
- on this class will always check and refresh credentials if
- needed before returning the particular credentials.
-
- This has an edge case where you can get inconsistent
- credentials. Imagine this:
-
- # Current creds are "t1"
- tmp.access_key ---> expired? no, so return t1.access_key
- # ---- time is now expired, creds need refreshing to "t2" ----
- tmp.secret_key ---> expired? yes, refresh and return t2.secret_key
-
- This means we're using the access key from t1 with the secret key
- from t2. To fix this issue, you can request a frozen credential object
- which is guaranteed not to change.
-
- The frozen credentials returned from this method should be used
- immediately and then discarded. The typical usage pattern would
- be::
-
- creds = RefreshableCredentials(...)
- some_code = SomeSignerObject()
- # I'm about to sign the request.
- # The frozen credentials are only used for the
- # duration of generate_presigned_url and will be
- # immediately thrown away.
- request = some_code.sign_some_request(
- with_credentials=creds.get_frozen_credentials())
- print("Signed request:", request)
-
- """
- self._refresh()
- return self._frozen_credentials
-
-
-class DeferredRefreshableCredentials(RefreshableCredentials):
- """Refreshable credentials that don't require initial credentials.
-
- refresh_using will be called upon first access.
- """
- def __init__(self, refresh_using, method, time_fetcher=_local_now):
- self._refresh_using = refresh_using
- self._access_key = None
- self._secret_key = None
- self._token = None
- self._expiry_time = None
- self._time_fetcher = time_fetcher
- self._refresh_lock = threading.Lock()
- self.method = method
- self._frozen_credentials = None
-
- def refresh_needed(self, refresh_in=None):
- if self._frozen_credentials is None:
- return True
- return super(DeferredRefreshableCredentials, self).refresh_needed(
- refresh_in
- )
-
-
-class CachedCredentialFetcher(object):
- def __init__(self, cache=None, expiry_window_seconds=60 * 15):
- if cache is None:
- cache = {}
- self._cache = cache
- self._cache_key = self._create_cache_key()
- self._expiry_window_seconds = expiry_window_seconds
-
- def _create_cache_key(self):
- raise NotImplementedError('_create_cache_key()')
-
- def _make_file_safe(self, filename):
- # Replace :, path sep, and / to make it the string filename safe.
- filename = filename.replace(':', '_').replace(os.path.sep, '_')
- return filename.replace('/', '_')
-
- def _get_credentials(self):
- raise NotImplementedError('_get_credentials()')
-
- def fetch_credentials(self):
- return self._get_cached_credentials()
-
- def _get_cached_credentials(self):
- """Get up-to-date credentials.
-
- This will check the cache for up-to-date credentials, calling assume
- role if none are available.
- """
- response = self._load_from_cache()
- if response is None:
- response = self._get_credentials()
- self._write_to_cache(response)
- else:
- logger.debug("Credentials for role retrieved from cache.")
-
- creds = response['Credentials']
- expiration = _serialize_if_needed(creds['Expiration'], iso=True)
- return {
- 'access_key': creds['AccessKeyId'],
- 'secret_key': creds['SecretAccessKey'],
- 'token': creds['SessionToken'],
- 'expiry_time': expiration,
- }
-
- def _load_from_cache(self):
- if self._cache_key in self._cache:
- creds = deepcopy(self._cache[self._cache_key])
- if not self._is_expired(creds):
- return creds
- else:
- logger.debug(
- "Credentials were found in cache, but they are expired."
- )
- return None
-
- def _write_to_cache(self, response):
- self._cache[self._cache_key] = deepcopy(response)
-
- def _is_expired(self, credentials):
- """Check if credentials are expired."""
- end_time = _parse_if_needed(credentials['Credentials']['Expiration'])
- seconds = total_seconds(end_time - _local_now())
- return seconds < self._expiry_window_seconds
-
-
-class AssumeRoleCredentialFetcher(CachedCredentialFetcher):
- def __init__(self, client_creator, source_credentials, role_arn,
- extra_args=None, mfa_prompter=None, cache=None,
- expiry_window_seconds=60 * 15):
- """
- :type client_creator: callable
- :param client_creator: A callable that creates a client taking
- arguments like ``Session.create_client``.
-
- :type source_credentials: Credentials
- :param source_credentials: The credentials to use to create the
- client for the call to AssumeRole.
-
- :type role_arn: str
- :param role_arn: The ARN of the role to be assumed.
-
- :type extra_args: dict
- :param extra_args: Any additional arguments to add to the assume
- role request using the format of the botocore operation.
- Possible keys include, but may not be limited to,
- DurationSeconds, Policy, SerialNumber, ExternalId and
- RoleSessionName.
-
- :type mfa_prompter: callable
- :param mfa_prompter: A callable that returns input provided by the
- user (i.e raw_input, getpass.getpass, etc.).
-
- :type cache: dict
- :param cache: An object that supports ``__getitem__``,
- ``__setitem__``, and ``__contains__``. An example of this is
- the ``JSONFileCache`` class in aws-cli.
-
- :type expiry_window_seconds: int
- :param expiry_window_seconds: The amount of time, in seconds,
- """
- self._client_creator = client_creator
- self._source_credentials = source_credentials
- self._role_arn = role_arn
-
- if extra_args is None:
- self._assume_kwargs = {}
- else:
- self._assume_kwargs = deepcopy(extra_args)
- self._assume_kwargs['RoleArn'] = self._role_arn
-
- self._role_session_name = self._assume_kwargs.get('RoleSessionName')
- self._using_default_session_name = False
- if not self._role_session_name:
- self._role_session_name = 'botocore-session-%s' % (
- int(time.time()))
- self._assume_kwargs['RoleSessionName'] = self._role_session_name
- self._using_default_session_name = True
-
- self._mfa_prompter = mfa_prompter
- if self._mfa_prompter is None:
- self._mfa_prompter = getpass.getpass
-
- super(AssumeRoleCredentialFetcher, self).__init__(
- cache, expiry_window_seconds
- )
-
- def _create_cache_key(self):
- """Create a predictable cache key for the current configuration.
-
- The cache key is intended to be compatible with file names.
- """
- args = deepcopy(self._assume_kwargs)
-
- # The role session name gets randomly generated, so we don't want it
- # in the hash.
- if self._using_default_session_name:
- del args['RoleSessionName']
-
- if 'Policy' in args:
- # To have a predictable hash, the keys of the policy must be
- # sorted, so we have to load it here to make sure it gets sorted
- # later on.
- args['Policy'] = json.loads(args['Policy'])
-
- args = json.dumps(args, sort_keys=True)
- argument_hash = sha1(args.encode('utf-8')).hexdigest()
- return self._make_file_safe(argument_hash)
-
- def _get_credentials(self):
- """Get credentials by calling assume role."""
- kwargs = self._assume_role_kwargs()
- client = self._create_client()
- return client.assume_role(**kwargs)
-
- def _assume_role_kwargs(self):
- """Get the arguments for assume role based on current configuration."""
- assume_role_kwargs = self._assume_kwargs
- mfa_serial = assume_role_kwargs.get('SerialNumber')
-
- if mfa_serial is not None:
- prompt = 'Enter MFA code for %s: ' % mfa_serial
- token_code = self._mfa_prompter(prompt)
-
- assume_role_kwargs = deepcopy(assume_role_kwargs)
- assume_role_kwargs['TokenCode'] = token_code
-
- return assume_role_kwargs
-
- def _create_client(self):
- """Create an STS client using the source credentials."""
- frozen_credentials = self._source_credentials.get_frozen_credentials()
- return self._client_creator(
- 'sts',
- aws_access_key_id=frozen_credentials.access_key,
- aws_secret_access_key=frozen_credentials.secret_key,
- aws_session_token=frozen_credentials.token,
- )
-
-
-class CredentialProvider(object):
- # A short name to identify the provider within botocore.
- METHOD = None
-
- # A name to identify the provider for use in cross-sdk features like
- # assume role's `credential_source` configuration option. These names
- # are to be treated in a case-insensitive way. NOTE: any providers not
- # implemented in botocore MUST prefix their canonical names with
- # 'custom' or we DO NOT guarantee that it will work with any features
- # that this provides.
- CANONICAL_NAME = None
-
- def __init__(self, session=None):
- self.session = session
-
- def load(self):
- """
- Loads the credentials from their source & sets them on the object.
-
- Subclasses should implement this method (by reading from disk, the
- environment, the network or wherever), returning ``True`` if they were
- found & loaded.
-
- If not found, this method should return ``False``, indictating that the
- ``CredentialResolver`` should fall back to the next available method.
-
- The default implementation does nothing, assuming the user has set the
- ``access_key/secret_key/token`` themselves.
-
- :returns: Whether credentials were found & set
- :rtype: Credentials
- """
- return True
-
- def _extract_creds_from_mapping(self, mapping, *key_names):
- found = []
- for key_name in key_names:
- try:
- found.append(mapping[key_name])
- except KeyError:
- raise PartialCredentialsError(provider=self.METHOD,
- cred_var=key_name)
- return found
-
-
-class ProcessProvider(CredentialProvider):
-
- METHOD = 'custom-process'
-
- def __init__(self, profile_name, load_config, popen=subprocess.Popen):
- self._profile_name = profile_name
- self._load_config = load_config
- self._loaded_config = None
- self._popen = popen
-
- def load(self):
- credential_process = self._credential_process
- if credential_process is None:
- return
-
- creds_dict = self._retrieve_credentials_using(credential_process)
- if creds_dict.get('expiry_time') is not None:
- return RefreshableCredentials.create_from_metadata(
- creds_dict,
- lambda: self._retrieve_credentials_using(credential_process),
- self.METHOD
- )
-
- return Credentials(
- access_key=creds_dict['access_key'],
- secret_key=creds_dict['secret_key'],
- token=creds_dict.get('token'),
- method=self.METHOD
- )
-
- def _retrieve_credentials_using(self, credential_process):
- # We're not using shell=True, so we need to pass the
- # command and all arguments as a list.
- process_list = compat_shell_split(credential_process)
- p = self._popen(process_list,
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE)
- stdout, stderr = p.communicate()
- if p.returncode != 0:
- raise CredentialRetrievalError(
- provider=self.METHOD, error_msg=stderr.decode('utf-8'))
- parsed = botocore.compat.json.loads(stdout.decode('utf-8'))
- version = parsed.get('Version', '')
- if version != 1:
- raise CredentialRetrievalError(
- provider=self.METHOD,
- error_msg=("Unsupported version '%s' for credential process "
- "provider, supported versions: 1" % version))
- try:
- return {
- 'access_key': parsed['AccessKeyId'],
- 'secret_key': parsed['SecretAccessKey'],
- 'token': parsed.get('SessionToken'),
- 'expiry_time': parsed.get('Expiration'),
- }
- except KeyError as e:
- raise CredentialRetrievalError(
- provider=self.METHOD,
- error_msg="Missing required key in response: %s" % e
- )
-
- @property
- def _credential_process(self):
- if self._loaded_config is None:
- self._loaded_config = self._load_config()
- profile_config = self._loaded_config.get(
- 'profiles', {}).get(self._profile_name, {})
- return profile_config.get('credential_process')
-
-
-class InstanceMetadataProvider(CredentialProvider):
- METHOD = 'iam-role'
- CANONICAL_NAME = 'Ec2InstanceMetadata'
-
- def __init__(self, iam_role_fetcher):
- self._role_fetcher = iam_role_fetcher
-
- def load(self):
- fetcher = self._role_fetcher
- # We do the first request, to see if we get useful data back.
- # If not, we'll pass & move on to whatever's next in the credential
- # chain.
- metadata = fetcher.retrieve_iam_role_credentials()
- if not metadata:
- return None
- logger.debug('Found credentials from IAM Role: %s',
- metadata['role_name'])
- # We manually set the data here, since we already made the request &
- # have it. When the expiry is hit, the credentials will auto-refresh
- # themselves.
- creds = RefreshableCredentials.create_from_metadata(
- metadata,
- method=self.METHOD,
- refresh_using=fetcher.retrieve_iam_role_credentials,
- )
- return creds
-
-
-class EnvProvider(CredentialProvider):
- METHOD = 'env'
- CANONICAL_NAME = 'Environment'
- ACCESS_KEY = 'AWS_ACCESS_KEY_ID'
- SECRET_KEY = 'AWS_SECRET_ACCESS_KEY'
- # The token can come from either of these env var.
- # AWS_SESSION_TOKEN is what other AWS SDKs have standardized on.
- TOKENS = ['AWS_SECURITY_TOKEN', 'AWS_SESSION_TOKEN']
- EXPIRY_TIME = 'AWS_CREDENTIAL_EXPIRATION'
-
- def __init__(self, environ=None, mapping=None):
- """
-
- :param environ: The environment variables (defaults to
- ``os.environ`` if no value is provided).
- :param mapping: An optional mapping of variable names to
- environment variable names. Use this if you want to
- change the mapping of access_key->AWS_ACCESS_KEY_ID, etc.
- The dict can have up to 3 keys: ``access_key``, ``secret_key``,
- ``session_token``.
- """
- if environ is None:
- environ = os.environ
- self.environ = environ
- self._mapping = self._build_mapping(mapping)
-
- def _build_mapping(self, mapping):
- # Mapping of variable name to env var name.
- var_mapping = {}
- if mapping is None:
- # Use the class var default.
- var_mapping['access_key'] = self.ACCESS_KEY
- var_mapping['secret_key'] = self.SECRET_KEY
- var_mapping['token'] = self.TOKENS
- var_mapping['expiry_time'] = self.EXPIRY_TIME
- else:
- var_mapping['access_key'] = mapping.get(
- 'access_key', self.ACCESS_KEY)
- var_mapping['secret_key'] = mapping.get(
- 'secret_key', self.SECRET_KEY)
- var_mapping['token'] = mapping.get(
- 'token', self.TOKENS)
- if not isinstance(var_mapping['token'], list):
- var_mapping['token'] = [var_mapping['token']]
- var_mapping['expiry_time'] = mapping.get(
- 'expiry_time', self.EXPIRY_TIME)
- return var_mapping
-
- def load(self):
- """
- Search for credentials in explicit environment variables.
- """
- if self._mapping['access_key'] in self.environ:
- logger.info('Found credentials in environment variables.')
- fetcher = self._create_credentials_fetcher()
- credentials = fetcher(require_expiry=False)
-
- expiry_time = credentials['expiry_time']
- if expiry_time is not None:
- expiry_time = parse(expiry_time)
- return RefreshableCredentials(
- credentials['access_key'], credentials['secret_key'],
- credentials['token'], expiry_time,
- refresh_using=fetcher, method=self.METHOD
- )
-
- return Credentials(
- credentials['access_key'], credentials['secret_key'],
- credentials['token'], method=self.METHOD
- )
- else:
- return None
-
- def _create_credentials_fetcher(self):
- mapping = self._mapping
- method = self.METHOD
- environ = self.environ
-
- def fetch_credentials(require_expiry=True):
- credentials = {}
-
- access_key = environ.get(mapping['access_key'])
- if access_key is None:
- raise PartialCredentialsError(
- provider=method, cred_var=mapping['access_key'])
- credentials['access_key'] = access_key
-
- secret_key = environ.get(mapping['secret_key'])
- if secret_key is None:
- raise PartialCredentialsError(
- provider=method, cred_var=mapping['secret_key'])
- credentials['secret_key'] = secret_key
-
- token = None
- for token_env_var in mapping['token']:
- if token_env_var in environ:
- token = environ[token_env_var]
- break
- credentials['token'] = token
-
- expiry_time = environ.get(mapping['expiry_time'])
- if require_expiry and expiry_time is None:
- raise PartialCredentialsError(
- provider=method, cred_var=mapping['expiry_time'])
- credentials['expiry_time'] = expiry_time
-
- return credentials
-
- return fetch_credentials
-
-
-class OriginalEC2Provider(CredentialProvider):
- METHOD = 'ec2-credentials-file'
- CANONICAL_NAME = 'Ec2Config'
-
- CRED_FILE_ENV = 'AWS_CREDENTIAL_FILE'
- ACCESS_KEY = 'AWSAccessKeyId'
- SECRET_KEY = 'AWSSecretKey'
-
- def __init__(self, environ=None, parser=None):
- if environ is None:
- environ = os.environ
- if parser is None:
- parser = parse_key_val_file
- self._environ = environ
- self._parser = parser
-
- def load(self):
- """
- Search for a credential file used by original EC2 CLI tools.
- """
- if 'AWS_CREDENTIAL_FILE' in self._environ:
- full_path = os.path.expanduser(
- self._environ['AWS_CREDENTIAL_FILE'])
- creds = self._parser(full_path)
- if self.ACCESS_KEY in creds:
- logger.info('Found credentials in AWS_CREDENTIAL_FILE.')
- access_key = creds[self.ACCESS_KEY]
- secret_key = creds[self.SECRET_KEY]
- # EC2 creds file doesn't support session tokens.
- return Credentials(access_key, secret_key, method=self.METHOD)
- else:
- return None
-
-
-class SharedCredentialProvider(CredentialProvider):
- METHOD = 'shared-credentials-file'
- CANONICAL_NAME = 'SharedCredentials'
-
- ACCESS_KEY = 'aws_access_key_id'
- SECRET_KEY = 'aws_secret_access_key'
- # Same deal as the EnvProvider above. Botocore originally supported
- # aws_security_token, but the SDKs are standardizing on aws_session_token
- # so we support both.
- TOKENS = ['aws_security_token', 'aws_session_token']
-
- def __init__(self, creds_filename, profile_name=None, ini_parser=None):
- self._creds_filename = creds_filename
- if profile_name is None:
- profile_name = 'default'
- self._profile_name = profile_name
- if ini_parser is None:
- ini_parser = botocore.configloader.raw_config_parse
- self._ini_parser = ini_parser
-
- def load(self):
- try:
- available_creds = self._ini_parser(self._creds_filename)
- except ConfigNotFound:
- return None
- if self._profile_name in available_creds:
- config = available_creds[self._profile_name]
- if self.ACCESS_KEY in config:
- logger.info("Found credentials in shared credentials file: %s",
- self._creds_filename)
- access_key, secret_key = self._extract_creds_from_mapping(
- config, self.ACCESS_KEY, self.SECRET_KEY)
- token = self._get_session_token(config)
- return Credentials(access_key, secret_key, token,
- method=self.METHOD)
-
- def _get_session_token(self, config):
- for token_envvar in self.TOKENS:
- if token_envvar in config:
- return config[token_envvar]
-
-
-class ConfigProvider(CredentialProvider):
- """INI based config provider with profile sections."""
- METHOD = 'config-file'
- CANONICAL_NAME = 'SharedConfig'
-
- ACCESS_KEY = 'aws_access_key_id'
- SECRET_KEY = 'aws_secret_access_key'
- # Same deal as the EnvProvider above. Botocore originally supported
- # aws_security_token, but the SDKs are standardizing on aws_session_token
- # so we support both.
- TOKENS = ['aws_security_token', 'aws_session_token']
-
- def __init__(self, config_filename, profile_name, config_parser=None):
- """
-
- :param config_filename: The session configuration scoped to the current
- profile. This is available via ``session.config``.
- :param profile_name: The name of the current profile.
- :param config_parser: A config parser callable.
-
- """
- self._config_filename = config_filename
- self._profile_name = profile_name
- if config_parser is None:
- config_parser = botocore.configloader.load_config
- self._config_parser = config_parser
-
- def load(self):
- """
- If there is are credentials in the configuration associated with
- the session, use those.
- """
- try:
- full_config = self._config_parser(self._config_filename)
- except ConfigNotFound:
- return None
- if self._profile_name in full_config['profiles']:
- profile_config = full_config['profiles'][self._profile_name]
- if self.ACCESS_KEY in profile_config:
- logger.info("Credentials found in config file: %s",
- self._config_filename)
- access_key, secret_key = self._extract_creds_from_mapping(
- profile_config, self.ACCESS_KEY, self.SECRET_KEY)
- token = self._get_session_token(profile_config)
- return Credentials(access_key, secret_key, token,
- method=self.METHOD)
- else:
- return None
-
- def _get_session_token(self, profile_config):
- for token_name in self.TOKENS:
- if token_name in profile_config:
- return profile_config[token_name]
-
-
-class BotoProvider(CredentialProvider):
- METHOD = 'boto-config'
- CANONICAL_NAME = 'Boto2Config'
-
- BOTO_CONFIG_ENV = 'BOTO_CONFIG'
- DEFAULT_CONFIG_FILENAMES = ['/etc/boto.cfg', '~/.boto']
- ACCESS_KEY = 'aws_access_key_id'
- SECRET_KEY = 'aws_secret_access_key'
-
- def __init__(self, environ=None, ini_parser=None):
- if environ is None:
- environ = os.environ
- if ini_parser is None:
- ini_parser = botocore.configloader.raw_config_parse
- self._environ = environ
- self._ini_parser = ini_parser
-
- def load(self):
- """
- Look for credentials in boto config file.
- """
- if self.BOTO_CONFIG_ENV in self._environ:
- potential_locations = [self._environ[self.BOTO_CONFIG_ENV]]
- else:
- potential_locations = self.DEFAULT_CONFIG_FILENAMES
- for filename in potential_locations:
- try:
- config = self._ini_parser(filename)
- except ConfigNotFound:
- # Move on to the next potential config file name.
- continue
- if 'Credentials' in config:
- credentials = config['Credentials']
- if self.ACCESS_KEY in credentials:
- logger.info("Found credentials in boto config file: %s",
- filename)
- access_key, secret_key = self._extract_creds_from_mapping(
- credentials, self.ACCESS_KEY, self.SECRET_KEY)
- return Credentials(access_key, secret_key,
- method=self.METHOD)
-
-
-class AssumeRoleProvider(CredentialProvider):
- METHOD = 'assume-role'
- # The AssumeRole provider is logically part of the SharedConfig and
- # SharedCredentials providers. Since the purpose of the canonical name
- # is to provide cross-sdk compatibility, calling code will need to be
- # aware that either of those providers should be tied to the AssumeRole
- # provider as much as possible.
- CANONICAL_NAME = None
- ROLE_CONFIG_VAR = 'role_arn'
- # Credentials are considered expired (and will be refreshed) once the total
- # remaining time left until the credentials expires is less than the
- # EXPIRY_WINDOW.
- EXPIRY_WINDOW_SECONDS = 60 * 15
-
- def __init__(self, load_config, client_creator, cache, profile_name,
- prompter=getpass.getpass, credential_sourcer=None):
- """
- :type load_config: callable
- :param load_config: A function that accepts no arguments, and
- when called, will return the full configuration dictionary
- for the session (``session.full_config``).
-
- :type client_creator: callable
- :param client_creator: A factory function that will create
- a client when called. Has the same interface as
- ``botocore.session.Session.create_client``.
-
- :type cache: dict
- :param cache: An object that supports ``__getitem__``,
- ``__setitem__``, and ``__contains__``. An example
- of this is the ``JSONFileCache`` class in the CLI.
-
- :type profile_name: str
- :param profile_name: The name of the profile.
-
- :type prompter: callable
- :param prompter: A callable that returns input provided
- by the user (i.e raw_input, getpass.getpass, etc.).
-
- :type credential_sourcer: CanonicalNameCredentialSourcer
- :param credential_sourcer: A credential provider that takes a
- configuration, which is used to provide the source credentials
- for the STS call.
- """
- #: The cache used to first check for assumed credentials.
- #: This is checked before making the AssumeRole API
- #: calls and can be useful if you have short lived
- #: scripts and you'd like to avoid calling AssumeRole
- #: until the credentials are expired.
- self.cache = cache
- self._load_config = load_config
- # client_creator is a callable that creates function.
- # It's basically session.create_client
- self._client_creator = client_creator
- self._profile_name = profile_name
- self._prompter = prompter
- # The _loaded_config attribute will be populated from the
- # load_config() function once the configuration is actually
- # loaded. The reason we go through all this instead of just
- # requiring that the loaded_config be passed to us is to that
- # we can defer configuration loaded until we actually try
- # to load credentials (as opposed to when the object is
- # instantiated).
- self._loaded_config = {}
- self._credential_sourcer = credential_sourcer
- self._visited_profiles = [self._profile_name]
-
- def load(self):
- self._loaded_config = self._load_config()
- 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, 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)
- source_credentials = self._resolve_source_credentials(
- role_config, profile_name
- )
-
- extra_args = {}
- role_session_name = role_config.get('role_session_name')
- if role_session_name is not None:
- extra_args['RoleSessionName'] = role_session_name
-
- external_id = role_config.get('external_id')
- if external_id is not None:
- extra_args['ExternalId'] = external_id
-
- mfa_serial = role_config.get('mfa_serial')
- if mfa_serial is not None:
- extra_args['SerialNumber'] = mfa_serial
-
- fetcher = AssumeRoleCredentialFetcher(
- client_creator=self._client_creator,
- source_credentials=source_credentials,
- role_arn=role_config['role_arn'],
- extra_args=extra_args,
- mfa_prompter=self._prompter,
- cache=self.cache,
- )
- refresher = fetcher.fetch_credentials
- if mfa_serial is not None:
- refresher = create_mfa_serial_refresher(refresher)
-
- # The initial credentials are empty and the expiration time is set
- # to now so that we can delay the call to assume role until it is
- # strictly needed.
- return DeferredRefreshableCredentials(
- method=self.METHOD,
- refresh_using=refresher,
- time_fetcher=_local_now
- )
-
- def _get_role_config(self, profile_name):
- """Retrieves and validates the role configuration for the profile."""
- profiles = self._loaded_config.get('profiles', {})
-
- profile = profiles[profile_name]
- source_profile = profile.get('source_profile')
- role_arn = profile['role_arn']
- credential_source = profile.get('credential_source')
- mfa_serial = profile.get('mfa_serial')
- external_id = profile.get('external_id')
- role_session_name = profile.get('role_session_name')
-
- role_config = {
- 'role_arn': role_arn,
- 'external_id': external_id,
- 'mfa_serial': mfa_serial,
- 'role_session_name': role_session_name,
- 'source_profile': source_profile,
- 'credential_source': credential_source
- }
-
- # Either the credential source or the source profile must be
- # specified, but not both.
- if credential_source is not None and source_profile is not None:
- raise InvalidConfigError(
- error_msg=(
- 'The profile "%s" contains both source_profile and '
- 'credential_source.' % profile_name
- )
- )
- elif credential_source is None and source_profile is None:
- raise PartialCredentialsError(
- provider=self.METHOD,
- cred_var='source_profile or credential_source'
- )
- elif credential_source is not None:
- self._validate_credential_source(
- profile_name, credential_source)
- else:
- self._validate_source_profile(profile_name, source_profile)
-
- return role_config
-
- def _validate_credential_source(self, parent_profile, credential_source):
- if self._credential_sourcer is None:
- raise InvalidConfigError(error_msg=(
- 'The credential_source "%s" is specified in profile "%s", '
- 'but no source provider was configured.' % (
- credential_source, parent_profile)
- ))
- if not self._credential_sourcer.is_supported(credential_source):
- raise InvalidConfigError(error_msg=(
- 'The credential source "%s" referenced in profile "%s" is not '
- 'valid.' % (credential_source, parent_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_name not in profiles:
- raise InvalidConfigError(
- error_msg=(
- 'The source_profile "%s" referenced in '
- 'the profile "%s" does not exist.' % (
- 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_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_name != parent_profile_name:
- raise InfiniteLoopConfigError(
- source_profile=source_profile_name,
- visited_profiles=self._visited_profiles
- )
-
- # A profile is allowed to reference itself so that it can source
- # static credentials and have configuration all in the same
- # 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(source_profile):
- raise InfiniteLoopConfigError(
- source_profile=source_profile_name,
- visited_profiles=self._visited_profiles
- )
-
- def _has_static_credentials(self, profile):
- static_keys = ['aws_secret_access_key', 'aws_access_key_id']
- return any(static_key in profile for static_key in static_keys)
-
- def _resolve_source_credentials(self, role_config, profile_name):
- credential_source = role_config.get('credential_source')
- if credential_source is not None:
- return self._resolve_credentials_from_source(
- credential_source, profile_name
- )
-
- source_profile = role_config['source_profile']
- self._visited_profiles.append(source_profile)
- return self._resolve_credentials_from_profile(source_profile)
-
- def _resolve_credentials_from_profile(self, profile_name):
- profiles = self._loaded_config.get('profiles', {})
- profile = profiles[profile_name]
-
- if self._has_static_credentials(profile):
- return self._resolve_static_credentials_from_profile(profile)
-
- return self._load_creds_via_assume_role(profile_name)
-
- def _resolve_static_credentials_from_profile(self, profile):
- try:
- return Credentials(
- access_key=profile['aws_access_key_id'],
- secret_key=profile['aws_secret_access_key'],
- token=profile.get('aws_session_token')
- )
- except KeyError as e:
- raise PartialCredentialsError(
- provider=self.METHOD, cred_var=str(e))
-
- def _resolve_credentials_from_source(self, credential_source,
- profile_name):
- credentials = self._credential_sourcer.source_credentials(
- credential_source)
- if credentials is None:
- raise CredentialRetrievalError(
- provider=credential_source,
- error_msg=(
- 'No credentials found in credential_source referenced '
- 'in profile %s' % profile_name
- )
- )
- return credentials
-
-
-class CanonicalNameCredentialSourcer(object):
- def __init__(self, providers):
- self._providers = providers
-
- def is_supported(self, source_name):
- """Validates a given source name.
-
- :type source_name: str
- :param source_name: The value of credential_source in the config
- file. This is the canonical name of the credential provider.
-
- :rtype: bool
- :returns: True if the credential provider is supported,
- False otherwise.
- """
- return source_name in [p.CANONICAL_NAME for p in self._providers]
-
- def source_credentials(self, source_name):
- """Loads source credentials based on the provided configuration.
-
- :type source_name: str
- :param source_name: The value of credential_source in the config
- file. This is the canonical name of the credential provider.
-
- :rtype: Credentials
- """
- source = self._get_provider(source_name)
- if isinstance(source, CredentialResolver):
- return source.load_credentials()
- return source.load()
-
- def _get_provider(self, canonical_name):
- """Return a credential provider by its canonical name.
-
- :type canonical_name: str
- :param canonical_name: The canonical name of the provider.
-
- :raises UnknownCredentialError: Raised if no
- credential provider by the provided name
- is found.
- """
- provider = self._get_provider_by_canonical_name(canonical_name)
-
- # The AssumeRole provider should really be part of the SharedConfig
- # provider rather than being its own thing, but it is not. It is
- # effectively part of both the SharedConfig provider and the
- # SharedCredentials provider now due to the way it behaves.
- # Therefore if we want either of those providers we should return
- # the AssumeRole provider with it.
- if canonical_name.lower() in ['sharedconfig', 'sharedcredentials']:
- assume_role_provider = self._get_provider_by_method('assume-role')
- if assume_role_provider is not None:
- # The SharedConfig or SharedCredentials provider may not be
- # present if it was removed for some reason, but the
- # AssumeRole provider could still be present. In that case,
- # return the assume role provider by itself.
- if provider is None:
- return assume_role_provider
-
- # If both are present, return them both as a
- # CredentialResolver so that calling code can treat them as
- # a single entity.
- return CredentialResolver([assume_role_provider, provider])
-
- if provider is None:
- raise UnknownCredentialError(name=canonical_name)
-
- return provider
-
- def _get_provider_by_canonical_name(self, canonical_name):
- """Return a credential provider by its canonical name.
-
- This function is strict, it does not attempt to address
- compatibility issues.
- """
- for provider in self._providers:
- name = provider.CANONICAL_NAME
- # Canonical names are case-insensitive
- if name and name.lower() == canonical_name.lower():
- return provider
-
- def _get_provider_by_method(self, method):
- """Return a credential provider by its METHOD name."""
- for provider in self._providers:
- if provider.METHOD == method:
- return provider
-
-
-class ContainerProvider(CredentialProvider):
- METHOD = 'container-role'
- CANONICAL_NAME = 'EcsContainer'
- ENV_VAR = 'AWS_CONTAINER_CREDENTIALS_RELATIVE_URI'
- ENV_VAR_FULL = 'AWS_CONTAINER_CREDENTIALS_FULL_URI'
- ENV_VAR_AUTH_TOKEN = 'AWS_CONTAINER_AUTHORIZATION_TOKEN'
-
- def __init__(self, environ=None, fetcher=None):
- if environ is None:
- environ = os.environ
- if fetcher is None:
- fetcher = ContainerMetadataFetcher()
- self._environ = environ
- self._fetcher = fetcher
-
- def load(self):
- # This cred provider is only triggered if the self.ENV_VAR is set,
- # which only happens if you opt into this feature.
- if self.ENV_VAR in self._environ or self.ENV_VAR_FULL in self._environ:
- return self._retrieve_or_fail()
-
- def _retrieve_or_fail(self):
- if self._provided_relative_uri():
- full_uri = self._fetcher.full_url(self._environ[self.ENV_VAR])
- else:
- full_uri = self._environ[self.ENV_VAR_FULL]
- headers = self._build_headers()
- fetcher = self._create_fetcher(full_uri, headers)
- creds = fetcher()
- return RefreshableCredentials(
- access_key=creds['access_key'],
- secret_key=creds['secret_key'],
- token=creds['token'],
- method=self.METHOD,
- expiry_time=_parse_if_needed(creds['expiry_time']),
- refresh_using=fetcher,
- )
-
- def _build_headers(self):
- headers = {}
- auth_token = self._environ.get(self.ENV_VAR_AUTH_TOKEN)
- if auth_token is not None:
- return {
- 'Authorization': auth_token
- }
-
- def _create_fetcher(self, full_uri, headers):
- def fetch_creds():
- try:
- response = self._fetcher.retrieve_full_uri(
- full_uri, headers=headers)
- except MetadataRetrievalError as e:
- logger.debug("Error retrieving container metadata: %s", e,
- exc_info=True)
- raise CredentialRetrievalError(provider=self.METHOD,
- error_msg=str(e))
- return {
- 'access_key': response['AccessKeyId'],
- 'secret_key': response['SecretAccessKey'],
- 'token': response['Token'],
- 'expiry_time': response['Expiration'],
- }
-
- return fetch_creds
-
- def _provided_relative_uri(self):
- return self.ENV_VAR in self._environ
-
-
-class CredentialResolver(object):
- def __init__(self, providers):
- """
-
- :param providers: A list of ``CredentialProvider`` instances.
-
- """
- self.providers = providers
-
- def insert_before(self, name, credential_provider):
- """
- Inserts a new instance of ``CredentialProvider`` into the chain that
- will be tried before an existing one.
-
- :param name: The short name of the credentials you'd like to insert the
- new credentials before. (ex. ``env`` or ``config``). Existing names
- & ordering can be discovered via ``self.available_methods``.
- :type name: string
-
- :param cred_instance: An instance of the new ``Credentials`` object
- you'd like to add to the chain.
- :type cred_instance: A subclass of ``Credentials``
- """
- try:
- offset = [p.METHOD for p in self.providers].index(name)
- except ValueError:
- raise UnknownCredentialError(name=name)
- self.providers.insert(offset, credential_provider)
-
- def insert_after(self, name, credential_provider):
- """
- Inserts a new type of ``Credentials`` instance into the chain that will
- be tried after an existing one.
-
- :param name: The short name of the credentials you'd like to insert the
- new credentials after. (ex. ``env`` or ``config``). Existing names
- & ordering can be discovered via ``self.available_methods``.
- :type name: string
-
- :param cred_instance: An instance of the new ``Credentials`` object
- you'd like to add to the chain.
- :type cred_instance: A subclass of ``Credentials``
- """
- offset = self._get_provider_offset(name)
- self.providers.insert(offset + 1, credential_provider)
-
- def remove(self, name):
- """
- Removes a given ``Credentials`` instance from the chain.
-
- :param name: The short name of the credentials instance to remove.
- :type name: string
- """
- available_methods = [p.METHOD for p in self.providers]
- if name not in available_methods:
- # It's not present. Fail silently.
- return
-
- offset = available_methods.index(name)
- self.providers.pop(offset)
-
- def get_provider(self, name):
- """Return a credential provider by name.
-
- :type name: str
- :param name: The name of the provider.
-
- :raises UnknownCredentialError: Raised if no
- credential provider by the provided name
- is found.
- """
- return self.providers[self._get_provider_offset(name)]
-
- def _get_provider_offset(self, name):
- try:
- return [p.METHOD for p in self.providers].index(name)
- except ValueError:
- raise UnknownCredentialError(name=name)
-
- def load_credentials(self):
- """
- Goes through the credentials chain, returning the first ``Credentials``
- that could be loaded.
- """
- # First provider to return a non-None response wins.
- for provider in self.providers:
- logger.debug("Looking for credentials via: %s", provider.METHOD)
- creds = provider.load()
- if creds is not None:
- return creds
-
- # If we got here, no credentials could be found.
- # This feels like it should be an exception, but historically, ``None``
- # is returned.
- #
- # +1
- # -js
- return None
diff --git a/.eggs/botocore-1.10.75-py2.7.egg/botocore/data/_retry.json b/.eggs/botocore-1.10.75-py2.7.egg/botocore/data/_retry.json
deleted file mode 100644
index c477c9bd..00000000
--- a/.eggs/botocore-1.10.75-py2.7.egg/botocore/data/_retry.json
+++ /dev/null
@@ -1,261 +0,0 @@
-{
- "definitions": {
- "throttling": {
- "applies_when": {
- "response": {
- "service_error_code": "Throttling",
- "http_status_code": 400
- }
- }
- },
- "throttling_exception": {
- "applies_when": {
- "response": {
- "service_error_code": "ThrottlingException",
- "http_status_code": 400
- }
- }
- },
- "throttled_exception": {
- "applies_when": {
- "response": {
- "service_error_code": "ThrottledException",
- "http_status_code": 400
- }
- }
- },
- "request_throttled_exception": {
- "applies_when": {
- "response": {
- "service_error_code": "RequestThrottledException",
- "http_status_code": 400
- }
- }
- },
- "too_many_requests": {
- "applies_when": {
- "response": {
- "http_status_code": 429
- }
- }
- },
- "general_socket_errors": {
- "applies_when": {
- "socket_errors": ["GENERAL_CONNECTION_ERROR"]
- }
- },
- "general_server_error": {
- "applies_when": {
- "response": {
- "http_status_code": 500
- }
- }
- },
- "bad_gateway": {
- "applies_when": {
- "response": {
- "http_status_code": 502
- }
- }
- },
- "service_unavailable": {
- "applies_when": {
- "response": {
- "http_status_code": 503
- }
- }
- },
- "gateway_timeout": {
- "applies_when": {
- "response": {
- "http_status_code": 504
- }
- }
- },
- "limit_exceeded": {
- "applies_when": {
- "response": {
- "http_status_code": 509
- }
- }
- }
- },
- "retry": {
- "__default__": {
- "max_attempts": 5,
- "delay": {
- "type": "exponential",
- "base": "rand",
- "growth_factor": 2
- },
- "policies": {
- "general_socket_errors": {"$ref": "general_socket_errors"},
- "general_server_error": {"$ref": "general_server_error"},
- "bad_gateway": {"$ref": "bad_gateway"},
- "service_unavailable": {"$ref": "service_unavailable"},
- "gateway_timeout": {"$ref": "gateway_timeout"},
- "limit_exceeded": {"$ref": "limit_exceeded"},
- "throttling_exception": {"$ref": "throttling_exception"},
- "throttled_exception": {"$ref": "throttled_exception"},
- "request_throttled_exception": {"$ref": "request_throttled_exception"},
- "throttling": {"$ref": "throttling"},
- "too_many_requests": {"$ref": "too_many_requests"}
- }
- },
- "organizations": {
- "__default__": {
- "policies": {
- "too_many_requests": {
- "applies_when": {
- "response": {
- "service_error_code": "TooManyRequestsException",
- "http_status_code": 400
- }
- }
- }
- }
- }
- },
- "dynamodb": {
- "__default__": {
- "max_attempts": 10,
- "delay": {
- "type": "exponential",
- "base": 0.05,
- "growth_factor": 2
- },
- "policies": {
- "throughput_exceeded": {
- "applies_when": {
- "response": {
- "service_error_code": "ProvisionedThroughputExceededException",
- "http_status_code": 400
- }
- }
- },
- "crc32": {
- "applies_when": {
- "response": {
- "crc32body": "x-amz-crc32"
- }
- }
- }
- }
- }
- },
- "ec2": {
- "__default__": {
- "policies": {
- "request_limit_exceeded": {
- "applies_when": {
- "response": {
- "service_error_code": "RequestLimitExceeded",
- "http_status_code": 503
- }
- }
- }
- }
- }
- },
- "cloudsearch": {
- "__default__": {
- "policies": {
- "request_limit_exceeded": {
- "applies_when": {
- "response": {
- "service_error_code": "BandwidthLimitExceeded",
- "http_status_code": 509
- }
- }
- }
- }
- }
- },
- "kinesis": {
- "DescribeStream": {
- "policies": {
- "request_limit_exceeded": {
- "applies_when": {
- "response": {
- "service_error_code": "LimitExceededException",
- "http_status_code": 400
- }
- }
- }
- }
- }
- },
- "sqs": {
- "__default__": {
- "policies": {
- "request_limit_exceeded": {
- "applies_when": {
- "response": {
- "service_error_code": "RequestThrottled",
- "http_status_code": 403
- }
- }
- }
- }
- }
- },
- "s3": {
- "__default__": {
- "policies": {
- "timeouts": {
- "applies_when": {
- "response": {
- "http_status_code": 400,
- "service_error_code": "RequestTimeout"
- }
- }
- },
- "contentmd5": {
- "applies_when": {
- "response": {
- "http_status_code": 400,
- "service_error_code": "BadDigest"
- }
- }
- }
- }
- }
- },
- "glacier": {
- "__default__": {
- "policies": {
- "timeouts": {
- "applies_when": {
- "response": {
- "http_status_code": 408,
- "service_error_code": "RequestTimeoutException"
- }
- }
- }
- }
- }
- },
- "route53": {
- "__default__": {
- "policies": {
- "request_limit_exceeded": {
- "applies_when": {
- "response": {
- "service_error_code": "Throttling",
- "http_status_code": 400
- }
- }
- },
- "still_processing": {
- "applies_when": {
- "response": {
- "service_error_code": "PriorRequestNotComplete",
- "http_status_code": 400
- }
- }
- }
- }
- }
- }
- }
-}
diff --git a/.eggs/botocore-1.10.75-py2.7.egg/botocore/data/acm-pca/2017-08-22/paginators-1.json b/.eggs/botocore-1.10.75-py2.7.egg/botocore/data/acm-pca/2017-08-22/paginators-1.json
deleted file mode 100644
index ea142457..00000000
--- a/.eggs/botocore-1.10.75-py2.7.egg/botocore/data/acm-pca/2017-08-22/paginators-1.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "pagination": {}
-}
diff --git a/.eggs/botocore-1.10.75-py2.7.egg/botocore/data/acm-pca/2017-08-22/service-2.json b/.eggs/botocore-1.10.75-py2.7.egg/botocore/data/acm-pca/2017-08-22/service-2.json
deleted file mode 100644
index f24c7ba6..00000000
--- a/.eggs/botocore-1.10.75-py2.7.egg/botocore/data/acm-pca/2017-08-22/service-2.json
+++ /dev/null
@@ -1,1261 +0,0 @@
-{
- "version":"2.0",
- "metadata":{
- "apiVersion":"2017-08-22",
- "endpointPrefix":"acm-pca",
- "jsonVersion":"1.1",
- "protocol":"json",
- "serviceAbbreviation":"ACM-PCA",
- "serviceFullName":"AWS Certificate Manager Private Certificate Authority",
- "serviceId":"ACM PCA",
- "signatureVersion":"v4",
- "targetPrefix":"ACMPrivateCA",
- "uid":"acm-pca-2017-08-22"
- },
- "operations":{
- "CreateCertificateAuthority":{
- "name":"CreateCertificateAuthority",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"CreateCertificateAuthorityRequest"},
- "output":{"shape":"CreateCertificateAuthorityResponse"},
- "errors":[
- {"shape":"InvalidArgsException"},
- {"shape":"InvalidPolicyException"},
- {"shape":"LimitExceededException"}
- ],
- "documentation":"Creates a private subordinate certificate authority (CA). You must specify the CA configuration, the revocation configuration, the CA type, and an optional idempotency token. The CA configuration specifies the name of the algorithm and key size to be used to create the CA private key, the type of signing algorithm that the CA uses to sign, and X.500 subject information. The CRL (certificate revocation list) configuration specifies the CRL expiration period in days (the validity period of the CRL), the Amazon S3 bucket that will contain the CRL, and a CNAME alias for the S3 bucket that is included in certificates issued by the CA. If successful, this operation returns the Amazon Resource Name (ARN) of the CA.
",
- "idempotent":true
- },
- "CreateCertificateAuthorityAuditReport":{
- "name":"CreateCertificateAuthorityAuditReport",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"CreateCertificateAuthorityAuditReportRequest"},
- "output":{"shape":"CreateCertificateAuthorityAuditReportResponse"},
- "errors":[
- {"shape":"RequestInProgressException"},
- {"shape":"RequestFailedException"},
- {"shape":"ResourceNotFoundException"},
- {"shape":"InvalidArnException"},
- {"shape":"InvalidArgsException"},
- {"shape":"InvalidStateException"}
- ],
- "documentation":"Creates an audit report that lists every time that the your CA private key is used. The report is saved in the Amazon S3 bucket that you specify on input. The IssueCertificate and RevokeCertificate operations use the private key. You can generate a new report every 30 minutes.
",
- "idempotent":true
- },
- "DeleteCertificateAuthority":{
- "name":"DeleteCertificateAuthority",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"DeleteCertificateAuthorityRequest"},
- "errors":[
- {"shape":"ConcurrentModificationException"},
- {"shape":"ResourceNotFoundException"},
- {"shape":"InvalidArnException"},
- {"shape":"InvalidStateException"}
- ],
- "documentation":"Deletes a private certificate authority (CA). You must provide the ARN (Amazon Resource Name) of the private CA that you want to delete. You can find the ARN by calling the ListCertificateAuthorities operation. Before you can delete a CA, you must disable it. Call the UpdateCertificateAuthority operation and set the CertificateAuthorityStatus parameter to DISABLED
.
Additionally, you can delete a CA if you are waiting for it to be created (the Status field of the CertificateAuthority is CREATING
). You can also delete it if the CA has been created but you haven't yet imported the signed certificate (the Status is PENDING_CERTIFICATE
) into ACM PCA.
If the CA is in one of the aforementioned states and you call DeleteCertificateAuthority, the CA's status changes to DELETED
. However, the CA won't be permentantly deleted until the restoration period has passed. By default, if you do not set the PermanentDeletionTimeInDays
parameter, the CA remains restorable for 30 days. You can set the parameter from 7 to 30 days. The DescribeCertificateAuthority operation returns the time remaining in the restoration window of a Private CA in the DELETED
state. To restore an eligable CA, call the RestoreCertificateAuthority operation.
"
- },
- "DescribeCertificateAuthority":{
- "name":"DescribeCertificateAuthority",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"DescribeCertificateAuthorityRequest"},
- "output":{"shape":"DescribeCertificateAuthorityResponse"},
- "errors":[
- {"shape":"ResourceNotFoundException"},
- {"shape":"InvalidArnException"}
- ],
- "documentation":"Lists information about your private certificate authority (CA). You specify the private CA on input by its ARN (Amazon Resource Name). The output contains the status of your CA. This can be any of the following:
-
CREATING
- ACM PCA is creating your private certificate authority.
-
PENDING_CERTIFICATE
- The certificate is pending. You must use your on-premises root or subordinate CA to sign your private CA CSR and then import it into PCA.
-
ACTIVE
- Your private CA is active.
-
DISABLED
- Your private CA has been disabled.
-
EXPIRED
- Your private CA certificate has expired.
-
FAILED
- Your private CA has failed. Your CA can fail because of problems such a network outage or backend AWS failure or other errors. A failed CA can never return to the pending state. You must create a new CA.
-
DELETED
- Your private CA is within the restoration period, after which it will be permanently deleted. The length of time remaining in the CA's restoration period will also be included in this operation's output.
"
- },
- "DescribeCertificateAuthorityAuditReport":{
- "name":"DescribeCertificateAuthorityAuditReport",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"DescribeCertificateAuthorityAuditReportRequest"},
- "output":{"shape":"DescribeCertificateAuthorityAuditReportResponse"},
- "errors":[
- {"shape":"ResourceNotFoundException"},
- {"shape":"InvalidArnException"},
- {"shape":"InvalidArgsException"}
- ],
- "documentation":"Lists information about a specific audit report created by calling the CreateCertificateAuthorityAuditReport operation. Audit information is created every time the certificate authority (CA) private key is used. The private key is used when you call the IssueCertificate operation or the RevokeCertificate operation.
"
- },
- "GetCertificate":{
- "name":"GetCertificate",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"GetCertificateRequest"},
- "output":{"shape":"GetCertificateResponse"},
- "errors":[
- {"shape":"RequestInProgressException"},
- {"shape":"RequestFailedException"},
- {"shape":"ResourceNotFoundException"},
- {"shape":"InvalidArnException"},
- {"shape":"InvalidStateException"}
- ],
- "documentation":"Retrieves a certificate from your private CA. The ARN of the certificate is returned when you call the IssueCertificate operation. You must specify both the ARN of your private CA and the ARN of the issued certificate when calling the GetCertificate operation. You can retrieve the certificate if it is in the ISSUED state. You can call the CreateCertificateAuthorityAuditReport operation to create a report that contains information about all of the certificates issued and revoked by your private CA.
"
- },
- "GetCertificateAuthorityCertificate":{
- "name":"GetCertificateAuthorityCertificate",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"GetCertificateAuthorityCertificateRequest"},
- "output":{"shape":"GetCertificateAuthorityCertificateResponse"},
- "errors":[
- {"shape":"ResourceNotFoundException"},
- {"shape":"InvalidStateException"},
- {"shape":"InvalidArnException"}
- ],
- "documentation":"Retrieves the certificate and certificate chain for your private certificate authority (CA). Both the certificate and the chain are base64 PEM-encoded. The chain does not include the CA certificate. Each certificate in the chain signs the one before it.
"
- },
- "GetCertificateAuthorityCsr":{
- "name":"GetCertificateAuthorityCsr",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"GetCertificateAuthorityCsrRequest"},
- "output":{"shape":"GetCertificateAuthorityCsrResponse"},
- "errors":[
- {"shape":"RequestInProgressException"},
- {"shape":"RequestFailedException"},
- {"shape":"ResourceNotFoundException"},
- {"shape":"InvalidArnException"},
- {"shape":"InvalidStateException"}
- ],
- "documentation":"Retrieves the certificate signing request (CSR) for your private certificate authority (CA). The CSR is created when you call the CreateCertificateAuthority operation. Take the CSR to your on-premises X.509 infrastructure and sign it by using your root or a subordinate CA. Then import the signed certificate back into ACM PCA by calling the ImportCertificateAuthorityCertificate operation. The CSR is returned as a base64 PEM-encoded string.
"
- },
- "ImportCertificateAuthorityCertificate":{
- "name":"ImportCertificateAuthorityCertificate",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"ImportCertificateAuthorityCertificateRequest"},
- "errors":[
- {"shape":"ConcurrentModificationException"},
- {"shape":"RequestInProgressException"},
- {"shape":"RequestFailedException"},
- {"shape":"ResourceNotFoundException"},
- {"shape":"InvalidArnException"},
- {"shape":"InvalidStateException"},
- {"shape":"MalformedCertificateException"},
- {"shape":"CertificateMismatchException"}
- ],
- "documentation":"Imports your signed private CA certificate into ACM PCA. Before you can call this operation, you must create the private certificate authority by calling the CreateCertificateAuthority operation. You must then generate a certificate signing request (CSR) by calling the GetCertificateAuthorityCsr operation. Take the CSR to your on-premises CA and use the root certificate or a subordinate certificate to sign it. Create a certificate chain and copy the signed certificate and the certificate chain to your working directory.
Your certificate chain must not include the private CA certificate that you are importing.
Your on-premises CA certificate must be the last certificate in your chain. The subordinate certificate, if any, that your root CA signed must be next to last. The subordinate certificate signed by the preceding subordinate CA must come next, and so on until your chain is built.
The chain must be PEM-encoded.
"
- },
- "IssueCertificate":{
- "name":"IssueCertificate",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"IssueCertificateRequest"},
- "output":{"shape":"IssueCertificateResponse"},
- "errors":[
- {"shape":"LimitExceededException"},
- {"shape":"ResourceNotFoundException"},
- {"shape":"InvalidStateException"},
- {"shape":"InvalidArnException"},
- {"shape":"InvalidArgsException"},
- {"shape":"MalformedCSRException"}
- ],
- "documentation":"Uses your private certificate authority (CA) to issue a client certificate. This operation returns the Amazon Resource Name (ARN) of the certificate. You can retrieve the certificate by calling the GetCertificate operation and specifying the ARN.
You cannot use the ACM ListCertificateAuthorities operation to retrieve the ARNs of the certificates that you issue by using ACM PCA.
",
- "idempotent":true
- },
- "ListCertificateAuthorities":{
- "name":"ListCertificateAuthorities",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"ListCertificateAuthoritiesRequest"},
- "output":{"shape":"ListCertificateAuthoritiesResponse"},
- "errors":[
- {"shape":"InvalidNextTokenException"}
- ],
- "documentation":"Lists the private certificate authorities that you created by using the CreateCertificateAuthority operation.
"
- },
- "ListTags":{
- "name":"ListTags",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"ListTagsRequest"},
- "output":{"shape":"ListTagsResponse"},
- "errors":[
- {"shape":"ResourceNotFoundException"},
- {"shape":"InvalidArnException"}
- ],
- "documentation":"Lists the tags, if any, that are associated with your private CA. Tags are labels that you can use to identify and organize your CAs. Each tag consists of a key and an optional value. Call the TagCertificateAuthority operation to add one or more tags to your CA. Call the UntagCertificateAuthority operation to remove tags.
"
- },
- "RestoreCertificateAuthority":{
- "name":"RestoreCertificateAuthority",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"RestoreCertificateAuthorityRequest"},
- "errors":[
- {"shape":"ResourceNotFoundException"},
- {"shape":"InvalidStateException"},
- {"shape":"InvalidArnException"}
- ],
- "documentation":"Restores a certificate authority (CA) that is in the DELETED
state. You can restore a CA during the period that you defined in the PermanentDeletionTimeInDays parameter of the DeleteCertificateAuthority operation. Currently, you can specify 7 to 30 days. If you did not specify a PermanentDeletionTimeInDays value, by default you can restore the CA at any time in a 30 day period. You can check the time remaining in the restoration period of a private CA in the DELETED
state by calling the DescribeCertificateAuthority or ListCertificateAuthorities operations. The status of a restored CA is set to its pre-deletion status when the RestoreCertificateAuthority operation returns. To change its status to ACTIVE
, call the UpdateCertificateAuthority operation. If the private CA was in the PENDING_CERTIFICATE
state at deletion, you must use the ImportCertificateAuthorityCertificate operation to import a certificate authority into the private CA before it can be activated. You cannot restore a CA after the restoration period has ended.
"
- },
- "RevokeCertificate":{
- "name":"RevokeCertificate",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"RevokeCertificateRequest"},
- "errors":[
- {"shape":"ConcurrentModificationException"},
- {"shape":"InvalidArnException"},
- {"shape":"InvalidStateException"},
- {"shape":"ResourceNotFoundException"},
- {"shape":"RequestAlreadyProcessedException"},
- {"shape":"RequestInProgressException"},
- {"shape":"RequestFailedException"}
- ],
- "documentation":"Revokes a certificate that you issued by calling the IssueCertificate operation. If you enable a certificate revocation list (CRL) when you create or update your private CA, information about the revoked certificates will be included in the CRL. ACM PCA writes the CRL to an S3 bucket that you specify. For more information about revocation, see the CrlConfiguration structure. ACM PCA also writes revocation information to the audit report. For more information, see CreateCertificateAuthorityAuditReport.
"
- },
- "TagCertificateAuthority":{
- "name":"TagCertificateAuthority",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"TagCertificateAuthorityRequest"},
- "errors":[
- {"shape":"ResourceNotFoundException"},
- {"shape":"InvalidArnException"},
- {"shape":"InvalidStateException"},
- {"shape":"InvalidTagException"},
- {"shape":"TooManyTagsException"}
- ],
- "documentation":"Adds one or more tags to your private CA. Tags are labels that you can use to identify and organize your AWS resources. Each tag consists of a key and an optional value. You specify the private CA on input by its Amazon Resource Name (ARN). You specify the tag by using a key-value pair. You can apply a tag to just one private CA if you want to identify a specific characteristic of that CA, or you can apply the same tag to multiple private CAs if you want to filter for a common relationship among those CAs. To remove one or more tags, use the UntagCertificateAuthority operation. Call the ListTags operation to see what tags are associated with your CA.
"
- },
- "UntagCertificateAuthority":{
- "name":"UntagCertificateAuthority",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"UntagCertificateAuthorityRequest"},
- "errors":[
- {"shape":"ResourceNotFoundException"},
- {"shape":"InvalidArnException"},
- {"shape":"InvalidStateException"},
- {"shape":"InvalidTagException"}
- ],
- "documentation":"Remove one or more tags from your private CA. A tag consists of a key-value pair. If you do not specify the value portion of the tag when calling this operation, the tag will be removed regardless of value. If you specify a value, the tag is removed only if it is associated with the specified value. To add tags to a private CA, use the TagCertificateAuthority. Call the ListTags operation to see what tags are associated with your CA.
"
- },
- "UpdateCertificateAuthority":{
- "name":"UpdateCertificateAuthority",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"UpdateCertificateAuthorityRequest"},
- "errors":[
- {"shape":"ConcurrentModificationException"},
- {"shape":"ResourceNotFoundException"},
- {"shape":"InvalidArgsException"},
- {"shape":"InvalidArnException"},
- {"shape":"InvalidStateException"},
- {"shape":"InvalidPolicyException"}
- ],
- "documentation":"Updates the status or configuration of a private certificate authority (CA). Your private CA must be in the ACTIVE
or DISABLED
state before you can update it. You can disable a private CA that is in the ACTIVE
state or make a CA that is in the DISABLED
state active again.
"
- }
- },
- "shapes":{
- "ASN1Subject":{
- "type":"structure",
- "members":{
- "Country":{
- "shape":"CountryCodeString",
- "documentation":"Two-digit code that specifies the country in which the certificate subject located.
"
- },
- "Organization":{
- "shape":"String64",
- "documentation":"Legal name of the organization with which the certificate subject is affiliated.
"
- },
- "OrganizationalUnit":{
- "shape":"String64",
- "documentation":"A subdivision or unit of the organization (such as sales or finance) with which the certificate subject is affiliated.
"
- },
- "DistinguishedNameQualifier":{
- "shape":"DistinguishedNameQualifierString",
- "documentation":"Disambiguating information for the certificate subject.
"
- },
- "State":{
- "shape":"String128",
- "documentation":"State in which the subject of the certificate is located.
"
- },
- "CommonName":{
- "shape":"String64",
- "documentation":"Fully qualified domain name (FQDN) associated with the certificate subject.
"
- },
- "SerialNumber":{
- "shape":"String64",
- "documentation":"The certificate serial number.
"
- },
- "Locality":{
- "shape":"String128",
- "documentation":"The locality (such as a city or town) in which the certificate subject is located.
"
- },
- "Title":{
- "shape":"String64",
- "documentation":"A title such as Mr. or Ms., which is pre-pended to the name to refer formally to the certificate subject.
"
- },
- "Surname":{
- "shape":"String40",
- "documentation":"Family name. In the US and the UK, for example, the surname of an individual is ordered last. In Asian cultures the surname is typically ordered first.
"
- },
- "GivenName":{
- "shape":"String16",
- "documentation":"First name.
"
- },
- "Initials":{
- "shape":"String5",
- "documentation":"Concatenation that typically contains the first letter of the GivenName, the first letter of the middle name if one exists, and the first letter of the SurName.
"
- },
- "Pseudonym":{
- "shape":"String128",
- "documentation":"Typically a shortened version of a longer GivenName. For example, Jonathan is often shortened to John. Elizabeth is often shortened to Beth, Liz, or Eliza.
"
- },
- "GenerationQualifier":{
- "shape":"String3",
- "documentation":"Typically a qualifier appended to the name of an individual. Examples include Jr. for junior, Sr. for senior, and III for third.
"
- }
- },
- "documentation":"Contains information about the certificate subject. The certificate can be one issued by your private certificate authority (CA) or it can be your private CA certificate. The Subject field in the certificate identifies the entity that owns or controls the public key in the certificate. The entity can be a user, computer, device, or service. The Subject must contain an X.500 distinguished name (DN). A DN is a sequence of relative distinguished names (RDNs). The RDNs are separated by commas in the certificate. The DN must be unique for each entity, but your private CA can issue more than one certificate with the same DN to the same entity.
"
- },
- "Arn":{
- "type":"string",
- "max":200,
- "min":5,
- "pattern":"arn:[\\w+=/,.@-]+:[\\w+=/,.@-]+:[\\w+=/,.@-]*:[0-9]+:[\\w+=,.@-]+(/[\\w+=/,.@-]+)*"
- },
- "AuditReportId":{
- "type":"string",
- "max":36,
- "min":36,
- "pattern":"[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}"
- },
- "AuditReportResponseFormat":{
- "type":"string",
- "enum":[
- "JSON",
- "CSV"
- ]
- },
- "AuditReportStatus":{
- "type":"string",
- "enum":[
- "CREATING",
- "SUCCESS",
- "FAILED"
- ]
- },
- "Boolean":{"type":"boolean"},
- "CertificateAuthorities":{
- "type":"list",
- "member":{"shape":"CertificateAuthority"}
- },
- "CertificateAuthority":{
- "type":"structure",
- "members":{
- "Arn":{
- "shape":"Arn",
- "documentation":"Amazon Resource Name (ARN) for your private certificate authority (CA). The format is 12345678-1234-1234-1234-123456789012
.
"
- },
- "CreatedAt":{
- "shape":"TStamp",
- "documentation":"Date and time at which your private CA was created.
"
- },
- "LastStateChangeAt":{
- "shape":"TStamp",
- "documentation":"Date and time at which your private CA was last updated.
"
- },
- "Type":{
- "shape":"CertificateAuthorityType",
- "documentation":"Type of your private CA.
"
- },
- "Serial":{
- "shape":"String",
- "documentation":"Serial number of your private CA.
"
- },
- "Status":{
- "shape":"CertificateAuthorityStatus",
- "documentation":"Status of your private CA.
"
- },
- "NotBefore":{
- "shape":"TStamp",
- "documentation":"Date and time before which your private CA certificate is not valid.
"
- },
- "NotAfter":{
- "shape":"TStamp",
- "documentation":"Date and time after which your private CA certificate is not valid.
"
- },
- "FailureReason":{
- "shape":"FailureReason",
- "documentation":"Reason the request to create your private CA failed.
"
- },
- "CertificateAuthorityConfiguration":{
- "shape":"CertificateAuthorityConfiguration",
- "documentation":"Your private CA configuration.
"
- },
- "RevocationConfiguration":{
- "shape":"RevocationConfiguration",
- "documentation":"Information about the certificate revocation list (CRL) created and maintained by your private CA.
"
- },
- "RestorableUntil":{
- "shape":"TStamp",
- "documentation":"The period during which a deleted CA can be restored. For more information, see the PermanentDeletionTimeInDays
parameter of the DeleteCertificateAuthorityRequest operation.
"
- }
- },
- "documentation":"Contains information about your private certificate authority (CA). Your private CA can issue and revoke X.509 digital certificates. Digital certificates verify that the entity named in the certificate Subject field owns or controls the public key contained in the Subject Public Key Info field. Call the CreateCertificateAuthority operation to create your private CA. You must then call the GetCertificateAuthorityCertificate operation to retrieve a private CA certificate signing request (CSR). Take the CSR to your on-premises CA and sign it with the root CA certificate or a subordinate certificate. Call the ImportCertificateAuthorityCertificate operation to import the signed certificate into AWS Certificate Manager (ACM).
"
- },
- "CertificateAuthorityConfiguration":{
- "type":"structure",
- "required":[
- "KeyAlgorithm",
- "SigningAlgorithm",
- "Subject"
- ],
- "members":{
- "KeyAlgorithm":{
- "shape":"KeyAlgorithm",
- "documentation":"Type of the public key algorithm and size, in bits, of the key pair that your key pair creates when it issues a certificate.
"
- },
- "SigningAlgorithm":{
- "shape":"SigningAlgorithm",
- "documentation":"Name of the algorithm your private CA uses to sign certificate requests.
"
- },
- "Subject":{
- "shape":"ASN1Subject",
- "documentation":"Structure that contains X.500 distinguished name information for your private CA.
"
- }
- },
- "documentation":"Contains configuration information for your private certificate authority (CA). This includes information about the class of public key algorithm and the key pair that your private CA creates when it issues a certificate, the signature algorithm it uses used when issuing certificates, and its X.500 distinguished name. You must specify this information when you call the CreateCertificateAuthority operation.
"
- },
- "CertificateAuthorityStatus":{
- "type":"string",
- "enum":[
- "CREATING",
- "PENDING_CERTIFICATE",
- "ACTIVE",
- "DELETED",
- "DISABLED",
- "EXPIRED",
- "FAILED"
- ]
- },
- "CertificateAuthorityType":{
- "type":"string",
- "enum":["SUBORDINATE"]
- },
- "CertificateBody":{"type":"string"},
- "CertificateBodyBlob":{
- "type":"blob",
- "max":32768,
- "min":1
- },
- "CertificateChain":{"type":"string"},
- "CertificateChainBlob":{
- "type":"blob",
- "max":2097152,
- "min":0
- },
- "CertificateMismatchException":{
- "type":"structure",
- "members":{
- "message":{"shape":"String"}
- },
- "documentation":"The certificate authority certificate you are importing does not comply with conditions specified in the certificate that signed it.
",
- "exception":true
- },
- "ConcurrentModificationException":{
- "type":"structure",
- "members":{
- "message":{"shape":"String"}
- },
- "documentation":"A previous update to your private CA is still ongoing.
",
- "exception":true
- },
- "CountryCodeString":{
- "type":"string",
- "pattern":"[A-Za-z]{2}"
- },
- "CreateCertificateAuthorityAuditReportRequest":{
- "type":"structure",
- "required":[
- "CertificateAuthorityArn",
- "S3BucketName",
- "AuditReportResponseFormat"
- ],
- "members":{
- "CertificateAuthorityArn":{
- "shape":"Arn",
- "documentation":"Amazon Resource Name (ARN) of the CA to be audited. This is of the form:
arn:aws:acm-pca:region:account:certificate-authority/12345678-1234-1234-1234-123456789012
.
"
- },
- "S3BucketName":{
- "shape":"String",
- "documentation":"Name of the S3 bucket that will contain the audit report.
"
- },
- "AuditReportResponseFormat":{
- "shape":"AuditReportResponseFormat",
- "documentation":"Format in which to create the report. This can be either JSON or CSV.
"
- }
- }
- },
- "CreateCertificateAuthorityAuditReportResponse":{
- "type":"structure",
- "members":{
- "AuditReportId":{
- "shape":"AuditReportId",
- "documentation":"An alphanumeric string that contains a report identifier.
"
- },
- "S3Key":{
- "shape":"String",
- "documentation":"The key that uniquely identifies the report file in your S3 bucket.
"
- }
- }
- },
- "CreateCertificateAuthorityRequest":{
- "type":"structure",
- "required":[
- "CertificateAuthorityConfiguration",
- "CertificateAuthorityType"
- ],
- "members":{
- "CertificateAuthorityConfiguration":{
- "shape":"CertificateAuthorityConfiguration",
- "documentation":"Name and bit size of the private key algorithm, the name of the signing algorithm, and X.500 certificate subject information.
"
- },
- "RevocationConfiguration":{
- "shape":"RevocationConfiguration",
- "documentation":"Contains a Boolean value that you can use to enable a certification revocation list (CRL) for the CA, the name of the S3 bucket to which ACM PCA will write the CRL, and an optional CNAME alias that you can use to hide the name of your bucket in the CRL Distribution Points extension of your CA certificate. For more information, see the CrlConfiguration structure.
"
- },
- "CertificateAuthorityType":{
- "shape":"CertificateAuthorityType",
- "documentation":"The type of the certificate authority. Currently, this must be SUBORDINATE.
"
- },
- "IdempotencyToken":{
- "shape":"IdempotencyToken",
- "documentation":"Alphanumeric string that can be used to distinguish between calls to CreateCertificateAuthority. Idempotency tokens time out after five minutes. Therefore, if you call CreateCertificateAuthority multiple times with the same idempotency token within a five minute period, ACM PCA recognizes that you are requesting only one certificate. As a result, ACM PCA issues only one. If you change the idempotency token for each call, however, ACM PCA recognizes that you are requesting multiple certificates.
"
- }
- }
- },
- "CreateCertificateAuthorityResponse":{
- "type":"structure",
- "members":{
- "CertificateAuthorityArn":{
- "shape":"Arn",
- "documentation":"If successful, the Amazon Resource Name (ARN) of the certificate authority (CA). This is of the form:
arn:aws:acm-pca:region:account:certificate-authority/12345678-1234-1234-1234-123456789012
.
"
- }
- }
- },
- "CrlConfiguration":{
- "type":"structure",
- "required":["Enabled"],
- "members":{
- "Enabled":{
- "shape":"Boolean",
- "documentation":"Boolean value that specifies whether certificate revocation lists (CRLs) are enabled. You can use this value to enable certificate revocation for a new CA when you call the CreateCertificateAuthority operation or for an existing CA when you call the UpdateCertificateAuthority operation.
",
- "box":true
- },
- "ExpirationInDays":{
- "shape":"Integer1To5000",
- "documentation":"Number of days until a certificate expires.
",
- "box":true
- },
- "CustomCname":{
- "shape":"String253",
- "documentation":"Name inserted into the certificate CRL Distribution Points extension that enables the use of an alias for the CRL distribution point. Use this value if you don't want the name of your S3 bucket to be public.
"
- },
- "S3BucketName":{
- "shape":"String3To255",
- "documentation":"Name of the S3 bucket that contains the CRL. If you do not provide a value for the CustomCname argument, the name of your S3 bucket is placed into the CRL Distribution Points extension of the issued certificate. You can change the name of your bucket by calling the UpdateCertificateAuthority operation. You must specify a bucket policy that allows ACM PCA to write the CRL to your bucket.
"
- }
- },
- "documentation":"Contains configuration information for a certificate revocation list (CRL). Your private certificate authority (CA) creates base CRLs. Delta CRLs are not supported. You can enable CRLs for your new or an existing private CA by setting the Enabled parameter to true
. Your private CA writes CRLs to an S3 bucket that you specify in the S3BucketName parameter. You can hide the name of your bucket by specifying a value for the CustomCname parameter. Your private CA copies the CNAME or the S3 bucket name to the CRL Distribution Points extension of each certificate it issues. Your S3 bucket policy must give write permission to ACM PCA.
Your private CA uses the value in the ExpirationInDays parameter to calculate the nextUpdate field in the CRL. The CRL is refreshed at 1/2 the age of next update or when a certificate is revoked. When a certificate is revoked, it is recorded in the next CRL that is generated and in the next audit report. Only time valid certificates are listed in the CRL. Expired certificates are not included.
CRLs contain the following fields:
-
Version: The current version number defined in RFC 5280 is V2. The integer value is 0x1.
-
Signature Algorithm: The name of the algorithm used to sign the CRL.
-
Issuer: The X.500 distinguished name of your private CA that issued the CRL.
-
Last Update: The issue date and time of this CRL.
-
Next Update: The day and time by which the next CRL will be issued.
-
Revoked Certificates: List of revoked certificates. Each list item contains the following information.
-
Serial Number: The serial number, in hexadecimal format, of the revoked certificate.
-
Revocation Date: Date and time the certificate was revoked.
-
CRL Entry Extensions: Optional extensions for the CRL entry.
-
CRL Extensions: Optional extensions for the CRL.
-
Signature Algorithm: Algorithm used by your private CA to sign the CRL.
-
Signature Value: Signature computed over the CRL.
Certificate revocation lists created by ACM PCA are DER-encoded. You can use the following OpenSSL command to list a CRL.
openssl crl -inform DER -text -in crl_path -noout
"
- },
- "CsrBlob":{
- "type":"blob",
- "max":32768,
- "min":1
- },
- "CsrBody":{"type":"string"},
- "DeleteCertificateAuthorityRequest":{
- "type":"structure",
- "required":["CertificateAuthorityArn"],
- "members":{
- "CertificateAuthorityArn":{
- "shape":"Arn",
- "documentation":"The Amazon Resource Name (ARN) that was returned when you called CreateCertificateAuthority. This must have the following form:
arn:aws:acm-pca:region:account:certificate-authority/12345678-1234-1234-1234-123456789012
.
"
- },
- "PermanentDeletionTimeInDays":{
- "shape":"PermanentDeletionTimeInDays",
- "documentation":"The number of days to make a CA restorable after it has been deleted. This can be anywhere from 7 to 30 days, with 30 being the default.
"
- }
- }
- },
- "DescribeCertificateAuthorityAuditReportRequest":{
- "type":"structure",
- "required":[
- "CertificateAuthorityArn",
- "AuditReportId"
- ],
- "members":{
- "CertificateAuthorityArn":{
- "shape":"Arn",
- "documentation":"The Amazon Resource Name (ARN) of the private CA. This must be of the form:
arn:aws:acm-pca:region:account:certificate-authority/12345678-1234-1234-1234-123456789012
.
"
- },
- "AuditReportId":{
- "shape":"AuditReportId",
- "documentation":"The report ID returned by calling the CreateCertificateAuthorityAuditReport operation.
"
- }
- }
- },
- "DescribeCertificateAuthorityAuditReportResponse":{
- "type":"structure",
- "members":{
- "AuditReportStatus":{
- "shape":"AuditReportStatus",
- "documentation":"Specifies whether report creation is in progress, has succeeded, or has failed.
"
- },
- "S3BucketName":{
- "shape":"String",
- "documentation":"Name of the S3 bucket that contains the report.
"
- },
- "S3Key":{
- "shape":"String",
- "documentation":"S3 key that uniquely identifies the report file in your S3 bucket.
"
- },
- "CreatedAt":{
- "shape":"TStamp",
- "documentation":"The date and time at which the report was created.
"
- }
- }
- },
- "DescribeCertificateAuthorityRequest":{
- "type":"structure",
- "required":["CertificateAuthorityArn"],
- "members":{
- "CertificateAuthorityArn":{
- "shape":"Arn",
- "documentation":"The Amazon Resource Name (ARN) that was returned when you called CreateCertificateAuthority. This must be of the form:
arn:aws:acm-pca:region:account:certificate-authority/12345678-1234-1234-1234-123456789012
.
"
- }
- }
- },
- "DescribeCertificateAuthorityResponse":{
- "type":"structure",
- "members":{
- "CertificateAuthority":{
- "shape":"CertificateAuthority",
- "documentation":"A CertificateAuthority structure that contains information about your private CA.
"
- }
- }
- },
- "DistinguishedNameQualifierString":{
- "type":"string",
- "max":64,
- "min":0,
- "pattern":"[a-zA-Z0-9'()+-.?:/= ]*"
- },
- "FailureReason":{
- "type":"string",
- "enum":[
- "REQUEST_TIMED_OUT",
- "UNSUPPORTED_ALGORITHM",
- "OTHER"
- ]
- },
- "GetCertificateAuthorityCertificateRequest":{
- "type":"structure",
- "required":["CertificateAuthorityArn"],
- "members":{
- "CertificateAuthorityArn":{
- "shape":"Arn",
- "documentation":"The Amazon Resource Name (ARN) of your private CA. This is of the form:
arn:aws:acm-pca:region:account:certificate-authority/12345678-1234-1234-1234-123456789012
.
"
- }
- }
- },
- "GetCertificateAuthorityCertificateResponse":{
- "type":"structure",
- "members":{
- "Certificate":{
- "shape":"CertificateBody",
- "documentation":"Base64-encoded certificate authority (CA) certificate.
"
- },
- "CertificateChain":{
- "shape":"CertificateChain",
- "documentation":"Base64-encoded certificate chain that includes any intermediate certificates and chains up to root on-premises certificate that you used to sign your private CA certificate. The chain does not include your private CA certificate.
"
- }
- }
- },
- "GetCertificateAuthorityCsrRequest":{
- "type":"structure",
- "required":["CertificateAuthorityArn"],
- "members":{
- "CertificateAuthorityArn":{
- "shape":"Arn",
- "documentation":"The Amazon Resource Name (ARN) that was returned when you called the CreateCertificateAuthority operation. This must be of the form:
arn:aws:acm-pca:region:account:certificate-authority/12345678-1234-1234-1234-123456789012
"
- }
- }
- },
- "GetCertificateAuthorityCsrResponse":{
- "type":"structure",
- "members":{
- "Csr":{
- "shape":"CsrBody",
- "documentation":"The base64 PEM-encoded certificate signing request (CSR) for your private CA certificate.
"
- }
- }
- },
- "GetCertificateRequest":{
- "type":"structure",
- "required":[
- "CertificateAuthorityArn",
- "CertificateArn"
- ],
- "members":{
- "CertificateAuthorityArn":{
- "shape":"Arn",
- "documentation":"The Amazon Resource Name (ARN) that was returned when you called CreateCertificateAuthority. This must be of the form:
arn:aws:acm-pca:region:account:certificate-authority/12345678-1234-1234-1234-123456789012
.
"
- },
- "CertificateArn":{
- "shape":"Arn",
- "documentation":"The ARN of the issued certificate. The ARN contains the certificate serial number and must be in the following form:
arn:aws:acm-pca:region:account:certificate-authority/12345678-1234-1234-1234-123456789012/certificate/286535153982981100925020015808220737245
"
- }
- }
- },
- "GetCertificateResponse":{
- "type":"structure",
- "members":{
- "Certificate":{
- "shape":"CertificateBody",
- "documentation":"The base64 PEM-encoded certificate specified by the CertificateArn
parameter.
"
- },
- "CertificateChain":{
- "shape":"CertificateChain",
- "documentation":"The base64 PEM-encoded certificate chain that chains up to the on-premises root CA certificate that you used to sign your private CA certificate.
"
- }
- }
- },
- "IdempotencyToken":{
- "type":"string",
- "max":36,
- "min":1,
- "pattern":"[\\u0009\\u000A\\u000D\\u0020-\\u00FF]*"
- },
- "ImportCertificateAuthorityCertificateRequest":{
- "type":"structure",
- "required":[
- "CertificateAuthorityArn",
- "Certificate",
- "CertificateChain"
- ],
- "members":{
- "CertificateAuthorityArn":{
- "shape":"Arn",
- "documentation":"The Amazon Resource Name (ARN) that was returned when you called CreateCertificateAuthority. This must be of the form:
arn:aws:acm-pca:region:account:certificate-authority/12345678-1234-1234-1234-123456789012
"
- },
- "Certificate":{
- "shape":"CertificateBodyBlob",
- "documentation":"The PEM-encoded certificate for your private CA. This must be signed by using your on-premises CA.
"
- },
- "CertificateChain":{
- "shape":"CertificateChainBlob",
- "documentation":"A PEM-encoded file that contains all of your certificates, other than the certificate you're importing, chaining up to your root CA. Your on-premises root certificate is the last in the chain, and each certificate in the chain signs the one preceding.
"
- }
- }
- },
- "Integer1To5000":{
- "type":"integer",
- "max":5000,
- "min":1
- },
- "InvalidArgsException":{
- "type":"structure",
- "members":{
- "message":{"shape":"String"}
- },
- "documentation":"One or more of the specified arguments was not valid.
",
- "exception":true
- },
- "InvalidArnException":{
- "type":"structure",
- "members":{
- "message":{"shape":"String"}
- },
- "documentation":"The requested Amazon Resource Name (ARN) does not refer to an existing resource.
",
- "exception":true
- },
- "InvalidNextTokenException":{
- "type":"structure",
- "members":{
- "message":{"shape":"String"}
- },
- "documentation":"The token specified in the NextToken
argument is not valid. Use the token returned from your previous call to ListCertificateAuthorities.
",
- "exception":true
- },
- "InvalidPolicyException":{
- "type":"structure",
- "members":{
- "message":{"shape":"String"}
- },
- "documentation":"The S3 bucket policy is not valid. The policy must give ACM PCA rights to read from and write to the bucket and find the bucket location.
",
- "exception":true
- },
- "InvalidStateException":{
- "type":"structure",
- "members":{
- "message":{"shape":"String"}
- },
- "documentation":"The private CA is in a state during which a report cannot be generated.
",
- "exception":true
- },
- "InvalidTagException":{
- "type":"structure",
- "members":{
- "message":{"shape":"String"}
- },
- "documentation":"The tag associated with the CA is not valid. The invalid argument is contained in the message field.
",
- "exception":true
- },
- "IssueCertificateRequest":{
- "type":"structure",
- "required":[
- "CertificateAuthorityArn",
- "Csr",
- "SigningAlgorithm",
- "Validity"
- ],
- "members":{
- "CertificateAuthorityArn":{
- "shape":"Arn",
- "documentation":"The Amazon Resource Name (ARN) that was returned when you called CreateCertificateAuthority. This must be of the form:
arn:aws:acm-pca:region:account:certificate-authority/12345678-1234-1234-1234-123456789012
"
- },
- "Csr":{
- "shape":"CsrBlob",
- "documentation":"The certificate signing request (CSR) for the certificate you want to issue. You can use the following OpenSSL command to create the CSR and a 2048 bit RSA private key.
openssl req -new -newkey rsa:2048 -days 365 -keyout private/test_cert_priv_key.pem -out csr/test_cert_.csr
If you have a configuration file, you can use the following OpenSSL command. The usr_cert
block in the configuration file contains your X509 version 3 extensions.
openssl req -new -config openssl_rsa.cnf -extensions usr_cert -newkey rsa:2048 -days -365 -keyout private/test_cert_priv_key.pem -out csr/test_cert_.csr
"
- },
- "SigningAlgorithm":{
- "shape":"SigningAlgorithm",
- "documentation":"The name of the algorithm that will be used to sign the certificate to be issued.
"
- },
- "Validity":{
- "shape":"Validity",
- "documentation":"The type of the validity period.
"
- },
- "IdempotencyToken":{
- "shape":"IdempotencyToken",
- "documentation":"Custom string that can be used to distinguish between calls to the IssueCertificate operation. Idempotency tokens time out after one hour. Therefore, if you call IssueCertificate multiple times with the same idempotency token within 5 minutes, ACM PCA recognizes that you are requesting only one certificate and will issue only one. If you change the idempotency token for each call, PCA recognizes that you are requesting multiple certificates.
"
- }
- }
- },
- "IssueCertificateResponse":{
- "type":"structure",
- "members":{
- "CertificateArn":{
- "shape":"Arn",
- "documentation":"The Amazon Resource Name (ARN) of the issued certificate and the certificate serial number. This is of the form:
arn:aws:acm-pca:region:account:certificate-authority/12345678-1234-1234-1234-123456789012/certificate/286535153982981100925020015808220737245
"
- }
- }
- },
- "KeyAlgorithm":{
- "type":"string",
- "enum":[
- "RSA_2048",
- "RSA_4096",
- "EC_prime256v1",
- "EC_secp384r1"
- ]
- },
- "LimitExceededException":{
- "type":"structure",
- "members":{
- "message":{"shape":"String"}
- },
- "documentation":"An ACM PCA limit has been exceeded. See the exception message returned to determine the limit that was exceeded.
",
- "exception":true
- },
- "ListCertificateAuthoritiesRequest":{
- "type":"structure",
- "members":{
- "NextToken":{
- "shape":"NextToken",
- "documentation":"Use this parameter when paginating results in a subsequent request after you receive a response with truncated results. Set it to the value of the NextToken
parameter from the response you just received.
"
- },
- "MaxResults":{
- "shape":"MaxResults",
- "documentation":"Use this parameter when paginating results to specify the maximum number of items to return in the response on each page. If additional items exist beyond the number you specify, the NextToken
element is sent in the response. Use this NextToken
value in a subsequent request to retrieve additional items.
"
- }
- }
- },
- "ListCertificateAuthoritiesResponse":{
- "type":"structure",
- "members":{
- "CertificateAuthorities":{
- "shape":"CertificateAuthorities",
- "documentation":"Summary information about each certificate authority you have created.
"
- },
- "NextToken":{
- "shape":"NextToken",
- "documentation":"When the list is truncated, this value is present and should be used for the NextToken
parameter in a subsequent pagination request.
"
- }
- }
- },
- "ListTagsRequest":{
- "type":"structure",
- "required":["CertificateAuthorityArn"],
- "members":{
- "CertificateAuthorityArn":{
- "shape":"Arn",
- "documentation":"The Amazon Resource Name (ARN) that was returned when you called the CreateCertificateAuthority operation. This must be of the form:
arn:aws:acm-pca:region:account:certificate-authority/12345678-1234-1234-1234-123456789012
"
- },
- "NextToken":{
- "shape":"NextToken",
- "documentation":"Use this parameter when paginating results in a subsequent request after you receive a response with truncated results. Set it to the value of NextToken from the response you just received.
"
- },
- "MaxResults":{
- "shape":"MaxResults",
- "documentation":"Use this parameter when paginating results to specify the maximum number of items to return in the response. If additional items exist beyond the number you specify, the NextToken element is sent in the response. Use this NextToken value in a subsequent request to retrieve additional items.
"
- }
- }
- },
- "ListTagsResponse":{
- "type":"structure",
- "members":{
- "Tags":{
- "shape":"TagList",
- "documentation":"The tags associated with your private CA.
"
- },
- "NextToken":{
- "shape":"NextToken",
- "documentation":"When the list is truncated, this value is present and should be used for the NextToken parameter in a subsequent pagination request.
"
- }
- }
- },
- "MalformedCSRException":{
- "type":"structure",
- "members":{
- "message":{"shape":"String"}
- },
- "documentation":"The certificate signing request is invalid.
",
- "exception":true
- },
- "MalformedCertificateException":{
- "type":"structure",
- "members":{
- "message":{"shape":"String"}
- },
- "documentation":"One or more fields in the certificate are invalid.
",
- "exception":true
- },
- "MaxResults":{
- "type":"integer",
- "max":1000,
- "min":1
- },
- "NextToken":{
- "type":"string",
- "max":500,
- "min":1
- },
- "PermanentDeletionTimeInDays":{
- "type":"integer",
- "max":30,
- "min":7
- },
- "PositiveLong":{
- "type":"long",
- "min":1
- },
- "RequestAlreadyProcessedException":{
- "type":"structure",
- "members":{
- "message":{"shape":"String"}
- },
- "documentation":"Your request has already been completed.
",
- "exception":true
- },
- "RequestFailedException":{
- "type":"structure",
- "members":{
- "message":{"shape":"String"}
- },
- "documentation":"The request has failed for an unspecified reason.
",
- "exception":true
- },
- "RequestInProgressException":{
- "type":"structure",
- "members":{
- "message":{"shape":"String"}
- },
- "documentation":"Your request is already in progress.
",
- "exception":true
- },
- "ResourceNotFoundException":{
- "type":"structure",
- "members":{
- "message":{"shape":"String"}
- },
- "documentation":"A resource such as a private CA, S3 bucket, certificate, or audit report cannot be found.
",
- "exception":true
- },
- "RestoreCertificateAuthorityRequest":{
- "type":"structure",
- "required":["CertificateAuthorityArn"],
- "members":{
- "CertificateAuthorityArn":{
- "shape":"Arn",
- "documentation":"The Amazon Resource Name (ARN) that was returned when you called the CreateCertificateAuthority operation. This must be of the form:
arn:aws:acm-pca:region:account:certificate-authority/12345678-1234-1234-1234-123456789012
"
- }
- }
- },
- "RevocationConfiguration":{
- "type":"structure",
- "members":{
- "CrlConfiguration":{
- "shape":"CrlConfiguration",
- "documentation":"Configuration of the certificate revocation list (CRL), if any, maintained by your private CA.
"
- }
- },
- "documentation":"Certificate revocation information used by the CreateCertificateAuthority and UpdateCertificateAuthority operations. Your private certificate authority (CA) can create and maintain a certificate revocation list (CRL). A CRL contains information about certificates revoked by your CA. For more information, see RevokeCertificate.
"
- },
- "RevocationReason":{
- "type":"string",
- "enum":[
- "UNSPECIFIED",
- "KEY_COMPROMISE",
- "CERTIFICATE_AUTHORITY_COMPROMISE",
- "AFFILIATION_CHANGED",
- "SUPERSEDED",
- "CESSATION_OF_OPERATION",
- "PRIVILEGE_WITHDRAWN",
- "A_A_COMPROMISE"
- ]
- },
- "RevokeCertificateRequest":{
- "type":"structure",
- "required":[
- "CertificateAuthorityArn",
- "CertificateSerial",
- "RevocationReason"
- ],
- "members":{
- "CertificateAuthorityArn":{
- "shape":"Arn",
- "documentation":"Amazon Resource Name (ARN) of the private CA that issued the certificate to be revoked. This must be of the form:
arn:aws:acm-pca:region:account:certificate-authority/12345678-1234-1234-1234-123456789012
"
- },
- "CertificateSerial":{
- "shape":"String128",
- "documentation":"Serial number of the certificate to be revoked. This must be in hexadecimal format. You can retrieve the serial number by calling GetCertificate with the Amazon Resource Name (ARN) of the certificate you want and the ARN of your private CA. The GetCertificate operation retrieves the certificate in the PEM format. You can use the following OpenSSL command to list the certificate in text format and copy the hexadecimal serial number.
openssl x509 -in file_path -text -noout
You can also copy the serial number from the console or use the DescribeCertificate operation in the AWS Certificate Manager API Reference.
"
- },
- "RevocationReason":{
- "shape":"RevocationReason",
- "documentation":"Specifies why you revoked the certificate.
"
- }
- }
- },
- "SigningAlgorithm":{
- "type":"string",
- "enum":[
- "SHA256WITHECDSA",
- "SHA384WITHECDSA",
- "SHA512WITHECDSA",
- "SHA256WITHRSA",
- "SHA384WITHRSA",
- "SHA512WITHRSA"
- ]
- },
- "String":{"type":"string"},
- "String128":{
- "type":"string",
- "max":128,
- "min":0
- },
- "String16":{
- "type":"string",
- "max":16,
- "min":0
- },
- "String253":{
- "type":"string",
- "max":253,
- "min":0
- },
- "String3":{
- "type":"string",
- "max":3,
- "min":0
- },
- "String3To255":{
- "type":"string",
- "max":255,
- "min":3
- },
- "String40":{
- "type":"string",
- "max":40,
- "min":0
- },
- "String5":{
- "type":"string",
- "max":5,
- "min":0
- },
- "String64":{
- "type":"string",
- "max":64,
- "min":0
- },
- "TStamp":{"type":"timestamp"},
- "Tag":{
- "type":"structure",
- "required":["Key"],
- "members":{
- "Key":{
- "shape":"TagKey",
- "documentation":"Key (name) of the tag.
"
- },
- "Value":{
- "shape":"TagValue",
- "documentation":"Value of the tag.
"
- }
- },
- "documentation":"Tags are labels that you can use to identify and organize your private CAs. Each tag consists of a key and an optional value. You can associate up to 50 tags with a private CA. To add one or more tags to a private CA, call the TagCertificateAuthority operation. To remove a tag, call the UntagCertificateAuthority operation.
"
- },
- "TagCertificateAuthorityRequest":{
- "type":"structure",
- "required":[
- "CertificateAuthorityArn",
- "Tags"
- ],
- "members":{
- "CertificateAuthorityArn":{
- "shape":"Arn",
- "documentation":"The Amazon Resource Name (ARN) that was returned when you called CreateCertificateAuthority. This must be of the form:
arn:aws:acm-pca:region:account:certificate-authority/12345678-1234-1234-1234-123456789012
"
- },
- "Tags":{
- "shape":"TagList",
- "documentation":"List of tags to be associated with the CA.
"
- }
- }
- },
- "TagKey":{
- "type":"string",
- "max":128,
- "min":1,
- "pattern":"[\\p{L}\\p{Z}\\p{N}_.:\\/=+\\-@]*"
- },
- "TagList":{
- "type":"list",
- "member":{"shape":"Tag"},
- "max":50,
- "min":1
- },
- "TagValue":{
- "type":"string",
- "max":256,
- "min":0,
- "pattern":"[\\p{L}\\p{Z}\\p{N}_.:\\/=+\\-@]*"
- },
- "TooManyTagsException":{
- "type":"structure",
- "members":{
- "message":{"shape":"String"}
- },
- "documentation":"You can associate up to 50 tags with a private CA. Exception information is contained in the exception message field.
",
- "exception":true
- },
- "UntagCertificateAuthorityRequest":{
- "type":"structure",
- "required":[
- "CertificateAuthorityArn",
- "Tags"
- ],
- "members":{
- "CertificateAuthorityArn":{
- "shape":"Arn",
- "documentation":"The Amazon Resource Name (ARN) that was returned when you called CreateCertificateAuthority. This must be of the form:
arn:aws:acm-pca:region:account:certificate-authority/12345678-1234-1234-1234-123456789012
"
- },
- "Tags":{
- "shape":"TagList",
- "documentation":"List of tags to be removed from the CA.
"
- }
- }
- },
- "UpdateCertificateAuthorityRequest":{
- "type":"structure",
- "required":["CertificateAuthorityArn"],
- "members":{
- "CertificateAuthorityArn":{
- "shape":"Arn",
- "documentation":"Amazon Resource Name (ARN) of the private CA that issued the certificate to be revoked. This must be of the form:
arn:aws:acm-pca:region:account:certificate-authority/12345678-1234-1234-1234-123456789012
"
- },
- "RevocationConfiguration":{
- "shape":"RevocationConfiguration",
- "documentation":"Revocation information for your private CA.
"
- },
- "Status":{
- "shape":"CertificateAuthorityStatus",
- "documentation":"Status of your private CA.
"
- }
- }
- },
- "Validity":{
- "type":"structure",
- "required":[
- "Value",
- "Type"
- ],
- "members":{
- "Value":{
- "shape":"PositiveLong",
- "documentation":"Time period.
",
- "box":true
- },
- "Type":{
- "shape":"ValidityPeriodType",
- "documentation":"Specifies whether the Value
parameter represents days, months, or years.
"
- }
- },
- "documentation":"Length of time for which the certificate issued by your private certificate authority (CA), or by the private CA itself, is valid in days, months, or years. You can issue a certificate by calling the IssueCertificate operation.
"
- },
- "ValidityPeriodType":{
- "type":"string",
- "enum":[
- "END_DATE",
- "ABSOLUTE",
- "DAYS",
- "MONTHS",
- "YEARS"
- ]
- }
- },
- "documentation":"You can use the ACM PCA API to create a private certificate authority (CA). You must first call the CreateCertificateAuthority operation. If successful, the operation returns an Amazon Resource Name (ARN) for your private CA. Use this ARN as input to the GetCertificateAuthorityCsr operation to retrieve the certificate signing request (CSR) for your private CA certificate. Sign the CSR using the root or an intermediate CA in your on-premises PKI hierarchy, and call the ImportCertificateAuthorityCertificate to import your signed private CA certificate into ACM PCA.
Use your private CA to issue and revoke certificates. These are private certificates that identify and secure client computers, servers, applications, services, devices, and users over SSLS/TLS connections within your organization. Call the IssueCertificate operation to issue a certificate. Call the RevokeCertificate operation to revoke a certificate.
Certificates issued by your private CA can be trusted only within your organization, not publicly.
Your private CA can optionally create a certificate revocation list (CRL) to track the certificates you revoke. To create a CRL, you must specify a RevocationConfiguration object when you call the CreateCertificateAuthority operation. ACM PCA writes the CRL to an S3 bucket that you specify. You must specify a bucket policy that grants ACM PCA write permission.
You can also call the CreateCertificateAuthorityAuditReport to create an optional audit report that lists every time the CA private key is used. The private key is used for signing when the IssueCertificate or RevokeCertificate operation is called.
"
-}
diff --git a/.eggs/botocore-1.10.75-py2.7.egg/botocore/data/acm/2015-12-08/examples-1.json b/.eggs/botocore-1.10.75-py2.7.egg/botocore/data/acm/2015-12-08/examples-1.json
deleted file mode 100644
index 0ea7e3b0..00000000
--- a/.eggs/botocore-1.10.75-py2.7.egg/botocore/data/acm/2015-12-08/examples-1.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "version": "1.0",
- "examples": {
- }
-}
diff --git a/.eggs/botocore-1.10.75-py2.7.egg/botocore/data/acm/2015-12-08/paginators-1.json b/.eggs/botocore-1.10.75-py2.7.egg/botocore/data/acm/2015-12-08/paginators-1.json
deleted file mode 100644
index 2e2e4f9a..00000000
--- a/.eggs/botocore-1.10.75-py2.7.egg/botocore/data/acm/2015-12-08/paginators-1.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "pagination": {
- "ListCertificates": {
- "input_token": "NextToken",
- "output_token": "NextToken",
- "limit_key": "MaxItems",
- "result_key": "CertificateSummaryList"
- }
- }
-}
diff --git a/.eggs/botocore-1.10.75-py2.7.egg/botocore/data/acm/2015-12-08/service-2.json b/.eggs/botocore-1.10.75-py2.7.egg/botocore/data/acm/2015-12-08/service-2.json
deleted file mode 100644
index 5845ed9e..00000000
--- a/.eggs/botocore-1.10.75-py2.7.egg/botocore/data/acm/2015-12-08/service-2.json
+++ /dev/null
@@ -1,1114 +0,0 @@
-{
- "version":"2.0",
- "metadata":{
- "apiVersion":"2015-12-08",
- "endpointPrefix":"acm",
- "jsonVersion":"1.1",
- "protocol":"json",
- "serviceAbbreviation":"ACM",
- "serviceFullName":"AWS Certificate Manager",
- "serviceId":"ACM",
- "signatureVersion":"v4",
- "targetPrefix":"CertificateManager",
- "uid":"acm-2015-12-08"
- },
- "operations":{
- "AddTagsToCertificate":{
- "name":"AddTagsToCertificate",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"AddTagsToCertificateRequest"},
- "errors":[
- {"shape":"ResourceNotFoundException"},
- {"shape":"InvalidArnException"},
- {"shape":"InvalidTagException"},
- {"shape":"TooManyTagsException"}
- ],
- "documentation":"Adds one or more tags to an ACM certificate. Tags are labels that you can use to identify and organize your AWS resources. Each tag consists of a key
and an optional value
. You specify the certificate on input by its Amazon Resource Name (ARN). You specify the tag by using a key-value pair.
You can apply a tag to just one certificate if you want to identify a specific characteristic of that certificate, or you can apply the same tag to multiple certificates if you want to filter for a common relationship among those certificates. Similarly, you can apply the same tag to multiple resources if you want to specify a relationship among those resources. For example, you can add the same tag to an ACM certificate and an Elastic Load Balancing load balancer to indicate that they are both used by the same website. For more information, see Tagging ACM certificates.
To remove one or more tags, use the RemoveTagsFromCertificate action. To view all of the tags that have been applied to the certificate, use the ListTagsForCertificate action.
"
- },
- "DeleteCertificate":{
- "name":"DeleteCertificate",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"DeleteCertificateRequest"},
- "errors":[
- {"shape":"ResourceNotFoundException"},
- {"shape":"ResourceInUseException"},
- {"shape":"InvalidArnException"}
- ],
- "documentation":"Deletes a certificate and its associated private key. If this action succeeds, the certificate no longer appears in the list that can be displayed by calling the ListCertificates action or be retrieved by calling the GetCertificate action. The certificate will not be available for use by AWS services integrated with ACM.
You cannot delete an ACM certificate that is being used by another AWS service. To delete a certificate that is in use, the certificate association must first be removed.
"
- },
- "DescribeCertificate":{
- "name":"DescribeCertificate",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"DescribeCertificateRequest"},
- "output":{"shape":"DescribeCertificateResponse"},
- "errors":[
- {"shape":"ResourceNotFoundException"},
- {"shape":"InvalidArnException"}
- ],
- "documentation":"Returns detailed metadata about the specified ACM certificate.
"
- },
- "ExportCertificate":{
- "name":"ExportCertificate",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"ExportCertificateRequest"},
- "output":{"shape":"ExportCertificateResponse"},
- "errors":[
- {"shape":"ResourceNotFoundException"},
- {"shape":"RequestInProgressException"},
- {"shape":"InvalidArnException"}
- ],
- "documentation":"Exports a private certificate issued by a private certificate authority (CA) for use anywhere. You can export the certificate, the certificate chain, and the encrypted private key associated with the public key embedded in the certificate. You must store the private key securely. The private key is a 2048 bit RSA key. You must provide a passphrase for the private key when exporting it. You can use the following OpenSSL command to decrypt it later. Provide the passphrase when prompted.
openssl rsa -in encrypted_key.pem -out decrypted_key.pem
"
- },
- "GetCertificate":{
- "name":"GetCertificate",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"GetCertificateRequest"},
- "output":{"shape":"GetCertificateResponse"},
- "errors":[
- {"shape":"ResourceNotFoundException"},
- {"shape":"RequestInProgressException"},
- {"shape":"InvalidArnException"}
- ],
- "documentation":"Retrieves a certificate specified by an ARN and its certificate chain . The chain is an ordered list of certificates that contains the end entity certificate, intermediate certificates of subordinate CAs, and the root certificate in that order. The certificate and certificate chain are base64 encoded. If you want to decode the certificate to see the individual fields, you can use OpenSSL.
"
- },
- "ImportCertificate":{
- "name":"ImportCertificate",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"ImportCertificateRequest"},
- "output":{"shape":"ImportCertificateResponse"},
- "errors":[
- {"shape":"ResourceNotFoundException"},
- {"shape":"LimitExceededException"}
- ],
- "documentation":"Imports a certificate into AWS Certificate Manager (ACM) to use with services that are integrated with ACM. Note that integrated services allow only certificate types and keys they support to be associated with their resources. Further, their support differs depending on whether the certificate is imported into IAM or into ACM. For more information, see the documentation for each service. For more information about importing certificates into ACM, see Importing Certificates in the AWS Certificate Manager User Guide.
ACM does not provide managed renewal for certificates that you import.
Note the following guidelines when importing third party certificates:
-
You must enter the private key that matches the certificate you are importing.
-
The private key must be unencrypted. You cannot import a private key that is protected by a password or a passphrase.
-
If the certificate you are importing is not self-signed, you must enter its certificate chain.
-
If a certificate chain is included, the issuer must be the subject of one of the certificates in the chain.
-
The certificate, private key, and certificate chain must be PEM-encoded.
-
The current time must be between the Not Before
and Not After
certificate fields.
-
The Issuer
field must not be empty.
-
The OCSP authority URL, if present, must not exceed 1000 characters.
-
To import a new certificate, omit the CertificateArn
argument. Include this argument only when you want to replace a previously imported certificate.
-
When you import a certificate by using the CLI, you must specify the certificate, the certificate chain, and the private key by their file names preceded by file://
. For example, you can specify a certificate saved in the C:\\temp
folder as file://C:\\temp\\certificate_to_import.pem
. If you are making an HTTP or HTTPS Query request, include these arguments as BLOBs.
-
When you import a certificate by using an SDK, you must specify the certificate, the certificate chain, and the private key files in the manner required by the programming language you're using.
This operation returns the Amazon Resource Name (ARN) of the imported certificate.
"
- },
- "ListCertificates":{
- "name":"ListCertificates",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"ListCertificatesRequest"},
- "output":{"shape":"ListCertificatesResponse"},
- "documentation":"Retrieves a list of certificate ARNs and domain names. You can request that only certificates that match a specific status be listed. You can also filter by specific attributes of the certificate.
"
- },
- "ListTagsForCertificate":{
- "name":"ListTagsForCertificate",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"ListTagsForCertificateRequest"},
- "output":{"shape":"ListTagsForCertificateResponse"},
- "errors":[
- {"shape":"ResourceNotFoundException"},
- {"shape":"InvalidArnException"}
- ],
- "documentation":"Lists the tags that have been applied to the ACM certificate. Use the certificate's Amazon Resource Name (ARN) to specify the certificate. To add a tag to an ACM certificate, use the AddTagsToCertificate action. To delete a tag, use the RemoveTagsFromCertificate action.
"
- },
- "RemoveTagsFromCertificate":{
- "name":"RemoveTagsFromCertificate",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"RemoveTagsFromCertificateRequest"},
- "errors":[
- {"shape":"ResourceNotFoundException"},
- {"shape":"InvalidArnException"},
- {"shape":"InvalidTagException"}
- ],
- "documentation":"Remove one or more tags from an ACM certificate. A tag consists of a key-value pair. If you do not specify the value portion of the tag when calling this function, the tag will be removed regardless of value. If you specify a value, the tag is removed only if it is associated with the specified value.
To add tags to a certificate, use the AddTagsToCertificate action. To view all of the tags that have been applied to a specific ACM certificate, use the ListTagsForCertificate action.
"
- },
- "RequestCertificate":{
- "name":"RequestCertificate",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"RequestCertificateRequest"},
- "output":{"shape":"RequestCertificateResponse"},
- "errors":[
- {"shape":"LimitExceededException"},
- {"shape":"InvalidDomainValidationOptionsException"},
- {"shape":"InvalidArnException"}
- ],
- "documentation":"Requests an ACM certificate for use with other AWS services. To request an ACM certificate, you must specify a fully qualified domain name (FQDN) in the DomainName
parameter. You can also specify additional FQDNs in the SubjectAlternativeNames
parameter.
If you are requesting a private certificate, domain validation is not required. If you are requesting a public certificate, each domain name that you specify must be validated to verify that you own or control the domain. You can use DNS validation or email validation. We recommend that you use DNS validation. ACM issues public certificates after receiving approval from the domain owner.
"
- },
- "ResendValidationEmail":{
- "name":"ResendValidationEmail",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"ResendValidationEmailRequest"},
- "errors":[
- {"shape":"ResourceNotFoundException"},
- {"shape":"InvalidStateException"},
- {"shape":"InvalidArnException"},
- {"shape":"InvalidDomainValidationOptionsException"}
- ],
- "documentation":"Resends the email that requests domain ownership validation. The domain owner or an authorized representative must approve the ACM certificate before it can be issued. The certificate can be approved by clicking a link in the mail to navigate to the Amazon certificate approval website and then clicking I Approve. However, the validation email can be blocked by spam filters. Therefore, if you do not receive the original mail, you can request that the mail be resent within 72 hours of requesting the ACM certificate. If more than 72 hours have elapsed since your original request or since your last attempt to resend validation mail, you must request a new certificate. For more information about setting up your contact email addresses, see Configure Email for your Domain.
"
- },
- "UpdateCertificateOptions":{
- "name":"UpdateCertificateOptions",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"UpdateCertificateOptionsRequest"},
- "errors":[
- {"shape":"ResourceNotFoundException"},
- {"shape":"LimitExceededException"},
- {"shape":"InvalidStateException"},
- {"shape":"InvalidArnException"}
- ],
- "documentation":"Updates a certificate. Currently, you can use this function to specify whether to opt in to or out of recording your certificate in a certificate transparency log. For more information, see Opting Out of Certificate Transparency Logging.
"
- }
- },
- "shapes":{
- "AddTagsToCertificateRequest":{
- "type":"structure",
- "required":[
- "CertificateArn",
- "Tags"
- ],
- "members":{
- "CertificateArn":{
- "shape":"Arn",
- "documentation":"String that contains the ARN of the ACM certificate to which the tag is to be applied. This must be of the form:
arn:aws:acm:region:123456789012:certificate/12345678-1234-1234-1234-123456789012
For more information about ARNs, see Amazon Resource Names (ARNs) and AWS Service Namespaces.
"
- },
- "Tags":{
- "shape":"TagList",
- "documentation":"The key-value pair that defines the tag. The tag value is optional.
"
- }
- }
- },
- "Arn":{
- "type":"string",
- "max":2048,
- "min":20,
- "pattern":"arn:[\\w+=/,.@-]+:[\\w+=/,.@-]+:[\\w+=/,.@-]*:[0-9]+:[\\w+=,.@-]+(/[\\w+=,.@-]+)*"
- },
- "CertificateBody":{
- "type":"string",
- "max":32768,
- "min":1,
- "pattern":"-{5}BEGIN CERTIFICATE-{5}\\u000D?\\u000A([A-Za-z0-9/+]{64}\\u000D?\\u000A)*[A-Za-z0-9/+]{1,64}={0,2}\\u000D?\\u000A-{5}END CERTIFICATE-{5}(\\u000D?\\u000A)?"
- },
- "CertificateBodyBlob":{
- "type":"blob",
- "max":32768,
- "min":1
- },
- "CertificateChain":{
- "type":"string",
- "max":2097152,
- "min":1,
- "pattern":"(-{5}BEGIN CERTIFICATE-{5}\\u000D?\\u000A([A-Za-z0-9/+]{64}\\u000D?\\u000A)*[A-Za-z0-9/+]{1,64}={0,2}\\u000D?\\u000A-{5}END CERTIFICATE-{5}\\u000D?\\u000A)*-{5}BEGIN CERTIFICATE-{5}\\u000D?\\u000A([A-Za-z0-9/+]{64}\\u000D?\\u000A)*[A-Za-z0-9/+]{1,64}={0,2}\\u000D?\\u000A-{5}END CERTIFICATE-{5}(\\u000D?\\u000A)?"
- },
- "CertificateChainBlob":{
- "type":"blob",
- "max":2097152,
- "min":1
- },
- "CertificateDetail":{
- "type":"structure",
- "members":{
- "CertificateArn":{
- "shape":"Arn",
- "documentation":"The Amazon Resource Name (ARN) of the certificate. For more information about ARNs, see Amazon Resource Names (ARNs) and AWS Service Namespaces in the AWS General Reference.
"
- },
- "DomainName":{
- "shape":"DomainNameString",
- "documentation":"The fully qualified domain name for the certificate, such as www.example.com or example.com.
"
- },
- "SubjectAlternativeNames":{
- "shape":"DomainList",
- "documentation":"One or more domain names (subject alternative names) included in the certificate. This list contains the domain names that are bound to the public key that is contained in the certificate. The subject alternative names include the canonical domain name (CN) of the certificate and additional domain names that can be used to connect to the website.
"
- },
- "DomainValidationOptions":{
- "shape":"DomainValidationList",
- "documentation":"Contains information about the initial validation of each domain name that occurs as a result of the RequestCertificate request. This field exists only when the certificate type is AMAZON_ISSUED
.
"
- },
- "Serial":{
- "shape":"String",
- "documentation":"The serial number of the certificate.
"
- },
- "Subject":{
- "shape":"String",
- "documentation":"The name of the entity that is associated with the public key contained in the certificate.
"
- },
- "Issuer":{
- "shape":"String",
- "documentation":"The name of the certificate authority that issued and signed the certificate.
"
- },
- "CreatedAt":{
- "shape":"TStamp",
- "documentation":"The time at which the certificate was requested. This value exists only when the certificate type is AMAZON_ISSUED
.
"
- },
- "IssuedAt":{
- "shape":"TStamp",
- "documentation":"The time at which the certificate was issued. This value exists only when the certificate type is AMAZON_ISSUED
.
"
- },
- "ImportedAt":{
- "shape":"TStamp",
- "documentation":"The date and time at which the certificate was imported. This value exists only when the certificate type is IMPORTED
.
"
- },
- "Status":{
- "shape":"CertificateStatus",
- "documentation":"The status of the certificate.
"
- },
- "RevokedAt":{
- "shape":"TStamp",
- "documentation":"The time at which the certificate was revoked. This value exists only when the certificate status is REVOKED
.
"
- },
- "RevocationReason":{
- "shape":"RevocationReason",
- "documentation":"The reason the certificate was revoked. This value exists only when the certificate status is REVOKED
.
"
- },
- "NotBefore":{
- "shape":"TStamp",
- "documentation":"The time before which the certificate is not valid.
"
- },
- "NotAfter":{
- "shape":"TStamp",
- "documentation":"The time after which the certificate is not valid.
"
- },
- "KeyAlgorithm":{
- "shape":"KeyAlgorithm",
- "documentation":"The algorithm that was used to generate the public-private key pair.
"
- },
- "SignatureAlgorithm":{
- "shape":"String",
- "documentation":"The algorithm that was used to sign the certificate.
"
- },
- "InUseBy":{
- "shape":"InUseList",
- "documentation":"A list of ARNs for the AWS resources that are using the certificate. A certificate can be used by multiple AWS resources.
"
- },
- "FailureReason":{
- "shape":"FailureReason",
- "documentation":"The reason the certificate request failed. This value exists only when the certificate status is FAILED
. For more information, see Certificate Request Failed in the AWS Certificate Manager User Guide.
"
- },
- "Type":{
- "shape":"CertificateType",
- "documentation":"The source of the certificate. For certificates provided by ACM, this value is AMAZON_ISSUED
. For certificates that you imported with ImportCertificate, this value is IMPORTED
. ACM does not provide managed renewal for imported certificates. For more information about the differences between certificates that you import and those that ACM provides, see Importing Certificates in the AWS Certificate Manager User Guide.
"
- },
- "RenewalSummary":{
- "shape":"RenewalSummary",
- "documentation":"Contains information about the status of ACM's managed renewal for the certificate. This field exists only when the certificate type is AMAZON_ISSUED
.
"
- },
- "KeyUsages":{
- "shape":"KeyUsageList",
- "documentation":"A list of Key Usage X.509 v3 extension objects. Each object is a string value that identifies the purpose of the public key contained in the certificate. Possible extension values include DIGITAL_SIGNATURE, KEY_ENCHIPHERMENT, NON_REPUDIATION, and more.
"
- },
- "ExtendedKeyUsages":{
- "shape":"ExtendedKeyUsageList",
- "documentation":"Contains a list of Extended Key Usage X.509 v3 extension objects. Each object specifies a purpose for which the certificate public key can be used and consists of a name and an object identifier (OID).
"
- },
- "CertificateAuthorityArn":{
- "shape":"Arn",
- "documentation":"The Amazon Resource Name (ARN) of the ACM PCA private certificate authority (CA) that issued the certificate. This has the following format:
arn:aws:acm-pca:region:account:certificate-authority/12345678-1234-1234-1234-123456789012
"
- },
- "RenewalEligibility":{
- "shape":"RenewalEligibility",
- "documentation":"Specifies whether the certificate is eligible for renewal.
"
- },
- "Options":{
- "shape":"CertificateOptions",
- "documentation":"Value that specifies whether to add the certificate to a transparency log. Certificate transparency makes it possible to detect SSL certificates that have been mistakenly or maliciously issued. A browser might respond to certificate that has not been logged by showing an error message. The logs are cryptographically secure.
"
- }
- },
- "documentation":"Contains metadata about an ACM certificate. This structure is returned in the response to a DescribeCertificate request.
"
- },
- "CertificateOptions":{
- "type":"structure",
- "members":{
- "CertificateTransparencyLoggingPreference":{
- "shape":"CertificateTransparencyLoggingPreference",
- "documentation":"You can opt out of certificate transparency logging by specifying the DISABLED
option. Opt in by specifying ENABLED
.
"
- }
- },
- "documentation":"Structure that contains options for your certificate. Currently, you can use this only to specify whether to opt in to or out of certificate transparency logging. Some browsers require that public certificates issued for your domain be recorded in a log. Certificates that are not logged typically generate a browser error. Transparency makes it possible for you to detect SSL/TLS certificates that have been mistakenly or maliciously issued for your domain. For general information, see Certificate Transparency Logging.
"
- },
- "CertificateStatus":{
- "type":"string",
- "enum":[
- "PENDING_VALIDATION",
- "ISSUED",
- "INACTIVE",
- "EXPIRED",
- "VALIDATION_TIMED_OUT",
- "REVOKED",
- "FAILED"
- ]
- },
- "CertificateStatuses":{
- "type":"list",
- "member":{"shape":"CertificateStatus"}
- },
- "CertificateSummary":{
- "type":"structure",
- "members":{
- "CertificateArn":{
- "shape":"Arn",
- "documentation":"Amazon Resource Name (ARN) of the certificate. This is of the form:
arn:aws:acm:region:123456789012:certificate/12345678-1234-1234-1234-123456789012
For more information about ARNs, see Amazon Resource Names (ARNs) and AWS Service Namespaces.
"
- },
- "DomainName":{
- "shape":"DomainNameString",
- "documentation":"Fully qualified domain name (FQDN), such as www.example.com or example.com, for the certificate.
"
- }
- },
- "documentation":"This structure is returned in the response object of ListCertificates action.
"
- },
- "CertificateSummaryList":{
- "type":"list",
- "member":{"shape":"CertificateSummary"}
- },
- "CertificateTransparencyLoggingPreference":{
- "type":"string",
- "enum":[
- "ENABLED",
- "DISABLED"
- ]
- },
- "CertificateType":{
- "type":"string",
- "enum":[
- "IMPORTED",
- "AMAZON_ISSUED",
- "PRIVATE"
- ]
- },
- "DeleteCertificateRequest":{
- "type":"structure",
- "required":["CertificateArn"],
- "members":{
- "CertificateArn":{
- "shape":"Arn",
- "documentation":"String that contains the ARN of the ACM certificate to be deleted. This must be of the form:
arn:aws:acm:region:123456789012:certificate/12345678-1234-1234-1234-123456789012
For more information about ARNs, see Amazon Resource Names (ARNs) and AWS Service Namespaces.
"
- }
- }
- },
- "DescribeCertificateRequest":{
- "type":"structure",
- "required":["CertificateArn"],
- "members":{
- "CertificateArn":{
- "shape":"Arn",
- "documentation":"The Amazon Resource Name (ARN) of the ACM certificate. The ARN must have the following form:
arn:aws:acm:region:123456789012:certificate/12345678-1234-1234-1234-123456789012
For more information about ARNs, see Amazon Resource Names (ARNs) and AWS Service Namespaces.
"
- }
- }
- },
- "DescribeCertificateResponse":{
- "type":"structure",
- "members":{
- "Certificate":{
- "shape":"CertificateDetail",
- "documentation":"Metadata about an ACM certificate.
"
- }
- }
- },
- "DomainList":{
- "type":"list",
- "member":{"shape":"DomainNameString"},
- "max":100,
- "min":1
- },
- "DomainNameString":{
- "type":"string",
- "max":253,
- "min":1,
- "pattern":"^(\\*\\.)?(((?!-)[A-Za-z0-9-]{0,62}[A-Za-z0-9])\\.)+((?!-)[A-Za-z0-9-]{1,62}[A-Za-z0-9])$"
- },
- "DomainStatus":{
- "type":"string",
- "enum":[
- "PENDING_VALIDATION",
- "SUCCESS",
- "FAILED"
- ]
- },
- "DomainValidation":{
- "type":"structure",
- "required":["DomainName"],
- "members":{
- "DomainName":{
- "shape":"DomainNameString",
- "documentation":"A fully qualified domain name (FQDN) in the certificate. For example, www.example.com
or example.com
.
"
- },
- "ValidationEmails":{
- "shape":"ValidationEmailList",
- "documentation":"A list of email addresses that ACM used to send domain validation emails.
"
- },
- "ValidationDomain":{
- "shape":"DomainNameString",
- "documentation":"The domain name that ACM used to send domain validation emails.
"
- },
- "ValidationStatus":{
- "shape":"DomainStatus",
- "documentation":"The validation status of the domain name. This can be one of the following values:
-
PENDING_VALIDATION
-
SUCCESS
-
FAILED
"
- },
- "ResourceRecord":{
- "shape":"ResourceRecord",
- "documentation":"Contains the CNAME record that you add to your DNS database for domain validation. For more information, see Use DNS to Validate Domain Ownership.
"
- },
- "ValidationMethod":{
- "shape":"ValidationMethod",
- "documentation":"Specifies the domain validation method.
"
- }
- },
- "documentation":"Contains information about the validation of each domain name in the certificate.
"
- },
- "DomainValidationList":{
- "type":"list",
- "member":{"shape":"DomainValidation"},
- "max":1000,
- "min":1
- },
- "DomainValidationOption":{
- "type":"structure",
- "required":[
- "DomainName",
- "ValidationDomain"
- ],
- "members":{
- "DomainName":{
- "shape":"DomainNameString",
- "documentation":"A fully qualified domain name (FQDN) in the certificate request.
"
- },
- "ValidationDomain":{
- "shape":"DomainNameString",
- "documentation":"The domain name that you want ACM to use to send you validation emails. This domain name is the suffix of the email addresses that you want ACM to use. This must be the same as the DomainName
value or a superdomain of the DomainName
value. For example, if you request a certificate for testing.example.com
, you can specify example.com
for this value. In that case, ACM sends domain validation emails to the following five addresses:
"
- }
- },
- "documentation":"Contains information about the domain names that you want ACM to use to send you emails that enable you to validate domain ownership.
"
- },
- "DomainValidationOptionList":{
- "type":"list",
- "member":{"shape":"DomainValidationOption"},
- "max":100,
- "min":1
- },
- "ExportCertificateRequest":{
- "type":"structure",
- "required":[
- "CertificateArn",
- "Passphrase"
- ],
- "members":{
- "CertificateArn":{
- "shape":"Arn",
- "documentation":"An Amazon Resource Name (ARN) of the issued certificate. This must be of the form:
arn:aws:acm:region:account:certificate/12345678-1234-1234-1234-123456789012
"
- },
- "Passphrase":{
- "shape":"PassphraseBlob",
- "documentation":"Passphrase to associate with the encrypted exported private key. If you want to later decrypt the private key, you must have the passphrase. You can use the following OpenSSL command to decrypt a private key:
openssl rsa -in encrypted_key.pem -out decrypted_key.pem
"
- }
- }
- },
- "ExportCertificateResponse":{
- "type":"structure",
- "members":{
- "Certificate":{
- "shape":"CertificateBody",
- "documentation":"The base64 PEM-encoded certificate.
"
- },
- "CertificateChain":{
- "shape":"CertificateChain",
- "documentation":"The base64 PEM-encoded certificate chain. This does not include the certificate that you are exporting.
"
- },
- "PrivateKey":{
- "shape":"PrivateKey",
- "documentation":"The PEM-encoded private key associated with the public key in the certificate.
"
- }
- }
- },
- "ExtendedKeyUsage":{
- "type":"structure",
- "members":{
- "Name":{
- "shape":"ExtendedKeyUsageName",
- "documentation":"The name of an Extended Key Usage value.
"
- },
- "OID":{
- "shape":"String",
- "documentation":"An object identifier (OID) for the extension value. OIDs are strings of numbers separated by periods. The following OIDs are defined in RFC 3280 and RFC 5280.
-
1.3.6.1.5.5.7.3.1 (TLS_WEB_SERVER_AUTHENTICATION)
-
1.3.6.1.5.5.7.3.2 (TLS_WEB_CLIENT_AUTHENTICATION)
-
1.3.6.1.5.5.7.3.3 (CODE_SIGNING)
-
1.3.6.1.5.5.7.3.4 (EMAIL_PROTECTION)
-
1.3.6.1.5.5.7.3.8 (TIME_STAMPING)
-
1.3.6.1.5.5.7.3.9 (OCSP_SIGNING)
-
1.3.6.1.5.5.7.3.5 (IPSEC_END_SYSTEM)
-
1.3.6.1.5.5.7.3.6 (IPSEC_TUNNEL)
-
1.3.6.1.5.5.7.3.7 (IPSEC_USER)
"
- }
- },
- "documentation":"The Extended Key Usage X.509 v3 extension defines one or more purposes for which the public key can be used. This is in addition to or in place of the basic purposes specified by the Key Usage extension.
"
- },
- "ExtendedKeyUsageFilterList":{
- "type":"list",
- "member":{"shape":"ExtendedKeyUsageName"}
- },
- "ExtendedKeyUsageList":{
- "type":"list",
- "member":{"shape":"ExtendedKeyUsage"}
- },
- "ExtendedKeyUsageName":{
- "type":"string",
- "enum":[
- "TLS_WEB_SERVER_AUTHENTICATION",
- "TLS_WEB_CLIENT_AUTHENTICATION",
- "CODE_SIGNING",
- "EMAIL_PROTECTION",
- "TIME_STAMPING",
- "OCSP_SIGNING",
- "IPSEC_END_SYSTEM",
- "IPSEC_TUNNEL",
- "IPSEC_USER",
- "ANY",
- "NONE",
- "CUSTOM"
- ]
- },
- "FailureReason":{
- "type":"string",
- "enum":[
- "NO_AVAILABLE_CONTACTS",
- "ADDITIONAL_VERIFICATION_REQUIRED",
- "DOMAIN_NOT_ALLOWED",
- "INVALID_PUBLIC_DOMAIN",
- "CAA_ERROR",
- "PCA_LIMIT_EXCEEDED",
- "PCA_INVALID_ARN",
- "PCA_INVALID_STATE",
- "PCA_REQUEST_FAILED",
- "PCA_RESOURCE_NOT_FOUND",
- "PCA_INVALID_ARGS",
- "OTHER"
- ]
- },
- "Filters":{
- "type":"structure",
- "members":{
- "extendedKeyUsage":{
- "shape":"ExtendedKeyUsageFilterList",
- "documentation":"Specify one or more ExtendedKeyUsage extension values.
"
- },
- "keyUsage":{
- "shape":"KeyUsageFilterList",
- "documentation":"Specify one or more KeyUsage extension values.
"
- },
- "keyTypes":{
- "shape":"KeyAlgorithmList",
- "documentation":"Specify one or more algorithms that can be used to generate key pairs.
"
- }
- },
- "documentation":"This structure can be used in the ListCertificates action to filter the output of the certificate list.
"
- },
- "GetCertificateRequest":{
- "type":"structure",
- "required":["CertificateArn"],
- "members":{
- "CertificateArn":{
- "shape":"Arn",
- "documentation":"String that contains a certificate ARN in the following format:
arn:aws:acm:region:123456789012:certificate/12345678-1234-1234-1234-123456789012
For more information about ARNs, see Amazon Resource Names (ARNs) and AWS Service Namespaces.
"
- }
- }
- },
- "GetCertificateResponse":{
- "type":"structure",
- "members":{
- "Certificate":{
- "shape":"CertificateBody",
- "documentation":"String that contains the ACM certificate represented by the ARN specified at input.
"
- },
- "CertificateChain":{
- "shape":"CertificateChain",
- "documentation":"The certificate chain that contains the root certificate issued by the certificate authority (CA).
"
- }
- }
- },
- "IdempotencyToken":{
- "type":"string",
- "max":32,
- "min":1,
- "pattern":"\\w+"
- },
- "ImportCertificateRequest":{
- "type":"structure",
- "required":[
- "Certificate",
- "PrivateKey"
- ],
- "members":{
- "CertificateArn":{
- "shape":"Arn",
- "documentation":"The Amazon Resource Name (ARN) of an imported certificate to replace. To import a new certificate, omit this field.
"
- },
- "Certificate":{
- "shape":"CertificateBodyBlob",
- "documentation":"The certificate to import.
"
- },
- "PrivateKey":{
- "shape":"PrivateKeyBlob",
- "documentation":"The private key that matches the public key in the certificate.
"
- },
- "CertificateChain":{
- "shape":"CertificateChainBlob",
- "documentation":"The PEM encoded certificate chain.
"
- }
- }
- },
- "ImportCertificateResponse":{
- "type":"structure",
- "members":{
- "CertificateArn":{
- "shape":"Arn",
- "documentation":"The Amazon Resource Name (ARN) of the imported certificate.
"
- }
- }
- },
- "InUseList":{
- "type":"list",
- "member":{"shape":"String"}
- },
- "InvalidArnException":{
- "type":"structure",
- "members":{
- "message":{"shape":"String"}
- },
- "documentation":"The requested Amazon Resource Name (ARN) does not refer to an existing resource.
",
- "exception":true
- },
- "InvalidDomainValidationOptionsException":{
- "type":"structure",
- "members":{
- "message":{"shape":"String"}
- },
- "documentation":"One or more values in the DomainValidationOption structure is incorrect.
",
- "exception":true
- },
- "InvalidStateException":{
- "type":"structure",
- "members":{
- "message":{"shape":"String"}
- },
- "documentation":"Processing has reached an invalid state.
",
- "exception":true
- },
- "InvalidTagException":{
- "type":"structure",
- "members":{
- "message":{"shape":"String"}
- },
- "documentation":"One or both of the values that make up the key-value pair is not valid. For example, you cannot specify a tag value that begins with aws:
.
",
- "exception":true
- },
- "KeyAlgorithm":{
- "type":"string",
- "enum":[
- "RSA_2048",
- "RSA_1024",
- "RSA_4096",
- "EC_prime256v1",
- "EC_secp384r1",
- "EC_secp521r1"
- ]
- },
- "KeyAlgorithmList":{
- "type":"list",
- "member":{"shape":"KeyAlgorithm"}
- },
- "KeyUsage":{
- "type":"structure",
- "members":{
- "Name":{
- "shape":"KeyUsageName",
- "documentation":"A string value that contains a Key Usage extension name.
"
- }
- },
- "documentation":"The Key Usage X.509 v3 extension defines the purpose of the public key contained in the certificate.
"
- },
- "KeyUsageFilterList":{
- "type":"list",
- "member":{"shape":"KeyUsageName"}
- },
- "KeyUsageList":{
- "type":"list",
- "member":{"shape":"KeyUsage"}
- },
- "KeyUsageName":{
- "type":"string",
- "enum":[
- "DIGITAL_SIGNATURE",
- "NON_REPUDIATION",
- "KEY_ENCIPHERMENT",
- "DATA_ENCIPHERMENT",
- "KEY_AGREEMENT",
- "CERTIFICATE_SIGNING",
- "CRL_SIGNING",
- "ENCIPHER_ONLY",
- "DECIPHER_ONLY",
- "ANY",
- "CUSTOM"
- ]
- },
- "LimitExceededException":{
- "type":"structure",
- "members":{
- "message":{"shape":"String"}
- },
- "documentation":"An ACM limit has been exceeded.
",
- "exception":true
- },
- "ListCertificatesRequest":{
- "type":"structure",
- "members":{
- "CertificateStatuses":{
- "shape":"CertificateStatuses",
- "documentation":"Filter the certificate list by status value.
"
- },
- "Includes":{
- "shape":"Filters",
- "documentation":"Filter the certificate list. For more information, see the Filters structure.
"
- },
- "NextToken":{
- "shape":"NextToken",
- "documentation":"Use this parameter only when paginating results and only in a subsequent request after you receive a response with truncated results. Set it to the value of NextToken
from the response you just received.
"
- },
- "MaxItems":{
- "shape":"MaxItems",
- "documentation":"Use this parameter when paginating results to specify the maximum number of items to return in the response. If additional items exist beyond the number you specify, the NextToken
element is sent in the response. Use this NextToken
value in a subsequent request to retrieve additional items.
"
- }
- }
- },
- "ListCertificatesResponse":{
- "type":"structure",
- "members":{
- "NextToken":{
- "shape":"NextToken",
- "documentation":"When the list is truncated, this value is present and contains the value to use for the NextToken
parameter in a subsequent pagination request.
"
- },
- "CertificateSummaryList":{
- "shape":"CertificateSummaryList",
- "documentation":"A list of ACM certificates.
"
- }
- }
- },
- "ListTagsForCertificateRequest":{
- "type":"structure",
- "required":["CertificateArn"],
- "members":{
- "CertificateArn":{
- "shape":"Arn",
- "documentation":"String that contains the ARN of the ACM certificate for which you want to list the tags. This must have the following form:
arn:aws:acm:region:123456789012:certificate/12345678-1234-1234-1234-123456789012
For more information about ARNs, see Amazon Resource Names (ARNs) and AWS Service Namespaces.
"
- }
- }
- },
- "ListTagsForCertificateResponse":{
- "type":"structure",
- "members":{
- "Tags":{
- "shape":"TagList",
- "documentation":"The key-value pairs that define the applied tags.
"
- }
- }
- },
- "MaxItems":{
- "type":"integer",
- "max":1000,
- "min":1
- },
- "NextToken":{
- "type":"string",
- "max":320,
- "min":1,
- "pattern":"[\\u0009\\u000A\\u000D\\u0020-\\u00FF]*"
- },
- "PassphraseBlob":{
- "type":"blob",
- "max":128,
- "min":4,
- "sensitive":true
- },
- "PrivateKey":{
- "type":"string",
- "max":524288,
- "min":1,
- "pattern":"-{5}BEGIN PRIVATE KEY-{5}\\u000D?\\u000A([A-Za-z0-9/+]{64}\\u000D?\\u000A)*[A-Za-z0-9/+]{1,64}={0,2}\\u000D?\\u000A-{5}END PRIVATE KEY-{5}(\\u000D?\\u000A)?",
- "sensitive":true
- },
- "PrivateKeyBlob":{
- "type":"blob",
- "max":524288,
- "min":1,
- "sensitive":true
- },
- "RecordType":{
- "type":"string",
- "enum":["CNAME"]
- },
- "RemoveTagsFromCertificateRequest":{
- "type":"structure",
- "required":[
- "CertificateArn",
- "Tags"
- ],
- "members":{
- "CertificateArn":{
- "shape":"Arn",
- "documentation":"String that contains the ARN of the ACM Certificate with one or more tags that you want to remove. This must be of the form:
arn:aws:acm:region:123456789012:certificate/12345678-1234-1234-1234-123456789012
For more information about ARNs, see Amazon Resource Names (ARNs) and AWS Service Namespaces.
"
- },
- "Tags":{
- "shape":"TagList",
- "documentation":"The key-value pair that defines the tag to remove.
"
- }
- }
- },
- "RenewalEligibility":{
- "type":"string",
- "enum":[
- "ELIGIBLE",
- "INELIGIBLE"
- ]
- },
- "RenewalStatus":{
- "type":"string",
- "enum":[
- "PENDING_AUTO_RENEWAL",
- "PENDING_VALIDATION",
- "SUCCESS",
- "FAILED"
- ]
- },
- "RenewalSummary":{
- "type":"structure",
- "required":[
- "RenewalStatus",
- "DomainValidationOptions"
- ],
- "members":{
- "RenewalStatus":{
- "shape":"RenewalStatus",
- "documentation":"The status of ACM's managed renewal of the certificate.
"
- },
- "DomainValidationOptions":{
- "shape":"DomainValidationList",
- "documentation":"Contains information about the validation of each domain name in the certificate, as it pertains to ACM's managed renewal. This is different from the initial validation that occurs as a result of the RequestCertificate request. This field exists only when the certificate type is AMAZON_ISSUED
.
"
- }
- },
- "documentation":"Contains information about the status of ACM's managed renewal for the certificate. This structure exists only when the certificate type is AMAZON_ISSUED
.
"
- },
- "RequestCertificateRequest":{
- "type":"structure",
- "required":["DomainName"],
- "members":{
- "DomainName":{
- "shape":"DomainNameString",
- "documentation":" Fully qualified domain name (FQDN), such as www.example.com, that you want to secure with an ACM certificate. Use an asterisk (*) to create a wildcard certificate that protects several sites in the same domain. For example, *.example.com protects www.example.com, site.example.com, and images.example.com.
The first domain name you enter cannot exceed 63 octets, including periods. Each subsequent Subject Alternative Name (SAN), however, can be up to 253 octets in length.
"
- },
- "ValidationMethod":{
- "shape":"ValidationMethod",
- "documentation":"The method you want to use if you are requesting a public certificate to validate that you own or control domain. You can validate with DNS or validate with email. We recommend that you use DNS validation.
"
- },
- "SubjectAlternativeNames":{
- "shape":"DomainList",
- "documentation":"Additional FQDNs to be included in the Subject Alternative Name extension of the ACM certificate. For example, add the name www.example.net to a certificate for which the DomainName
field is www.example.com if users can reach your site by using either name. The maximum number of domain names that you can add to an ACM certificate is 100. However, the initial limit is 10 domain names. If you need more than 10 names, you must request a limit increase. For more information, see Limits.
The maximum length of a SAN DNS name is 253 octets. The name is made up of multiple labels separated by periods. No label can be longer than 63 octets. Consider the following examples:
-
(63 octets).(63 octets).(63 octets).(61 octets)
is legal because the total length is 253 octets (63+1+63+1+63+1+61) and no label exceeds 63 octets.
-
(64 octets).(63 octets).(63 octets).(61 octets)
is not legal because the total length exceeds 253 octets (64+1+63+1+63+1+61) and the first label exceeds 63 octets.
-
(63 octets).(63 octets).(63 octets).(62 octets)
is not legal because the total length of the DNS name (63+1+63+1+63+1+62) exceeds 253 octets.
"
- },
- "IdempotencyToken":{
- "shape":"IdempotencyToken",
- "documentation":"Customer chosen string that can be used to distinguish between calls to RequestCertificate
. Idempotency tokens time out after one hour. Therefore, if you call RequestCertificate
multiple times with the same idempotency token within one hour, ACM recognizes that you are requesting only one certificate and will issue only one. If you change the idempotency token for each call, ACM recognizes that you are requesting multiple certificates.
"
- },
- "DomainValidationOptions":{
- "shape":"DomainValidationOptionList",
- "documentation":"The domain name that you want ACM to use to send you emails so that you can validate domain ownership.
"
- },
- "Options":{
- "shape":"CertificateOptions",
- "documentation":"Currently, you can use this parameter to specify whether to add the certificate to a certificate transparency log. Certificate transparency makes it possible to detect SSL/TLS certificates that have been mistakenly or maliciously issued. Certificates that have not been logged typically produce an error message in a browser. For more information, see Opting Out of Certificate Transparency Logging.
"
- },
- "CertificateAuthorityArn":{
- "shape":"Arn",
- "documentation":"The Amazon Resource Name (ARN) of the private certificate authority (CA) that will be used to issue the certificate. If you do not provide an ARN and you are trying to request a private certificate, ACM will attempt to issue a public certificate. For more information about private CAs, see the AWS Certificate Manager Private Certificate Authority (PCA) user guide. The ARN must have the following form:
arn:aws:acm-pca:region:account:certificate-authority/12345678-1234-1234-1234-123456789012
"
- }
- }
- },
- "RequestCertificateResponse":{
- "type":"structure",
- "members":{
- "CertificateArn":{
- "shape":"Arn",
- "documentation":"String that contains the ARN of the issued certificate. This must be of the form:
arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012
"
- }
- }
- },
- "RequestInProgressException":{
- "type":"structure",
- "members":{
- "message":{"shape":"String"}
- },
- "documentation":"The certificate request is in process and the certificate in your account has not yet been issued.
",
- "exception":true
- },
- "ResendValidationEmailRequest":{
- "type":"structure",
- "required":[
- "CertificateArn",
- "Domain",
- "ValidationDomain"
- ],
- "members":{
- "CertificateArn":{
- "shape":"Arn",
- "documentation":"String that contains the ARN of the requested certificate. The certificate ARN is generated and returned by the RequestCertificate action as soon as the request is made. By default, using this parameter causes email to be sent to all top-level domains you specified in the certificate request. The ARN must be of the form:
arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012
"
- },
- "Domain":{
- "shape":"DomainNameString",
- "documentation":"The fully qualified domain name (FQDN) of the certificate that needs to be validated.
"
- },
- "ValidationDomain":{
- "shape":"DomainNameString",
- "documentation":"The base validation domain that will act as the suffix of the email addresses that are used to send the emails. This must be the same as the Domain
value or a superdomain of the Domain
value. For example, if you requested a certificate for site.subdomain.example.com
and specify a ValidationDomain of subdomain.example.com
, ACM sends email to the domain registrant, technical contact, and administrative contact in WHOIS and the following five addresses:
-
admin@subdomain.example.com
-
administrator@subdomain.example.com
-
hostmaster@subdomain.example.com
-
postmaster@subdomain.example.com
-
webmaster@subdomain.example.com
"
- }
- }
- },
- "ResourceInUseException":{
- "type":"structure",
- "members":{
- "message":{"shape":"String"}
- },
- "documentation":"The certificate is in use by another AWS service in the caller's account. Remove the association and try again.
",
- "exception":true
- },
- "ResourceNotFoundException":{
- "type":"structure",
- "members":{
- "message":{"shape":"String"}
- },
- "documentation":"The specified certificate cannot be found in the caller's account or the caller's account cannot be found.
",
- "exception":true
- },
- "ResourceRecord":{
- "type":"structure",
- "required":[
- "Name",
- "Type",
- "Value"
- ],
- "members":{
- "Name":{
- "shape":"String",
- "documentation":"The name of the DNS record to create in your domain. This is supplied by ACM.
"
- },
- "Type":{
- "shape":"RecordType",
- "documentation":"The type of DNS record. Currently this can be CNAME
.
"
- },
- "Value":{
- "shape":"String",
- "documentation":"The value of the CNAME record to add to your DNS database. This is supplied by ACM.
"
- }
- },
- "documentation":"Contains a DNS record value that you can use to can use to validate ownership or control of a domain. This is used by the DescribeCertificate action.
"
- },
- "RevocationReason":{
- "type":"string",
- "enum":[
- "UNSPECIFIED",
- "KEY_COMPROMISE",
- "CA_COMPROMISE",
- "AFFILIATION_CHANGED",
- "SUPERCEDED",
- "CESSATION_OF_OPERATION",
- "CERTIFICATE_HOLD",
- "REMOVE_FROM_CRL",
- "PRIVILEGE_WITHDRAWN",
- "A_A_COMPROMISE"
- ]
- },
- "String":{"type":"string"},
- "TStamp":{"type":"timestamp"},
- "Tag":{
- "type":"structure",
- "required":["Key"],
- "members":{
- "Key":{
- "shape":"TagKey",
- "documentation":"The key of the tag.
"
- },
- "Value":{
- "shape":"TagValue",
- "documentation":"The value of the tag.
"
- }
- },
- "documentation":"A key-value pair that identifies or specifies metadata about an ACM resource.
"
- },
- "TagKey":{
- "type":"string",
- "max":128,
- "min":1,
- "pattern":"[\\p{L}\\p{Z}\\p{N}_.:\\/=+\\-@]*"
- },
- "TagList":{
- "type":"list",
- "member":{"shape":"Tag"},
- "max":50,
- "min":1
- },
- "TagValue":{
- "type":"string",
- "max":256,
- "min":0,
- "pattern":"[\\p{L}\\p{Z}\\p{N}_.:\\/=+\\-@]*"
- },
- "TooManyTagsException":{
- "type":"structure",
- "members":{
- "message":{"shape":"String"}
- },
- "documentation":"The request contains too many tags. Try the request again with fewer tags.
",
- "exception":true
- },
- "UpdateCertificateOptionsRequest":{
- "type":"structure",
- "required":[
- "CertificateArn",
- "Options"
- ],
- "members":{
- "CertificateArn":{
- "shape":"Arn",
- "documentation":"ARN of the requested certificate to update. This must be of the form:
arn:aws:acm:us-east-1:account:certificate/12345678-1234-1234-1234-123456789012
"
- },
- "Options":{
- "shape":"CertificateOptions",
- "documentation":"Use to update the options for your certificate. Currently, you can specify whether to add your certificate to a transparency log. Certificate transparency makes it possible to detect SSL/TLS certificates that have been mistakenly or maliciously issued. Certificates that have not been logged typically produce an error message in a browser.
"
- }
- }
- },
- "ValidationEmailList":{
- "type":"list",
- "member":{"shape":"String"}
- },
- "ValidationMethod":{
- "type":"string",
- "enum":[
- "EMAIL",
- "DNS"
- ]
- }
- },
- "documentation":"AWS Certificate Manager Welcome to the AWS Certificate Manager (ACM) API documentation.
You can use ACM to manage SSL/TLS certificates for your AWS-based websites and applications. For general information about using ACM, see the AWS Certificate Manager User Guide .
"
-}
diff --git a/.eggs/botocore-1.10.75-py2.7.egg/botocore/data/acm/2015-12-08/waiters-2.json b/.eggs/botocore-1.10.75-py2.7.egg/botocore/data/acm/2015-12-08/waiters-2.json
deleted file mode 100644
index 1fba453d..00000000
--- a/.eggs/botocore-1.10.75-py2.7.egg/botocore/data/acm/2015-12-08/waiters-2.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
- "version": 2,
- "waiters": {
- "CertificateValidated": {
- "delay": 60,
- "maxAttempts": 40,
- "operation": "DescribeCertificate",
- "acceptors": [
- {
- "matcher": "pathAll",
- "expected": "SUCCESS",
- "argument": "Certificate.DomainValidationOptions[].ValidationStatus",
- "state": "success"
- },
- {
- "matcher": "pathAny",
- "expected": "PENDING_VALIDATION",
- "argument": "Certificate.DomainValidationOptions[].ValidationStatus",
- "state": "retry"
- },
- {
- "matcher": "path",
- "expected": "FAILED",
- "argument": "Certificate.Status",
- "state": "failure"
- },
- {
- "matcher": "error",
- "expected": "ResourceNotFoundException",
- "state": "failure"
- }
- ]
- }
- }
-}
diff --git a/.eggs/botocore-1.10.75-py2.7.egg/botocore/data/alexaforbusiness/2017-11-09/paginators-1.json b/.eggs/botocore-1.10.75-py2.7.egg/botocore/data/alexaforbusiness/2017-11-09/paginators-1.json
deleted file mode 100644
index a91b700d..00000000
--- a/.eggs/botocore-1.10.75-py2.7.egg/botocore/data/alexaforbusiness/2017-11-09/paginators-1.json
+++ /dev/null
@@ -1,46 +0,0 @@
-{
- "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/.eggs/botocore-1.10.75-py2.7.egg/botocore/data/alexaforbusiness/2017-11-09/service-2.json b/.eggs/botocore-1.10.75-py2.7.egg/botocore/data/alexaforbusiness/2017-11-09/service-2.json
deleted file mode 100644
index 1e5ccc9c..00000000
--- a/.eggs/botocore-1.10.75-py2.7.egg/botocore/data/alexaforbusiness/2017-11-09/service-2.json
+++ /dev/null
@@ -1,2843 +0,0 @@
-{
- "version":"2.0",
- "metadata":{
- "apiVersion":"2017-11-09",
- "endpointPrefix":"a4b",
- "jsonVersion":"1.1",
- "protocol":"json",
- "serviceFullName":"Alexa For Business",
- "serviceId":"Alexa For Business",
- "signatureVersion":"v4",
- "targetPrefix":"AlexaForBusiness",
- "uid":"alexaforbusiness-2017-11-09"
- },
- "operations":{
- "AssociateContactWithAddressBook":{
- "name":"AssociateContactWithAddressBook",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"AssociateContactWithAddressBookRequest"},
- "output":{"shape":"AssociateContactWithAddressBookResponse"},
- "errors":[
- {"shape":"LimitExceededException"}
- ],
- "documentation":"Associates a contact with a given address book.
"
- },
- "AssociateDeviceWithRoom":{
- "name":"AssociateDeviceWithRoom",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"AssociateDeviceWithRoomRequest"},
- "output":{"shape":"AssociateDeviceWithRoomResponse"},
- "errors":[
- {"shape":"LimitExceededException"},
- {"shape":"DeviceNotRegisteredException"}
- ],
- "documentation":"Associates a device with a given room. This applies all the settings from the room profile to the device, and all the skills in any skill groups added to that room. This operation requires the device to be online, or else a manual sync is required.
"
- },
- "AssociateSkillGroupWithRoom":{
- "name":"AssociateSkillGroupWithRoom",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"AssociateSkillGroupWithRoomRequest"},
- "output":{"shape":"AssociateSkillGroupWithRoomResponse"},
- "documentation":"Associates a skill group with a given room. This enables all skills in the associated skill group on all devices in the room.
"
- },
- "CreateAddressBook":{
- "name":"CreateAddressBook",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"CreateAddressBookRequest"},
- "output":{"shape":"CreateAddressBookResponse"},
- "errors":[
- {"shape":"AlreadyExistsException"},
- {"shape":"LimitExceededException"}
- ],
- "documentation":"Creates an address book with the specified details.
"
- },
- "CreateContact":{
- "name":"CreateContact",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"CreateContactRequest"},
- "output":{"shape":"CreateContactResponse"},
- "errors":[
- {"shape":"AlreadyExistsException"},
- {"shape":"LimitExceededException"}
- ],
- "documentation":"Creates a contact with the specified details.
"
- },
- "CreateProfile":{
- "name":"CreateProfile",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"CreateProfileRequest"},
- "output":{"shape":"CreateProfileResponse"},
- "errors":[
- {"shape":"LimitExceededException"},
- {"shape":"AlreadyExistsException"}
- ],
- "documentation":"Creates a new room profile with the specified details.
"
- },
- "CreateRoom":{
- "name":"CreateRoom",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"CreateRoomRequest"},
- "output":{"shape":"CreateRoomResponse"},
- "errors":[
- {"shape":"AlreadyExistsException"},
- {"shape":"LimitExceededException"}
- ],
- "documentation":"Creates a room with the specified details.
"
- },
- "CreateSkillGroup":{
- "name":"CreateSkillGroup",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"CreateSkillGroupRequest"},
- "output":{"shape":"CreateSkillGroupResponse"},
- "errors":[
- {"shape":"AlreadyExistsException"},
- {"shape":"LimitExceededException"}
- ],
- "documentation":"Creates a skill group with a specified name and description.
"
- },
- "CreateUser":{
- "name":"CreateUser",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"CreateUserRequest"},
- "output":{"shape":"CreateUserResponse"},
- "errors":[
- {"shape":"ResourceInUseException"},
- {"shape":"LimitExceededException"}
- ],
- "documentation":"Creates a user.
"
- },
- "DeleteAddressBook":{
- "name":"DeleteAddressBook",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"DeleteAddressBookRequest"},
- "output":{"shape":"DeleteAddressBookResponse"},
- "errors":[
- {"shape":"NotFoundException"}
- ],
- "documentation":"Deletes an address book by the address book ARN.
"
- },
- "DeleteContact":{
- "name":"DeleteContact",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"DeleteContactRequest"},
- "output":{"shape":"DeleteContactResponse"},
- "errors":[
- {"shape":"NotFoundException"}
- ],
- "documentation":"Deletes a contact by the contact ARN.
"
- },
- "DeleteProfile":{
- "name":"DeleteProfile",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"DeleteProfileRequest"},
- "output":{"shape":"DeleteProfileResponse"},
- "errors":[
- {"shape":"NotFoundException"}
- ],
- "documentation":"Deletes a room profile by the profile ARN.
"
- },
- "DeleteRoom":{
- "name":"DeleteRoom",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"DeleteRoomRequest"},
- "output":{"shape":"DeleteRoomResponse"},
- "errors":[
- {"shape":"NotFoundException"}
- ],
- "documentation":"Deletes a room by the room ARN.
"
- },
- "DeleteRoomSkillParameter":{
- "name":"DeleteRoomSkillParameter",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"DeleteRoomSkillParameterRequest"},
- "output":{"shape":"DeleteRoomSkillParameterResponse"},
- "documentation":"Deletes room skill parameter details by room, skill, and parameter key ID.
"
- },
- "DeleteSkillGroup":{
- "name":"DeleteSkillGroup",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"DeleteSkillGroupRequest"},
- "output":{"shape":"DeleteSkillGroupResponse"},
- "errors":[
- {"shape":"NotFoundException"}
- ],
- "documentation":"Deletes a skill group by skill group ARN.
"
- },
- "DeleteUser":{
- "name":"DeleteUser",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"DeleteUserRequest"},
- "output":{"shape":"DeleteUserResponse"},
- "errors":[
- {"shape":"NotFoundException"}
- ],
- "documentation":"Deletes a specified user by user ARN and enrollment ARN.
"
- },
- "DisassociateContactFromAddressBook":{
- "name":"DisassociateContactFromAddressBook",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"DisassociateContactFromAddressBookRequest"},
- "output":{"shape":"DisassociateContactFromAddressBookResponse"},
- "documentation":"Disassociates a contact from a given address book.
"
- },
- "DisassociateDeviceFromRoom":{
- "name":"DisassociateDeviceFromRoom",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"DisassociateDeviceFromRoomRequest"},
- "output":{"shape":"DisassociateDeviceFromRoomResponse"},
- "errors":[
- {"shape":"DeviceNotRegisteredException"}
- ],
- "documentation":"Disassociates a device from its current room. The device continues to be connected to the Wi-Fi network and is still registered to the account. The device settings and skills are removed from the room.
"
- },
- "DisassociateSkillGroupFromRoom":{
- "name":"DisassociateSkillGroupFromRoom",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"DisassociateSkillGroupFromRoomRequest"},
- "output":{"shape":"DisassociateSkillGroupFromRoomResponse"},
- "documentation":"Disassociates a skill group from a specified room. This disables all skills in the skill group on all devices in the room.
"
- },
- "GetAddressBook":{
- "name":"GetAddressBook",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"GetAddressBookRequest"},
- "output":{"shape":"GetAddressBookResponse"},
- "errors":[
- {"shape":"NotFoundException"}
- ],
- "documentation":"Gets address the book details by the address book ARN.
"
- },
- "GetContact":{
- "name":"GetContact",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"GetContactRequest"},
- "output":{"shape":"GetContactResponse"},
- "errors":[
- {"shape":"NotFoundException"}
- ],
- "documentation":"Gets the contact details by the contact ARN.
"
- },
- "GetDevice":{
- "name":"GetDevice",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"GetDeviceRequest"},
- "output":{"shape":"GetDeviceResponse"},
- "errors":[
- {"shape":"NotFoundException"}
- ],
- "documentation":"Gets the details of a device by device ARN.
"
- },
- "GetProfile":{
- "name":"GetProfile",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"GetProfileRequest"},
- "output":{"shape":"GetProfileResponse"},
- "errors":[
- {"shape":"NotFoundException"}
- ],
- "documentation":"Gets the details of a room profile by profile ARN.
"
- },
- "GetRoom":{
- "name":"GetRoom",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"GetRoomRequest"},
- "output":{"shape":"GetRoomResponse"},
- "errors":[
- {"shape":"NotFoundException"}
- ],
- "documentation":"Gets room details by room ARN.
"
- },
- "GetRoomSkillParameter":{
- "name":"GetRoomSkillParameter",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"GetRoomSkillParameterRequest"},
- "output":{"shape":"GetRoomSkillParameterResponse"},
- "errors":[
- {"shape":"NotFoundException"}
- ],
- "documentation":"Gets room skill parameter details by room, skill, and parameter key ARN.
"
- },
- "GetSkillGroup":{
- "name":"GetSkillGroup",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"GetSkillGroupRequest"},
- "output":{"shape":"GetSkillGroupResponse"},
- "errors":[
- {"shape":"NotFoundException"}
- ],
- "documentation":"Gets skill group details by skill group ARN.
"
- },
- "ListDeviceEvents":{
- "name":"ListDeviceEvents",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"ListDeviceEventsRequest"},
- "output":{"shape":"ListDeviceEventsResponse"},
- "errors":[
- {"shape":"NotFoundException"}
- ],
- "documentation":"Lists the device event history, including device connection status, for up to 30 days.
"
- },
- "ListSkills":{
- "name":"ListSkills",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"ListSkillsRequest"},
- "output":{"shape":"ListSkillsResponse"},
- "documentation":"Lists all enabled skills in a specific skill group.
"
- },
- "ListTags":{
- "name":"ListTags",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"ListTagsRequest"},
- "output":{"shape":"ListTagsResponse"},
- "errors":[
- {"shape":"NotFoundException"}
- ],
- "documentation":"Lists all tags for the specified resource.
"
- },
- "PutRoomSkillParameter":{
- "name":"PutRoomSkillParameter",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"PutRoomSkillParameterRequest"},
- "output":{"shape":"PutRoomSkillParameterResponse"},
- "documentation":"Updates room skill parameter details by room, skill, and parameter key ID. Not all skills have a room skill parameter.
"
- },
- "ResolveRoom":{
- "name":"ResolveRoom",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"ResolveRoomRequest"},
- "output":{"shape":"ResolveRoomResponse"},
- "errors":[
- {"shape":"NotFoundException"}
- ],
- "documentation":"Determines the details for the room from which a skill request was invoked. This operation is used by skill developers.
"
- },
- "RevokeInvitation":{
- "name":"RevokeInvitation",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"RevokeInvitationRequest"},
- "output":{"shape":"RevokeInvitationResponse"},
- "errors":[
- {"shape":"NotFoundException"}
- ],
- "documentation":"Revokes an invitation and invalidates the enrollment URL.
"
- },
- "SearchAddressBooks":{
- "name":"SearchAddressBooks",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"SearchAddressBooksRequest"},
- "output":{"shape":"SearchAddressBooksResponse"},
- "documentation":"Searches address books and lists the ones that meet a set of filter and sort criteria.
"
- },
- "SearchContacts":{
- "name":"SearchContacts",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"SearchContactsRequest"},
- "output":{"shape":"SearchContactsResponse"},
- "documentation":"Searches contacts and lists the ones that meet a set of filter and sort criteria.
"
- },
- "SearchDevices":{
- "name":"SearchDevices",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"SearchDevicesRequest"},
- "output":{"shape":"SearchDevicesResponse"},
- "documentation":"Searches devices and lists the ones that meet a set of filter criteria.
"
- },
- "SearchProfiles":{
- "name":"SearchProfiles",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"SearchProfilesRequest"},
- "output":{"shape":"SearchProfilesResponse"},
- "documentation":"Searches room profiles and lists the ones that meet a set of filter criteria.
"
- },
- "SearchRooms":{
- "name":"SearchRooms",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"SearchRoomsRequest"},
- "output":{"shape":"SearchRoomsResponse"},
- "documentation":"Searches rooms and lists the ones that meet a set of filter and sort criteria.
"
- },
- "SearchSkillGroups":{
- "name":"SearchSkillGroups",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"SearchSkillGroupsRequest"},
- "output":{"shape":"SearchSkillGroupsResponse"},
- "documentation":"Searches skill groups and lists the ones that meet a set of filter and sort criteria.
"
- },
- "SearchUsers":{
- "name":"SearchUsers",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"SearchUsersRequest"},
- "output":{"shape":"SearchUsersResponse"},
- "documentation":"Searches users and lists the ones that meet a set of filter and sort criteria.
"
- },
- "SendInvitation":{
- "name":"SendInvitation",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"SendInvitationRequest"},
- "output":{"shape":"SendInvitationResponse"},
- "errors":[
- {"shape":"NotFoundException"},
- {"shape":"InvalidUserStatusException"}
- ],
- "documentation":"Sends an enrollment invitation email with a URL to a user. The URL is valid for 72 hours or until you call this operation again, whichever comes first.
"
- },
- "StartDeviceSync":{
- "name":"StartDeviceSync",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"StartDeviceSyncRequest"},
- "output":{"shape":"StartDeviceSyncResponse"},
- "errors":[
- {"shape":"DeviceNotRegisteredException"}
- ],
- "documentation":"Resets a device and its account to the known default settings, by clearing all information and settings set by previous users.
"
- },
- "TagResource":{
- "name":"TagResource",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"TagResourceRequest"},
- "output":{"shape":"TagResourceResponse"},
- "errors":[
- {"shape":"NotFoundException"}
- ],
- "documentation":"Adds metadata tags to a specified resource.
"
- },
- "UntagResource":{
- "name":"UntagResource",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"UntagResourceRequest"},
- "output":{"shape":"UntagResourceResponse"},
- "errors":[
- {"shape":"NotFoundException"}
- ],
- "documentation":"Removes metadata tags from a specified resource.
"
- },
- "UpdateAddressBook":{
- "name":"UpdateAddressBook",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"UpdateAddressBookRequest"},
- "output":{"shape":"UpdateAddressBookResponse"},
- "errors":[
- {"shape":"NotFoundException"},
- {"shape":"NameInUseException"}
- ],
- "documentation":"Updates address book details by the address book ARN.
"
- },
- "UpdateContact":{
- "name":"UpdateContact",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"UpdateContactRequest"},
- "output":{"shape":"UpdateContactResponse"},
- "errors":[
- {"shape":"NotFoundException"}
- ],
- "documentation":"Updates the contact details by the contact ARN.
"
- },
- "UpdateDevice":{
- "name":"UpdateDevice",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"UpdateDeviceRequest"},
- "output":{"shape":"UpdateDeviceResponse"},
- "errors":[
- {"shape":"NotFoundException"},
- {"shape":"DeviceNotRegisteredException"}
- ],
- "documentation":"Updates the device name by device ARN.
"
- },
- "UpdateProfile":{
- "name":"UpdateProfile",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"UpdateProfileRequest"},
- "output":{"shape":"UpdateProfileResponse"},
- "errors":[
- {"shape":"NotFoundException"},
- {"shape":"NameInUseException"}
- ],
- "documentation":"Updates an existing room profile by room profile ARN.
"
- },
- "UpdateRoom":{
- "name":"UpdateRoom",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"UpdateRoomRequest"},
- "output":{"shape":"UpdateRoomResponse"},
- "errors":[
- {"shape":"NotFoundException"},
- {"shape":"NameInUseException"}
- ],
- "documentation":"Updates room details by room ARN.
"
- },
- "UpdateSkillGroup":{
- "name":"UpdateSkillGroup",
- "http":{
- "method":"POST",
- "requestUri":"/"
- },
- "input":{"shape":"UpdateSkillGroupRequest"},
- "output":{"shape":"UpdateSkillGroupResponse"},
- "errors":[
- {"shape":"NotFoundException"},
- {"shape":"NameInUseException"}
- ],
- "documentation":"Updates skill group details by skill group ARN.
"
- }
- },
- "shapes":{
- "Address":{
- "type":"string",
- "max":500,
- "min":1
- },
- "AddressBook":{
- "type":"structure",
- "members":{
- "AddressBookArn":{
- "shape":"Arn",
- "documentation":"The ARN of the address book.
"
- },
- "Name":{
- "shape":"AddressBookName",
- "documentation":"The name of the address book.
"
- },
- "Description":{
- "shape":"AddressBookDescription",
- "documentation":"The description of the address book.
"
- }
- },
- "documentation":"An address book with attributes.
"
- },
- "AddressBookData":{
- "type":"structure",
- "members":{
- "AddressBookArn":{
- "shape":"Arn",
- "documentation":"The ARN of the address book.
"
- },
- "Name":{
- "shape":"AddressBookName",
- "documentation":"The name of the address book.
"
- },
- "Description":{
- "shape":"AddressBookDescription",
- "documentation":"The description of the address book.
"
- }
- },
- "documentation":"Information related to an address book.
"
- },
- "AddressBookDataList":{
- "type":"list",
- "member":{"shape":"AddressBookData"}
- },
- "AddressBookDescription":{
- "type":"string",
- "max":200,
- "min":1,
- "pattern":"[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*"
- },
- "AddressBookName":{
- "type":"string",
- "max":100,
- "min":1,
- "pattern":"[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*"
- },
- "AlreadyExistsException":{
- "type":"structure",
- "members":{
- "Message":{"shape":"ErrorMessage"}
- },
- "documentation":"The resource being created already exists. HTTP Status Code: 400
",
- "exception":true
- },
- "Arn":{
- "type":"string",
- "pattern":"arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}"
- },
- "AssociateContactWithAddressBookRequest":{
- "type":"structure",
- "required":[
- "ContactArn",
- "AddressBookArn"
- ],
- "members":{
- "ContactArn":{
- "shape":"Arn",
- "documentation":"The ARN of the contact to associate with an address book.
"
- },
- "AddressBookArn":{
- "shape":"Arn",
- "documentation":"The ARN of the address book with which to associate the contact.
"
- }
- }
- },
- "AssociateContactWithAddressBookResponse":{
- "type":"structure",
- "members":{
- }
- },
- "AssociateDeviceWithRoomRequest":{
- "type":"structure",
- "members":{
- "DeviceArn":{
- "shape":"Arn",
- "documentation":"The ARN of the device to associate to a room. Required.
"
- },
- "RoomArn":{
- "shape":"Arn",
- "documentation":"The ARN of the room with which to associate the device. Required.
"
- }
- }
- },
- "AssociateDeviceWithRoomResponse":{
- "type":"structure",
- "members":{
- }
- },
- "AssociateSkillGroupWithRoomRequest":{
- "type":"structure",
- "members":{
- "SkillGroupArn":{
- "shape":"Arn",
- "documentation":"The ARN of the skill group to associate with a room. Required.
"
- },
- "RoomArn":{
- "shape":"Arn",
- "documentation":"The ARN of the room with which to associate the skill group. Required.
"
- }
- }
- },
- "AssociateSkillGroupWithRoomResponse":{
- "type":"structure",
- "members":{
- }
- },
- "Boolean":{"type":"boolean"},
- "ClientRequestToken":{
- "type":"string",
- "documentation":"User specified token that is used to support idempotency during Create Resource",
- "max":150,
- "min":10,
- "pattern":"[a-zA-Z0-9][a-zA-Z0-9_-]*"
- },
- "ConnectionStatus":{
- "type":"string",
- "enum":[
- "ONLINE",
- "OFFLINE"
- ]
- },
- "Contact":{
- "type":"structure",
- "members":{
- "ContactArn":{
- "shape":"Arn",
- "documentation":"The ARN of the contact.
"
- },
- "DisplayName":{
- "shape":"ContactName",
- "documentation":"The name of the contact to display on the console.
"
- },
- "FirstName":{
- "shape":"ContactName",
- "documentation":"The first name of the contact, used to call the contact on the device.
"
- },
- "LastName":{
- "shape":"ContactName",
- "documentation":"The last name of the contact, used to call the contact on the device.
"
- },
- "PhoneNumber":{
- "shape":"E164PhoneNumber",
- "documentation":"The phone number of the contact.
"
- }
- },
- "documentation":"A contact with attributes.
"
- },
- "ContactData":{
- "type":"structure",
- "members":{
- "ContactArn":{
- "shape":"Arn",
- "documentation":"The ARN of the contact.
"
- },
- "DisplayName":{
- "shape":"ContactName",
- "documentation":"The name of the contact to display on the console.
"
- },
- "FirstName":{
- "shape":"ContactName",
- "documentation":"The first name of the contact, used to call the contact on the device.
"
- },
- "LastName":{
- "shape":"ContactName",
- "documentation":"The last name of the contact, used to call the contact on the device.
"
- },
- "PhoneNumber":{
- "shape":"E164PhoneNumber",
- "documentation":"The phone number of the contact.
"
- }
- },
- "documentation":"Information related to a contact.
"
- },
- "ContactDataList":{
- "type":"list",
- "member":{"shape":"ContactData"}
- },
- "ContactName":{
- "type":"string",
- "max":100,
- "min":1,
- "pattern":"[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*"
- },
- "CreateAddressBookRequest":{
- "type":"structure",
- "required":["Name"],
- "members":{
- "Name":{
- "shape":"AddressBookName",
- "documentation":"The name of the address book.
"
- },
- "Description":{
- "shape":"AddressBookDescription",
- "documentation":"The description of the address book.
"
- },
- "ClientRequestToken":{
- "shape":"ClientRequestToken",
- "documentation":"A unique, user-specified identifier for the request that ensures idempotency.
",
- "idempotencyToken":true
- }
- }
- },
- "CreateAddressBookResponse":{
- "type":"structure",
- "members":{
- "AddressBookArn":{
- "shape":"Arn",
- "documentation":"The ARN of the newly created address book.
"
- }
- }
- },
- "CreateContactRequest":{
- "type":"structure",
- "required":[
- "FirstName",
- "PhoneNumber"
- ],
- "members":{
- "DisplayName":{
- "shape":"ContactName",
- "documentation":"The name of the contact to display on the console.
"
- },
- "FirstName":{
- "shape":"ContactName",
- "documentation":"The first name of the contact that is used to call the contact on the device.
"
- },
- "LastName":{
- "shape":"ContactName",
- "documentation":"The last name of the contact that is used to call the contact on the device.
"
- },
- "PhoneNumber":{
- "shape":"E164PhoneNumber",
- "documentation":"The phone number of the contact in E.164 format.
"
- },
- "ClientRequestToken":{
- "shape":"ClientRequestToken",
- "documentation":"A unique, user-specified identifier for this request that ensures idempotency.
",
- "idempotencyToken":true
- }
- }
- },
- "CreateContactResponse":{
- "type":"structure",
- "members":{
- "ContactArn":{
- "shape":"Arn",
- "documentation":"The ARN of the newly created address book.
"
- }
- }
- },
- "CreateProfileRequest":{
- "type":"structure",
- "required":[
- "ProfileName",
- "Timezone",
- "Address",
- "DistanceUnit",
- "TemperatureUnit",
- "WakeWord"
- ],
- "members":{
- "ProfileName":{
- "shape":"ProfileName",
- "documentation":"The name of a room profile.
"
- },
- "Timezone":{
- "shape":"Timezone",
- "documentation":"The time zone used by a room profile.
"
- },
- "Address":{
- "shape":"Address",
- "documentation":"The valid address for the room.
"
- },
- "DistanceUnit":{
- "shape":"DistanceUnit",
- "documentation":"The distance unit to be used by devices in the profile.
"
- },
- "TemperatureUnit":{
- "shape":"TemperatureUnit",
- "documentation":"The temperature unit to be used by devices in the profile.
"
- },
- "WakeWord":{
- "shape":"WakeWord",
- "documentation":"A wake word for Alexa, Echo, Amazon, or a computer.
"
- },
- "ClientRequestToken":{
- "shape":"ClientRequestToken",
- "documentation":"The user-specified token that is used during the creation of a profile.
",
- "idempotencyToken":true
- },
- "SetupModeDisabled":{
- "shape":"Boolean",
- "documentation":"Whether room profile setup is enabled.
"
- },
- "MaxVolumeLimit":{
- "shape":"MaxVolumeLimit",
- "documentation":"The maximum volume limit for a room profile.
"
- },
- "PSTNEnabled":{
- "shape":"Boolean",
- "documentation":"Whether PSTN calling is enabled.
"
- }
- }
- },
- "CreateProfileResponse":{
- "type":"structure",
- "members":{
- "ProfileArn":{
- "shape":"Arn",
- "documentation":"The ARN of the newly created room profile in the response.
"
- }
- }
- },
- "CreateRoomRequest":{
- "type":"structure",
- "required":["RoomName"],
- "members":{
- "RoomName":{
- "shape":"RoomName",
- "documentation":"The name for the room.
"
- },
- "Description":{
- "shape":"RoomDescription",
- "documentation":"The description for the room.
"
- },
- "ProfileArn":{
- "shape":"Arn",
- "documentation":"The profile ARN for the room.
"
- },
- "ProviderCalendarId":{
- "shape":"ProviderCalendarId",
- "documentation":"The calendar ARN for the room.
"
- },
- "ClientRequestToken":{
- "shape":"ClientRequestToken",
- "documentation":"A unique, user-specified identifier for this request that ensures idempotency.
",
- "idempotencyToken":true
- },
- "Tags":{
- "shape":"TagList",
- "documentation":"The tags for the room.
"
- }
- }
- },
- "CreateRoomResponse":{
- "type":"structure",
- "members":{
- "RoomArn":{
- "shape":"Arn",
- "documentation":"The ARN of the newly created room in the response.
"
- }
- }
- },
- "CreateSkillGroupRequest":{
- "type":"structure",
- "required":["SkillGroupName"],
- "members":{
- "SkillGroupName":{
- "shape":"SkillGroupName",
- "documentation":"The name for the skill group.
"
- },
- "Description":{
- "shape":"SkillGroupDescription",
- "documentation":"The description for the skill group.
"
- },
- "ClientRequestToken":{
- "shape":"ClientRequestToken",
- "documentation":"A unique, user-specified identifier for this request that ensures idempotency.
",
- "idempotencyToken":true
- }
- }
- },
- "CreateSkillGroupResponse":{
- "type":"structure",
- "members":{
- "SkillGroupArn":{
- "shape":"Arn",
- "documentation":"The ARN of the newly created skill group in the response.
"
- }
- }
- },
- "CreateUserRequest":{
- "type":"structure",
- "required":["UserId"],
- "members":{
- "UserId":{
- "shape":"user_UserId",
- "documentation":"The ARN for the user.
"
- },
- "FirstName":{
- "shape":"user_FirstName",
- "documentation":"The first name for the user.
"
- },
- "LastName":{
- "shape":"user_LastName",
- "documentation":"The last name for the user.
"
- },
- "Email":{
- "shape":"Email",
- "documentation":"The email address for the user.
"
- },
- "ClientRequestToken":{
- "shape":"ClientRequestToken",
- "documentation":"A unique, user-specified identifier for this request that ensures idempotency.
",
- "idempotencyToken":true
- },
- "Tags":{
- "shape":"TagList",
- "documentation":"The tags for the user.
"
- }
- }
- },
- "CreateUserResponse":{
- "type":"structure",
- "members":{
- "UserArn":{
- "shape":"Arn",
- "documentation":"The ARN of the newly created user in the response.
"
- }
- }
- },
- "DeleteAddressBookRequest":{
- "type":"structure",
- "required":["AddressBookArn"],
- "members":{
- "AddressBookArn":{
- "shape":"Arn",
- "documentation":"The ARN of the address book to delete.
"
- }
- }
- },
- "DeleteAddressBookResponse":{
- "type":"structure",
- "members":{
- }
- },
- "DeleteContactRequest":{
- "type":"structure",
- "required":["ContactArn"],
- "members":{
- "ContactArn":{
- "shape":"Arn",
- "documentation":"The ARN of the contact to delete.
"
- }
- }
- },
- "DeleteContactResponse":{
- "type":"structure",
- "members":{
- }
- },
- "DeleteProfileRequest":{
- "type":"structure",
- "members":{
- "ProfileArn":{
- "shape":"Arn",
- "documentation":"The ARN of the room profile to delete. Required.
"
- }
- }
- },
- "DeleteProfileResponse":{
- "type":"structure",
- "members":{
- }
- },
- "DeleteRoomRequest":{
- "type":"structure",
- "members":{
- "RoomArn":{
- "shape":"Arn",
- "documentation":"The ARN of the room to delete. Required.
"
- }
- }
- },
- "DeleteRoomResponse":{
- "type":"structure",
- "members":{
- }
- },
- "DeleteRoomSkillParameterRequest":{
- "type":"structure",
- "required":[
- "SkillId",
- "ParameterKey"
- ],
- "members":{
- "RoomArn":{
- "shape":"Arn",
- "documentation":"The ARN of the room from which to remove the room skill parameter details.
"
- },
- "SkillId":{
- "shape":"SkillId",
- "documentation":"The ID of the skill from which to remove the room skill parameter details.
"
- },
- "ParameterKey":{
- "shape":"RoomSkillParameterKey",
- "documentation":"The room skill parameter key for which to remove details.
"
- }
- }
- },
- "DeleteRoomSkillParameterResponse":{
- "type":"structure",
- "members":{
- }
- },
- "DeleteSkillGroupRequest":{
- "type":"structure",
- "members":{
- "SkillGroupArn":{
- "shape":"Arn",
- "documentation":"The ARN of the skill group to delete. Required.
"
- }
- }
- },
- "DeleteSkillGroupResponse":{
- "type":"structure",
- "members":{
- }
- },
- "DeleteUserRequest":{
- "type":"structure",
- "required":["EnrollmentId"],
- "members":{
- "UserArn":{
- "shape":"Arn",
- "documentation":"The ARN of the user to delete in the organization. Required.
"
- },
- "EnrollmentId":{
- "shape":"EnrollmentId",
- "documentation":"The ARN of the user's enrollment in the organization. Required.
"
- }
- }
- },
- "DeleteUserResponse":{
- "type":"structure",
- "members":{
- }
- },
- "Device":{
- "type":"structure",
- "members":{
- "DeviceArn":{
- "shape":"Arn",
- "documentation":"The ARN of a device.
"
- },
- "DeviceSerialNumber":{
- "shape":"DeviceSerialNumber",
- "documentation":"The serial number of a device.
"
- },
- "DeviceType":{
- "shape":"DeviceType",
- "documentation":"The type of a device.
"
- },
- "DeviceName":{
- "shape":"DeviceName",
- "documentation":"The name of a device.
"
- },
- "SoftwareVersion":{
- "shape":"SoftwareVersion",
- "documentation":"The software version of a device.
"
- },
- "MacAddress":{
- "shape":"MacAddress",
- "documentation":"The MAC address of a device.
"
- },
- "RoomArn":{
- "shape":"Arn",
- "documentation":"The room ARN of a device.
"
- },
- "DeviceStatus":{
- "shape":"DeviceStatus",
- "documentation":"The status of a device. If the status is not READY, check the DeviceStatusInfo value for details.
"
- },
- "DeviceStatusInfo":{
- "shape":"DeviceStatusInfo",
- "documentation":"Detailed information about a device's status.
"
- }
- },
- "documentation":"A device with attributes.
"
- },
- "DeviceData":{
- "type":"structure",
- "members":{
- "DeviceArn":{
- "shape":"Arn",
- "documentation":"The ARN of a device.
"
- },
- "DeviceSerialNumber":{
- "shape":"DeviceSerialNumber",
- "documentation":"The serial number of a device.
"
- },
- "DeviceType":{
- "shape":"DeviceType",
- "documentation":"The type of a device.
"
- },
- "DeviceName":{
- "shape":"DeviceName",
- "documentation":"The name of a device.
"
- },
- "SoftwareVersion":{
- "shape":"SoftwareVersion",
- "documentation":"The software version of a device.
"
- },
- "MacAddress":{
- "shape":"MacAddress",
- "documentation":"The MAC address of a device.
"
- },
- "DeviceStatus":{
- "shape":"DeviceStatus",
- "documentation":"The status of a device.
"
- },
- "RoomArn":{
- "shape":"Arn",
- "documentation":"The room ARN associated with a device.
"
- },
- "RoomName":{
- "shape":"RoomName",
- "documentation":"The name of the room associated with a device.
"
- },
- "DeviceStatusInfo":{
- "shape":"DeviceStatusInfo",
- "documentation":"Detailed information about a device's status.
"
- }
- },
- "documentation":"Device attributes.
"
- },
- "DeviceDataList":{
- "type":"list",
- "member":{"shape":"DeviceData"}
- },
- "DeviceEvent":{
- "type":"structure",
- "members":{
- "Type":{
- "shape":"DeviceEventType",
- "documentation":"The type of device event.
"
- },
- "Value":{
- "shape":"DeviceEventValue",
- "documentation":"The value of the event.
"
- },
- "Timestamp":{
- "shape":"Timestamp",
- "documentation":"The time (in epoch) when the event occurred.
"
- }
- },
- "documentation":"The list of device events.
"
- },
- "DeviceEventList":{
- "type":"list",
- "member":{"shape":"DeviceEvent"}
- },
- "DeviceEventType":{
- "type":"string",
- "enum":[
- "CONNECTION_STATUS",
- "DEVICE_STATUS"
- ]
- },
- "DeviceEventValue":{"type":"string"},
- "DeviceName":{
- "type":"string",
- "max":100,
- "min":2,
- "pattern":"[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*"
- },
- "DeviceNotRegisteredException":{
- "type":"structure",
- "members":{
- "Message":{"shape":"ErrorMessage"}
- },
- "documentation":"The request failed because this device is no longer registered and therefore no longer managed by this account.
",
- "exception":true
- },
- "DeviceSerialNumber":{
- "type":"string",
- "pattern":"[a-zA-Z0-9]{1,200}"
- },
- "DeviceStatus":{
- "type":"string",
- "enum":[
- "READY",
- "PENDING",
- "WAS_OFFLINE",
- "DEREGISTERED"
- ]
- },
- "DeviceStatusDetail":{
- "type":"structure",
- "members":{
- "Code":{
- "shape":"DeviceStatusDetailCode",
- "documentation":"The device status detail code.
"
- }
- },
- "documentation":"Details of a device’s status.
"
- },
- "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":"One or more device status detail descriptions.
"
- },
- "ConnectionStatus":{
- "shape":"ConnectionStatus",
- "documentation":"The latest available information about the connection status of a device.
"
- }
- },
- "documentation":"Detailed information about a device's status.
"
- },
- "DeviceType":{
- "type":"string",
- "pattern":"[a-zA-Z0-9]{1,200}"
- },
- "DisassociateContactFromAddressBookRequest":{
- "type":"structure",
- "required":[
- "ContactArn",
- "AddressBookArn"
- ],
- "members":{
- "ContactArn":{
- "shape":"Arn",
- "documentation":"The ARN of the contact to disassociate from an address book.
"
- },
- "AddressBookArn":{
- "shape":"Arn",
- "documentation":"The ARN of the address from which to disassociate the contact.
"
- }
- }
- },
- "DisassociateContactFromAddressBookResponse":{
- "type":"structure",
- "members":{
- }
- },
- "DisassociateDeviceFromRoomRequest":{
- "type":"structure",
- "members":{
- "DeviceArn":{
- "shape":"Arn",
- "documentation":"The ARN of the device to disassociate from a room. Required.
"
- }
- }
- },
- "DisassociateDeviceFromRoomResponse":{
- "type":"structure",
- "members":{
- }
- },
- "DisassociateSkillGroupFromRoomRequest":{
- "type":"structure",
- "members":{
- "SkillGroupArn":{
- "shape":"Arn",
- "documentation":"The ARN of the skill group to disassociate from a room. Required.
"
- },
- "RoomArn":{
- "shape":"Arn",
- "documentation":"The ARN of the room from which the skill group is to be disassociated. Required.
"
- }
- }
- },
- "DisassociateSkillGroupFromRoomResponse":{
- "type":"structure",
- "members":{
- }
- },
- "DistanceUnit":{
- "type":"string",
- "enum":[
- "METRIC",
- "IMPERIAL"
- ]
- },
- "E164PhoneNumber":{
- "type":"string",
- "pattern":"^\\+\\d{8,}$"
- },
- "Email":{
- "type":"string",
- "max":128,
- "min":1,
- "pattern":"([0-9a-zA-Z]([+-.\\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\\w]*[0-9a-zA-Z]\\.)+[a-zA-Z]{2,9})"
- },
- "EnrollmentId":{
- "type":"string",
- "max":128,
- "min":0
- },
- "EnrollmentStatus":{
- "type":"string",
- "enum":[
- "INITIALIZED",
- "PENDING",
- "REGISTERED",
- "DISASSOCIATING",
- "DEREGISTERING"
- ]
- },
- "ErrorMessage":{"type":"string"},
- "Feature":{
- "type":"string",
- "enum":[
- "BLUETOOTH",
- "VOLUME",
- "NOTIFICATIONS",
- "LISTS",
- "SKILLS",
- "ALL"
- ]
- },
- "Features":{
- "type":"list",
- "member":{"shape":"Feature"}
- },
- "Filter":{
- "type":"structure",
- "required":[
- "Key",
- "Values"
- ],
- "members":{
- "Key":{
- "shape":"FilterKey",
- "documentation":"The key of a filter.
"
- },
- "Values":{
- "shape":"FilterValueList",
- "documentation":"The values of a filter.
"
- }
- },
- "documentation":"A filter name and value pair that is used to return a more specific list of results. Filters can be used to match a set of resources by various criteria.
"
- },
- "FilterKey":{
- "type":"string",
- "max":500,
- "min":1
- },
- "FilterList":{
- "type":"list",
- "member":{"shape":"Filter"},
- "max":25
- },
- "FilterValue":{
- "type":"string",
- "max":500,
- "min":1
- },
- "FilterValueList":{
- "type":"list",
- "member":{"shape":"FilterValue"},
- "max":5
- },
- "GetAddressBookRequest":{
- "type":"structure",
- "required":["AddressBookArn"],
- "members":{
- "AddressBookArn":{
- "shape":"Arn",
- "documentation":"The ARN of the address book for which to request details.
"
- }
- }
- },
- "GetAddressBookResponse":{
- "type":"structure",
- "members":{
- "AddressBook":{
- "shape":"AddressBook",
- "documentation":"The details of the requested address book.
"
- }
- }
- },
- "GetContactRequest":{
- "type":"structure",
- "required":["ContactArn"],
- "members":{
- "ContactArn":{
- "shape":"Arn",
- "documentation":"The ARN of the contact for which to request details.
"
- }
- }
- },
- "GetContactResponse":{
- "type":"structure",
- "members":{
- "Contact":{
- "shape":"Contact",
- "documentation":"The details of the requested contact.
"
- }
- }
- },
- "GetDeviceRequest":{
- "type":"structure",
- "members":{
- "DeviceArn":{
- "shape":"Arn",
- "documentation":"The ARN of the device for which to request details. Required.
"
- }
- }
- },
- "GetDeviceResponse":{
- "type":"structure",
- "members":{
- "Device":{
- "shape":"Device",
- "documentation":"The details of the device requested. Required.
"
- }
- }
- },
- "GetProfileRequest":{
- "type":"structure",
- "members":{
- "ProfileArn":{
- "shape":"Arn",
- "documentation":"The ARN of the room profile for which to request details. Required.
"
- }
- }
- },
- "GetProfileResponse":{
- "type":"structure",
- "members":{
- "Profile":{
- "shape":"Profile",
- "documentation":"The details of the room profile requested. Required.
"
- }
- }
- },
- "GetRoomRequest":{
- "type":"structure",
- "members":{
- "RoomArn":{
- "shape":"Arn",
- "documentation":"The ARN of the room for which to request details. Required.
"
- }
- }
- },
- "GetRoomResponse":{
- "type":"structure",
- "members":{
- "Room":{
- "shape":"Room",
- "documentation":"The details of the room requested.
"
- }
- }
- },
- "GetRoomSkillParameterRequest":{
- "type":"structure",
- "required":[
- "SkillId",
- "ParameterKey"
- ],
- "members":{
- "RoomArn":{
- "shape":"Arn",
- "documentation":"The ARN of the room from which to get the room skill parameter details.
"
- },
- "SkillId":{
- "shape":"SkillId",
- "documentation":"The ARN of the skill from which to get the room skill parameter details. Required.
"
- },
- "ParameterKey":{
- "shape":"RoomSkillParameterKey",
- "documentation":"The room skill parameter key for which to get details. Required.
"
- }
- }
- },
- "GetRoomSkillParameterResponse":{
- "type":"structure",
- "members":{
- "RoomSkillParameter":{
- "shape":"RoomSkillParameter",
- "documentation":"The details of the room skill parameter requested. Required.
"
- }
- }
- },
- "GetSkillGroupRequest":{
- "type":"structure",
- "members":{
- "SkillGroupArn":{
- "shape":"Arn",
- "documentation":"The ARN of the skill group for which to get details. Required.
"
- }
- }
- },
- "GetSkillGroupResponse":{
- "type":"structure",
- "members":{
- "SkillGroup":{
- "shape":"SkillGroup",
- "documentation":"The details of the skill group requested. Required.
"
- }
- }
- },
- "InvalidUserStatusException":{
- "type":"structure",
- "members":{
- "Message":{"shape":"ErrorMessage"}
- },
- "documentation":"The attempt to update a user is invalid due to the user's current status. HTTP Status Code: 400
",
- "exception":true
- },
- "LimitExceededException":{
- "type":"structure",
- "members":{
- "Message":{"shape":"ErrorMessage"}
- },
- "documentation":"You are performing an action that would put you beyond your account's limits. HTTP Status Code: 400
",
- "exception":true
- },
- "ListDeviceEventsRequest":{
- "type":"structure",
- "required":["DeviceArn"],
- "members":{
- "DeviceArn":{
- "shape":"Arn",
- "documentation":"The ARN of a device.
"
- },
- "EventType":{
- "shape":"DeviceEventType",
- "documentation":"The event type to filter device events. If EventType isn't specified, this returns a list of all device events in reverse chronological order. If EventType is specified, this returns a list of device events for that EventType in reverse chronological order.
"
- },
- "NextToken":{
- "shape":"NextToken",
- "documentation":"An optional token returned from a prior request. Use this token for pagination of results from this action. If this parameter is specified, the response only includes results beyond the token, up to the value specified by MaxResults. When the end of results is reached, the response has a value of null.
"
- },
- "MaxResults":{
- "shape":"MaxResults",
- "documentation":"The maximum number of results to include in the response. The default value is 50. If more results exist than the specified MaxResults value, a token is included in the response so that the remaining results can be retrieved.
"
- }
- }
- },
- "ListDeviceEventsResponse":{
- "type":"structure",
- "members":{
- "DeviceEvents":{
- "shape":"DeviceEventList",
- "documentation":"The device events requested for the device ARN.
"
- },
- "NextToken":{
- "shape":"NextToken",
- "documentation":"The token returned to indicate that there is more data available.
"
- }
- }
- },
- "ListSkillsRequest":{
- "type":"structure",
- "members":{
- "SkillGroupArn":{
- "shape":"Arn",
- "documentation":"The ARN of the skill group for which to list enabled skills. Required.
"
- },
- "NextToken":{
- "shape":"NextToken",
- "documentation":"An optional token returned from a prior request. Use this token for pagination of results from this action. If this parameter is specified, the response includes only results beyond the token, up to the value specified by MaxResults
. Required.
"
- },
- "MaxResults":{
- "shape":"SkillListMaxResults",
- "documentation":"The maximum number of results to include in the response. If more results exist than the specified MaxResults
value, a token is included in the response so that the remaining results can be retrieved. Required.
"
- }
- }
- },
- "ListSkillsResponse":{
- "type":"structure",
- "members":{
- "SkillSummaries":{
- "shape":"SkillSummaryList",
- "documentation":"The list of enabled skills requested. Required.
"
- },
- "NextToken":{
- "shape":"NextToken",
- "documentation":"The token returned to indicate that there is more data available.
"
- }
- }
- },
- "ListTagsRequest":{
- "type":"structure",
- "required":["Arn"],
- "members":{
- "Arn":{
- "shape":"Arn",
- "documentation":"The ARN of the specified resource for which to list tags.
"
- },
- "NextToken":{
- "shape":"NextToken",
- "documentation":"An optional token returned from a prior request. Use this token for pagination of results from this action. If this parameter is specified, the response includes only results beyond the token, up to the value specified by MaxResults
.
"
- },
- "MaxResults":{
- "shape":"MaxResults",
- "documentation":"The maximum number of results to include in the response. If more results exist than the specified MaxResults
value, a token is included in the response so that the remaining results can be retrieved.
"
- }
- }
- },
- "ListTagsResponse":{
- "type":"structure",
- "members":{
- "Tags":{
- "shape":"TagList",
- "documentation":"The tags requested for the specified resource.
"
- },
- "NextToken":{
- "shape":"NextToken",
- "documentation":"The token returned to indicate that there is more data available.
"
- }
- }
- },
- "MacAddress":{"type":"string"},
- "MaxResults":{
- "type":"integer",
- "max":50,
- "min":1
- },
- "MaxVolumeLimit":{"type":"integer"},
- "NameInUseException":{
- "type":"structure",
- "members":{
- "Message":{"shape":"ErrorMessage"}
- },
- "documentation":"The name sent in the request is already in use. HTTP Status Code: 400
",
- "exception":true
- },
- "NextToken":{
- "type":"string",
- "max":1000,
- "min":1
- },
- "NotFoundException":{
- "type":"structure",
- "members":{
- "Message":{"shape":"ErrorMessage"}
- },
- "documentation":"The resource is not found. HTTP Status Code: 400
",
- "exception":true
- },
- "Profile":{
- "type":"structure",
- "members":{
- "ProfileArn":{
- "shape":"Arn",
- "documentation":"The ARN of a room profile.
"
- },
- "ProfileName":{
- "shape":"ProfileName",
- "documentation":"The name of a room profile.
"
- },
- "Address":{
- "shape":"Address",
- "documentation":"The address of a room profile.
"
- },
- "Timezone":{
- "shape":"Timezone",
- "documentation":"The time zone of a room profile.
"
- },
- "DistanceUnit":{
- "shape":"DistanceUnit",
- "documentation":"The distance unit of a room profile.
"
- },
- "TemperatureUnit":{
- "shape":"TemperatureUnit",
- "documentation":"The temperature unit of a room profile.
"
- },
- "WakeWord":{
- "shape":"WakeWord",
- "documentation":"The wake word of a room profile.
"
- },
- "SetupModeDisabled":{
- "shape":"Boolean",
- "documentation":"The setup mode of a room profile.
"
- },
- "MaxVolumeLimit":{
- "shape":"MaxVolumeLimit",
- "documentation":"The max volume limit of a room profile.
"
- },
- "PSTNEnabled":{
- "shape":"Boolean",
- "documentation":"The PSTN setting of a room profile.
"
- }
- },
- "documentation":"A room profile with attributes.
"
- },
- "ProfileData":{
- "type":"structure",
- "members":{
- "ProfileArn":{
- "shape":"Arn",
- "documentation":"The ARN of a room profile.
"
- },
- "ProfileName":{
- "shape":"ProfileName",
- "documentation":"The name of a room profile.
"
- },
- "Address":{
- "shape":"Address",
- "documentation":"The address of a room profile.
"
- },
- "Timezone":{
- "shape":"Timezone",
- "documentation":"The timezone of a room profile.
"
- },
- "DistanceUnit":{
- "shape":"DistanceUnit",
- "documentation":"The distance unit of a room profile.
"
- },
- "TemperatureUnit":{
- "shape":"TemperatureUnit",
- "documentation":"The temperature unit of a room profile.
"
- },
- "WakeWord":{
- "shape":"WakeWord",
- "documentation":"The wake word of a room profile.
"
- }
- },
- "documentation":"The data of a room profile.
"
- },
- "ProfileDataList":{
- "type":"list",
- "member":{"shape":"ProfileData"}
- },
- "ProfileName":{
- "type":"string",
- "max":100,
- "min":1,
- "pattern":"[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*"
- },
- "ProviderCalendarId":{
- "type":"string",
- "max":100,
- "min":0
- },
- "PutRoomSkillParameterRequest":{
- "type":"structure",
- "required":[
- "SkillId",
- "RoomSkillParameter"
- ],
- "members":{
- "RoomArn":{
- "shape":"Arn",
- "documentation":"The ARN of the room associated with the room skill parameter. Required.
"
- },
- "SkillId":{
- "shape":"SkillId",
- "documentation":"The ARN of the skill associated with the room skill parameter. Required.
"
- },
- "RoomSkillParameter":{
- "shape":"RoomSkillParameter",
- "documentation":"The updated room skill parameter. Required.
"
- }
- }
- },
- "PutRoomSkillParameterResponse":{
- "type":"structure",
- "members":{
- }
- },
- "ResolveRoomRequest":{
- "type":"structure",
- "required":[
- "UserId",
- "SkillId"
- ],
- "members":{
- "UserId":{
- "shape":"UserId",
- "documentation":"The ARN of the user. Required.
"
- },
- "SkillId":{
- "shape":"SkillId",
- "documentation":"The ARN of the skill that was requested. Required.
"
- }
- }
- },
- "ResolveRoomResponse":{
- "type":"structure",
- "members":{
- "RoomArn":{
- "shape":"Arn",
- "documentation":"The ARN of the room from which the skill request was invoked.
"
- },
- "RoomName":{
- "shape":"RoomName",
- "documentation":"The name of the room from which the skill request was invoked.
"
- },
- "RoomSkillParameters":{
- "shape":"RoomSkillParameters",
- "documentation":"Response to get the room profile request. Required.
"
- }
- }
- },
- "ResourceInUseException":{
- "type":"structure",
- "members":{
- "Message":{"shape":"ErrorMessage"},
- "ClientRequestToken":{"shape":"ClientRequestToken"}
- },
- "documentation":"The resource in the request is already in use. HTTP Status Code: 400
",
- "exception":true
- },
- "RevokeInvitationRequest":{
- "type":"structure",
- "members":{
- "UserArn":{
- "shape":"Arn",
- "documentation":"The ARN of the user for whom to revoke an enrollment invitation. Required.
"
- },
- "EnrollmentId":{
- "shape":"EnrollmentId",
- "documentation":"The ARN of the enrollment invitation to revoke. Required.
"
- }
- }
- },
- "RevokeInvitationResponse":{
- "type":"structure",
- "members":{
- }
- },
- "Room":{
- "type":"structure",
- "members":{
- "RoomArn":{
- "shape":"Arn",
- "documentation":"The ARN of a room.
"
- },
- "RoomName":{
- "shape":"RoomName",
- "documentation":"The name of a room.
"
- },
- "Description":{
- "shape":"RoomDescription",
- "documentation":"The description of a room.
"
- },
- "ProviderCalendarId":{
- "shape":"ProviderCalendarId",
- "documentation":"The provider calendar ARN of a room.
"
- },
- "ProfileArn":{
- "shape":"Arn",
- "documentation":"The profile ARN of a room.
"
- }
- },
- "documentation":"A room with attributes.
"
- },
- "RoomData":{
- "type":"structure",
- "members":{
- "RoomArn":{
- "shape":"Arn",
- "documentation":"The ARN of a room.
"
- },
- "RoomName":{
- "shape":"RoomName",
- "documentation":"The name of a room.
"
- },
- "Description":{
- "shape":"RoomDescription",
- "documentation":"The description of a room.
"
- },
- "ProviderCalendarId":{
- "shape":"ProviderCalendarId",
- "documentation":"The provider calendar ARN of a room.
"
- },
- "ProfileArn":{
- "shape":"Arn",
- "documentation":"The profile ARN of a room.
"
- },
- "ProfileName":{
- "shape":"ProfileName",
- "documentation":"The profile name of a room.
"
- }
- },
- "documentation":"The data of a room.
"
- },
- "RoomDataList":{
- "type":"list",
- "member":{"shape":"RoomData"}
- },
- "RoomDescription":{
- "type":"string",
- "max":200,
- "min":1,
- "pattern":"[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*"
- },
- "RoomName":{
- "type":"string",
- "max":100,
- "min":1,
- "pattern":"[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*"
- },
- "RoomSkillParameter":{
- "type":"structure",
- "required":[
- "ParameterKey",
- "ParameterValue"
- ],
- "members":{
- "ParameterKey":{
- "shape":"RoomSkillParameterKey",
- "documentation":"The parameter key of a room skill parameter. ParameterKey is an enumerated type that only takes “DEFAULT” or “SCOPE” as valid values.
"
- },
- "ParameterValue":{
- "shape":"RoomSkillParameterValue",
- "documentation":"The parameter value of a room skill parameter.
"
- }
- },
- "documentation":"A skill parameter associated with a room.
"
- },
- "RoomSkillParameterKey":{
- "type":"string",
- "max":256,
- "min":1
- },
- "RoomSkillParameterValue":{
- "type":"string",
- "max":512,
- "min":1
- },
- "RoomSkillParameters":{
- "type":"list",
- "member":{"shape":"RoomSkillParameter"}
- },
- "SearchAddressBooksRequest":{
- "type":"structure",
- "members":{
- "Filters":{
- "shape":"FilterList",
- "documentation":"The filters to use to list a specified set of address books. The supported filter key is AddressBookName.
"
- },
- "SortCriteria":{
- "shape":"SortList",
- "documentation":"The sort order to use in listing the specified set of address books. The supported sort key is AddressBookName.
"
- },
- "NextToken":{
- "shape":"NextToken",
- "documentation":"An optional token returned from a prior request. Use this token for pagination of results from this action. If this parameter is specified, the response only includes results beyond the token, up to the value specified by MaxResults.
"
- },
- "MaxResults":{
- "shape":"MaxResults",
- "documentation":"The maximum number of results to include in the response. If more results exist than the specified MaxResults value, a token is included in the response so that the remaining results can be retrieved.
"
- }
- }
- },
- "SearchAddressBooksResponse":{
- "type":"structure",
- "members":{
- "AddressBooks":{
- "shape":"AddressBookDataList",
- "documentation":"The address books that meet the specified set of filter criteria, in sort order.
"
- },
- "NextToken":{
- "shape":"NextToken",
- "documentation":"The token returned to indicate that there is more data available.
"
- },
- "TotalCount":{
- "shape":"TotalCount",
- "documentation":"The total number of address books returned.
"
- }
- }
- },
- "SearchContactsRequest":{
- "type":"structure",
- "members":{
- "Filters":{
- "shape":"FilterList",
- "documentation":"The filters to use to list a specified set of address books. The supported filter keys are DisplayName, FirstName, LastName, and AddressBookArns.
"
- },
- "SortCriteria":{
- "shape":"SortList",
- "documentation":"The sort order to use in listing the specified set of contacts. The supported sort keys are DisplayName, FirstName, and LastName.
"
- },
- "NextToken":{
- "shape":"NextToken",
- "documentation":"An optional token returned from a prior request. Use this token for pagination of results from this action. If this parameter is specified, the response only includes results beyond the token, up to the value specified by MaxResults.
"
- },
- "MaxResults":{
- "shape":"MaxResults",
- "documentation":"The maximum number of results to include in the response. If more results exist than the specified MaxResults value, a token is included in the response so that the remaining results can be retrieved.
"
- }
- }
- },
- "SearchContactsResponse":{
- "type":"structure",
- "members":{
- "Contacts":{
- "shape":"ContactDataList",
- "documentation":"The contacts that meet the specified set of filter criteria, in sort order.
"
- },
- "NextToken":{
- "shape":"NextToken",
- "documentation":"The token returned to indicate that there is more data available.
"
- },
- "TotalCount":{
- "shape":"TotalCount",
- "documentation":"The total number of contacts returned.
"
- }
- }
- },
- "SearchDevicesRequest":{
- "type":"structure",
- "members":{
- "NextToken":{
- "shape":"NextToken",
- "documentation":"An optional token returned from a prior request. Use this token for pagination of results from this action. If this parameter is specified, the response includes only results beyond the token, up to the value specified by MaxResults
.
"
- },
- "MaxResults":{
- "shape":"MaxResults",
- "documentation":"The maximum number of results to include in the response. If more results exist than the specified MaxResults
value, a token is included in the response so that the remaining results can be retrieved.
"
- },
- "Filters":{
- "shape":"FilterList",
- "documentation":"The filters to use to list a specified set of devices. Supported filter keys are DeviceName, DeviceStatus, DeviceStatusDetailCode, RoomName, DeviceType, DeviceSerialNumber, UnassociatedOnly, and ConnectionStatus (ONLINE and OFFLINE).
"
- },
- "SortCriteria":{
- "shape":"SortList",
- "documentation":"The sort order to use in listing the specified set of devices. Supported sort keys are DeviceName, DeviceStatus, RoomName, DeviceType, DeviceSerialNumber, and ConnectionStatus.
"
- }
- }
- },
- "SearchDevicesResponse":{
- "type":"structure",
- "members":{
- "Devices":{
- "shape":"DeviceDataList",
- "documentation":"The devices that meet the specified set of filter criteria, in sort order.
"
- },
- "NextToken":{
- "shape":"NextToken",
- "documentation":"The token returned to indicate that there is more data available.
"
- },
- "TotalCount":{
- "shape":"TotalCount",
- "documentation":"The total number of devices returned.
"
- }
- }
- },
- "SearchProfilesRequest":{
- "type":"structure",
- "members":{
- "NextToken":{
- "shape":"NextToken",
- "documentation":"An optional token returned from a prior request. Use this token for pagination of results from this action. If this parameter is specified, the response includes only results beyond the token, up to the value specified by MaxResults
.
"
- },
- "MaxResults":{
- "shape":"MaxResults",
- "documentation":"The maximum number of results to include in the response. If more results exist than the specified MaxResults
value, a token is included in the response so that the remaining results can be retrieved.
"
- },
- "Filters":{
- "shape":"FilterList",
- "documentation":"The filters to use to list a specified set of room profiles. Supported filter keys are ProfileName and Address. Required.
"
- },
- "SortCriteria":{
- "shape":"SortList",
- "documentation":"The sort order to use in listing the specified set of room profiles. Supported sort keys are ProfileName and Address.
"
- }
- }
- },
- "SearchProfilesResponse":{
- "type":"structure",
- "members":{
- "Profiles":{
- "shape":"ProfileDataList",
- "documentation":"The profiles that meet the specified set of filter criteria, in sort order.
"
- },
- "NextToken":{
- "shape":"NextToken",
- "documentation":"The token returned to indicate that there is more data available.
"
- },
- "TotalCount":{
- "shape":"TotalCount",
- "documentation":"The total number of room profiles returned.
"
- }
- }
- },
- "SearchRoomsRequest":{
- "type":"structure",
- "members":{
- "NextToken":{
- "shape":"NextToken",
- "documentation":"An optional token returned from a prior request. Use this token for pagination of results from this action. If this parameter is specified, the response includes only results beyond the token, up to the value specified by MaxResults
.
"
- },
- "MaxResults":{
- "shape":"MaxResults",
- "documentation":"The maximum number of results to include in the response. If more results exist than the specified MaxResults
value, a token is included in the response so that the remaining results can be retrieved.
"
- },
- "Filters":{
- "shape":"FilterList",
- "documentation":"The filters to use to list a specified set of rooms. The supported filter keys are RoomName and ProfileName.
"
- },
- "SortCriteria":{
- "shape":"SortList",
- "documentation":"The sort order to use in listing the specified set of rooms. The supported sort keys are RoomName and ProfileName.
"
- }
- }
- },
- "SearchRoomsResponse":{
- "type":"structure",
- "members":{
- "Rooms":{
- "shape":"RoomDataList",
- "documentation":"The rooms that meet the specified set of filter criteria, in sort order.
"
- },
- "NextToken":{
- "shape":"NextToken",
- "documentation":"The token returned to indicate that there is more data available.
"
- },
- "TotalCount":{
- "shape":"TotalCount",
- "documentation":"The total number of rooms returned.
"
- }
- }
- },
- "SearchSkillGroupsRequest":{
- "type":"structure",
- "members":{
- "NextToken":{
- "shape":"NextToken",
- "documentation":"An optional token returned from a prior request. Use this token for pagination of results from this action. If this parameter is specified, the response includes only results beyond the token, up to the value specified by MaxResults
. Required.
"
- },
- "MaxResults":{
- "shape":"MaxResults",
- "documentation":"The maximum number of results to include in the response. If more results exist than the specified MaxResults
value, a token is included in the response so that the remaining results can be retrieved.
"
- },
- "Filters":{
- "shape":"FilterList",
- "documentation":"The filters to use to list a specified set of skill groups. The supported filter key is SkillGroupName.
"
- },
- "SortCriteria":{
- "shape":"SortList",
- "documentation":"The sort order to use in listing the specified set of skill groups. The supported sort key is SkillGroupName.
"
- }
- }
- },
- "SearchSkillGroupsResponse":{
- "type":"structure",
- "members":{
- "SkillGroups":{
- "shape":"SkillGroupDataList",
- "documentation":"The skill groups that meet the filter criteria, in sort order.
"
- },
- "NextToken":{
- "shape":"NextToken",
- "documentation":"The token returned to indicate that there is more data available.
"
- },
- "TotalCount":{
- "shape":"TotalCount",
- "documentation":"The total number of skill groups returned.
"
- }
- }
- },
- "SearchUsersRequest":{
- "type":"structure",
- "members":{
- "NextToken":{
- "shape":"NextToken",
- "documentation":"An optional token returned from a prior request. Use this token for pagination of results from this action. If this parameter is specified, the response includes only results beyond the token, up to the value specified by MaxResults
. Required.
"
- },
- "MaxResults":{
- "shape":"MaxResults",
- "documentation":"The maximum number of results to include in the response. If more results exist than the specified MaxResults
value, a token is included in the response so that the remaining results can be retrieved. Required.
"
- },
- "Filters":{
- "shape":"FilterList",
- "documentation":"The filters to use for listing a specific set of users. Required. Supported filter keys are UserId, FirstName, LastName, Email, and EnrollmentStatus.
"
- },
- "SortCriteria":{
- "shape":"SortList",
- "documentation":"The sort order to use in listing the filtered set of users. Required. Supported sort keys are UserId, FirstName, LastName, Email, and EnrollmentStatus.
"
- }
- }
- },
- "SearchUsersResponse":{
- "type":"structure",
- "members":{
- "Users":{
- "shape":"UserDataList",
- "documentation":"The users that meet the specified set of filter criteria, in sort order.
"
- },
- "NextToken":{
- "shape":"NextToken",
- "documentation":"The token returned to indicate that there is more data available.
"
- },
- "TotalCount":{
- "shape":"TotalCount",
- "documentation":"The total number of users returned.
"
- }
- }
- },
- "SendInvitationRequest":{
- "type":"structure",
- "members":{
- "UserArn":{
- "shape":"Arn",
- "documentation":"The ARN of the user to whom to send an invitation. Required.
"
- }
- }
- },
- "SendInvitationResponse":{
- "type":"structure",
- "members":{
- }
- },
- "SkillGroup":{
- "type":"structure",
- "members":{
- "SkillGroupArn":{
- "shape":"Arn",
- "documentation":"The ARN of a skill group.
"
- },
- "SkillGroupName":{
- "shape":"SkillGroupName",
- "documentation":"The name of a skill group.
"
- },
- "Description":{
- "shape":"SkillGroupDescription",
- "documentation":"The description of a skill group.
"
- }
- },
- "documentation":"A skill group with attributes.
"
- },
- "SkillGroupData":{
- "type":"structure",
- "members":{
- "SkillGroupArn":{
- "shape":"Arn",
- "documentation":"The skill group ARN of a skill group.
"
- },
- "SkillGroupName":{
- "shape":"SkillGroupName",
- "documentation":"The skill group name of a skill group.
"
- },
- "Description":{
- "shape":"SkillGroupDescription",
- "documentation":"The description of a skill group.
"
- }
- },
- "documentation":"The attributes of a skill group.
"
- },
- "SkillGroupDataList":{
- "type":"list",
- "member":{"shape":"SkillGroupData"}
- },
- "SkillGroupDescription":{
- "type":"string",
- "max":200,
- "min":1,
- "pattern":"[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*"
- },
- "SkillGroupName":{
- "type":"string",
- "max":100,
- "min":1,
- "pattern":"[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*"
- },
- "SkillId":{
- "type":"string",
- "pattern":"(^amzn1\\.ask\\.skill\\.[0-9a-f\\-]{1,200})|(^amzn1\\.echo-sdk-ams\\.app\\.[0-9a-f\\-]{1,200})"
- },
- "SkillListMaxResults":{
- "type":"integer",
- "max":10,
- "min":1
- },
- "SkillName":{
- "type":"string",
- "max":100,
- "min":1,
- "pattern":"[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*"
- },
- "SkillSummary":{
- "type":"structure",
- "members":{
- "SkillId":{
- "shape":"SkillId",
- "documentation":"The ARN of the skill summary.
"
- },
- "SkillName":{
- "shape":"SkillName",
- "documentation":"The name of the skill.
"
- },
- "SupportsLinking":{
- "shape":"boolean",
- "documentation":"Linking support for a skill.
"
- }
- },
- "documentation":"The summary of skills.
"
- },
- "SkillSummaryList":{
- "type":"list",
- "member":{"shape":"SkillSummary"}
- },
- "SoftwareVersion":{"type":"string"},
- "Sort":{
- "type":"structure",
- "required":[
- "Key",
- "Value"
- ],
- "members":{
- "Key":{
- "shape":"SortKey",
- "documentation":"The sort key of a sort object.
"
- },
- "Value":{
- "shape":"SortValue",
- "documentation":"The sort value of a sort object.
"
- }
- },
- "documentation":"An object representing a sort criteria.
"
- },
- "SortKey":{
- "type":"string",
- "max":500,
- "min":1
- },
- "SortList":{
- "type":"list",
- "member":{"shape":"Sort"},
- "max":25
- },
- "SortValue":{
- "type":"string",
- "enum":[
- "ASC",
- "DESC"
- ]
- },
- "StartDeviceSyncRequest":{
- "type":"structure",
- "required":["Features"],
- "members":{
- "RoomArn":{
- "shape":"Arn",
- "documentation":"The ARN of the room with which the device to sync is associated. Required.
"
- },
- "DeviceArn":{
- "shape":"Arn",
- "documentation":"The ARN of the device to sync. Required.
"
- },
- "Features":{
- "shape":"Features",
- "documentation":"Request structure to start the device sync. Required.
"
- }
- }
- },
- "StartDeviceSyncResponse":{
- "type":"structure",
- "members":{
- }
- },
- "Tag":{
- "type":"structure",
- "members":{
- "Key":{
- "shape":"TagKey",
- "documentation":"The key of a tag. Tag keys are case-sensitive.
"
- },
- "Value":{
- "shape":"TagValue",
- "documentation":"The value of a tag. Tag values are case-sensitive and can be null.
"
- }
- },
- "documentation":"A key-value pair that can be associated with a resource.
"
- },
- "TagKey":{
- "type":"string",
- "max":128,
- "min":1,
- "pattern":"^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$"
- },
- "TagKeyList":{
- "type":"list",
- "member":{"shape":"TagKey"}
- },
- "TagList":{
- "type":"list",
- "member":{"shape":"Tag"}
- },
- "TagResourceRequest":{
- "type":"structure",
- "required":[
- "Arn",
- "Tags"
- ],
- "members":{
- "Arn":{
- "shape":"Arn",
- "documentation":"The ARN of the resource to which to add metadata tags. Required.
"
- },
- "Tags":{
- "shape":"TagList",
- "documentation":"The tags to be added to the specified resource. Do not provide system tags. Required.
"
- }
- }
- },
- "TagResourceResponse":{
- "type":"structure",
- "members":{
- }
- },
- "TagValue":{
- "type":"string",
- "max":256,
- "min":0,
- "pattern":"^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$"
- },
- "TemperatureUnit":{
- "type":"string",
- "enum":[
- "FAHRENHEIT",
- "CELSIUS"
- ]
- },
- "Timestamp":{"type":"timestamp"},
- "Timezone":{
- "type":"string",
- "max":100,
- "min":1
- },
- "TotalCount":{"type":"integer"},
- "UntagResourceRequest":{
- "type":"structure",
- "required":[
- "Arn",
- "TagKeys"
- ],
- "members":{
- "Arn":{
- "shape":"Arn",
- "documentation":"The ARN of the resource from which to remove metadata tags. Required.
"
- },
- "TagKeys":{
- "shape":"TagKeyList",
- "documentation":"The tags to be removed from the specified resource. Do not provide system tags. Required.
"
- }
- }
- },
- "UntagResourceResponse":{
- "type":"structure",
- "members":{
- }
- },
- "UpdateAddressBookRequest":{
- "type":"structure",
- "required":["AddressBookArn"],
- "members":{
- "AddressBookArn":{
- "shape":"Arn",
- "documentation":"The ARN of the room to update.
"
- },
- "Name":{
- "shape":"AddressBookName",
- "documentation":"The updated name of the room.
"
- },
- "Description":{
- "shape":"AddressBookDescription",
- "documentation":"The updated description of the room.
"
- }
- }
- },
- "UpdateAddressBookResponse":{
- "type":"structure",
- "members":{
- }
- },
- "UpdateContactRequest":{
- "type":"structure",
- "required":["ContactArn"],
- "members":{
- "ContactArn":{
- "shape":"Arn",
- "documentation":"The ARN of the contact to update.
"
- },
- "DisplayName":{
- "shape":"ContactName",
- "documentation":"The updated display name of the contact.
"
- },
- "FirstName":{
- "shape":"ContactName",
- "documentation":"The updated first name of the contact.
"
- },
- "LastName":{
- "shape":"ContactName",
- "documentation":"The updated last name of the contact.
"
- },
- "PhoneNumber":{
- "shape":"E164PhoneNumber",
- "documentation":"The updated phone number of the contact.
"
- }
- }
- },
- "UpdateContactResponse":{
- "type":"structure",
- "members":{
- }
- },
- "UpdateDeviceRequest":{
- "type":"structure",
- "members":{
- "DeviceArn":{
- "shape":"Arn",
- "documentation":"The ARN of the device to update. Required.
"
- },
- "DeviceName":{
- "shape":"DeviceName",
- "documentation":"The updated device name. Required.
"
- }
- }
- },
- "UpdateDeviceResponse":{
- "type":"structure",
- "members":{
- }
- },
- "UpdateProfileRequest":{
- "type":"structure",
- "members":{
- "ProfileArn":{
- "shape":"Arn",
- "documentation":"The ARN of the room profile to update. Required.
"
- },
- "ProfileName":{
- "shape":"ProfileName",
- "documentation":"The updated name for the room profile.
"
- },
- "Timezone":{
- "shape":"Timezone",
- "documentation":"The updated timezone for the room profile.
"
- },
- "Address":{
- "shape":"Address",
- "documentation":"The updated address for the room profile.
"
- },
- "DistanceUnit":{
- "shape":"DistanceUnit",
- "documentation":"The updated distance unit for the room profile.
"
- },
- "TemperatureUnit":{
- "shape":"TemperatureUnit",
- "documentation":"The updated temperature unit for the room profile.
"
- },
- "WakeWord":{
- "shape":"WakeWord",
- "documentation":"The updated wake word for the room profile.
"
- },
- "SetupModeDisabled":{
- "shape":"Boolean",
- "documentation":"Whether the setup mode of the profile is enabled.
"
- },
- "MaxVolumeLimit":{
- "shape":"MaxVolumeLimit",
- "documentation":"The updated maximum volume limit for the room profile.
"
- },
- "PSTNEnabled":{
- "shape":"Boolean",
- "documentation":"Whether the PSTN setting of the room profile is enabled.
"
- }
- }
- },
- "UpdateProfileResponse":{
- "type":"structure",
- "members":{
- }
- },
- "UpdateRoomRequest":{
- "type":"structure",
- "members":{
- "RoomArn":{
- "shape":"Arn",
- "documentation":"The ARN of the room to update.
"
- },
- "RoomName":{
- "shape":"RoomName",
- "documentation":"The updated name for the room.
"
- },
- "Description":{
- "shape":"RoomDescription",
- "documentation":"The updated description for the room.
"
- },
- "ProviderCalendarId":{
- "shape":"ProviderCalendarId",
- "documentation":"The updated provider calendar ARN for the room.
"
- },
- "ProfileArn":{
- "shape":"Arn",
- "documentation":"The updated profile ARN for the room.
"
- }
- }
- },
- "UpdateRoomResponse":{
- "type":"structure",
- "members":{
- }
- },
- "UpdateSkillGroupRequest":{
- "type":"structure",
- "members":{
- "SkillGroupArn":{
- "shape":"Arn",
- "documentation":"The ARN of the skill group to update.
"
- },
- "SkillGroupName":{
- "shape":"SkillGroupName",
- "documentation":"The updated name for the skill group.
"
- },
- "Description":{
- "shape":"SkillGroupDescription",
- "documentation":"The updated description for the skill group.
"
- }
- }
- },
- "UpdateSkillGroupResponse":{
- "type":"structure",
- "members":{
- }
- },
- "UserData":{
- "type":"structure",
- "members":{
- "UserArn":{
- "shape":"Arn",
- "documentation":"The ARN of a user.
"
- },
- "FirstName":{
- "shape":"user_FirstName",
- "documentation":"The first name of a user.
"
- },
- "LastName":{
- "shape":"user_LastName",
- "documentation":"The last name of a user.
"
- },
- "Email":{
- "shape":"Email",
- "documentation":"The email of a user.
"
- },
- "EnrollmentStatus":{
- "shape":"EnrollmentStatus",
- "documentation":"The enrollment status of a user.
"
- },
- "EnrollmentId":{
- "shape":"EnrollmentId",
- "documentation":"The enrollment ARN of a user.
"
- }
- },
- "documentation":"Information related to a user.
"
- },
- "UserDataList":{
- "type":"list",
- "member":{"shape":"UserData"}
- },
- "UserId":{
- "type":"string",
- "pattern":"amzn1\\.[A-Za-z0-9+-\\/=.]{1,300}"
- },
- "WakeWord":{
- "type":"string",
- "enum":[
- "ALEXA",
- "AMAZON",
- "ECHO",
- "COMPUTER"
- ]
- },
- "boolean":{"type":"boolean"},
- "user_FirstName":{
- "type":"string",
- "max":30,
- "min":0,
- "pattern":"([A-Za-z\\-' 0-9._]|\\p{IsLetter})*"
- },
- "user_LastName":{
- "type":"string",
- "max":30,
- "min":0,
- "pattern":"([A-Za-z\\-' 0-9._]|\\p{IsLetter})*"
- },
- "user_UserId":{
- "type":"string",
- "max":128,
- "min":1,
- "pattern":"[a-zA-Z0-9@_+.-]*"
- }
- },
- "documentation":"Alexa for Business makes it easy for you to use Alexa in your organization. Alexa for Business gives you the tools you need for managing Alexa devices, enroll your users, and assign skills, at scale. You can build your own context-aware voice skills using the Alexa Skills Kit and the Alexa for Business API operations. You can make also these available as private skills for your organization. Alexa for Business makes it easy to voice-enable your products and services, providing context-aware voice experiences for your customers.
"
-}
diff --git a/.eggs/botocore-1.10.75-py2.7.egg/botocore/data/apigateway/2015-07-09/examples-1.json b/.eggs/botocore-1.10.75-py2.7.egg/botocore/data/apigateway/2015-07-09/examples-1.json
deleted file mode 100644
index 0ea7e3b0..00000000
--- a/.eggs/botocore-1.10.75-py2.7.egg/botocore/data/apigateway/2015-07-09/examples-1.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "version": "1.0",
- "examples": {
- }
-}
diff --git a/.eggs/botocore-1.10.75-py2.7.egg/botocore/data/apigateway/2015-07-09/paginators-1.json b/.eggs/botocore-1.10.75-py2.7.egg/botocore/data/apigateway/2015-07-09/paginators-1.json
deleted file mode 100644
index c7a44f17..00000000
--- a/.eggs/botocore-1.10.75-py2.7.egg/botocore/data/apigateway/2015-07-09/paginators-1.json
+++ /dev/null
@@ -1,76 +0,0 @@
-{
- "pagination": {
- "GetApiKeys": {
- "input_token": "position",
- "output_token": "position",
- "limit_key": "limit",
- "result_key": "items"
- },
- "GetBasePathMappings": {
- "input_token": "position",
- "output_token": "position",
- "limit_key": "limit",
- "result_key": "items"
- },
- "GetClientCertificates": {
- "input_token": "position",
- "output_token": "position",
- "limit_key": "limit",
- "result_key": "items"
- },
- "GetDeployments": {
- "input_token": "position",
- "output_token": "position",
- "limit_key": "limit",
- "result_key": "items"
- },
- "GetDomainNames": {
- "input_token": "position",
- "output_token": "position",
- "limit_key": "limit",
- "result_key": "items"
- },
- "GetModels": {
- "input_token": "position",
- "output_token": "position",
- "limit_key": "limit",
- "result_key": "items"
- },
- "GetResources": {
- "input_token": "position",
- "output_token": "position",
- "limit_key": "limit",
- "result_key": "items"
- },
- "GetRestApis": {
- "input_token": "position",
- "output_token": "position",
- "limit_key": "limit",
- "result_key": "items"
- },
- "GetUsage": {
- "input_token": "position",
- "output_token": "position",
- "limit_key": "limit",
- "result_key": "items"
- },
- "GetUsagePlans": {
- "input_token": "position",
- "output_token": "position",
- "limit_key": "limit",
- "result_key": "items"
- },
- "GetUsagePlanKeys": {
- "input_token": "position",
- "output_token": "position",
- "limit_key": "limit",
- "result_key": "items"
- },
- "GetVpcLinks": {
- "input_token": "position",
- "limit_key": "limit",
- "output_token": "position",
- "result_key": "items"
- }
- }
-}
diff --git a/.eggs/botocore-1.10.75-py2.7.egg/botocore/data/apigateway/2015-07-09/service-2.json b/.eggs/botocore-1.10.75-py2.7.egg/botocore/data/apigateway/2015-07-09/service-2.json
deleted file mode 100644
index cc0dc9f6..00000000
--- a/.eggs/botocore-1.10.75-py2.7.egg/botocore/data/apigateway/2015-07-09/service-2.json
+++ /dev/null
@@ -1,7026 +0,0 @@
-{
- "version":"2.0",
- "metadata":{
- "apiVersion":"2015-07-09",
- "endpointPrefix":"apigateway",
- "protocol":"rest-json",
- "serviceFullName":"Amazon API Gateway",
- "serviceId":"API Gateway",
- "signatureVersion":"v4",
- "uid":"apigateway-2015-07-09"
- },
- "operations":{
- "CreateApiKey":{
- "name":"CreateApiKey",
- "http":{
- "method":"POST",
- "requestUri":"/apikeys",
- "responseCode":201
- },
- "input":{"shape":"CreateApiKeyRequest"},
- "output":{"shape":"ApiKey"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"},
- {"shape":"LimitExceededException"},
- {"shape":"BadRequestException"},
- {"shape":"ConflictException"}
- ],
- "documentation":"Create an ApiKey resource.
"
- },
- "CreateAuthorizer":{
- "name":"CreateAuthorizer",
- "http":{
- "method":"POST",
- "requestUri":"/restapis/{restapi_id}/authorizers",
- "responseCode":201
- },
- "input":{"shape":"CreateAuthorizerRequest"},
- "output":{"shape":"Authorizer"},
- "errors":[
- {"shape":"BadRequestException"},
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"LimitExceededException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Adds a new Authorizer resource to an existing RestApi resource.
"
- },
- "CreateBasePathMapping":{
- "name":"CreateBasePathMapping",
- "http":{
- "method":"POST",
- "requestUri":"/domainnames/{domain_name}/basepathmappings",
- "responseCode":201
- },
- "input":{"shape":"CreateBasePathMappingRequest"},
- "output":{"shape":"BasePathMapping"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"ConflictException"},
- {"shape":"BadRequestException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Creates a new BasePathMapping resource.
"
- },
- "CreateDeployment":{
- "name":"CreateDeployment",
- "http":{
- "method":"POST",
- "requestUri":"/restapis/{restapi_id}/deployments",
- "responseCode":201
- },
- "input":{"shape":"CreateDeploymentRequest"},
- "output":{"shape":"Deployment"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"BadRequestException"},
- {"shape":"NotFoundException"},
- {"shape":"ConflictException"},
- {"shape":"LimitExceededException"},
- {"shape":"TooManyRequestsException"},
- {"shape":"ServiceUnavailableException"}
- ],
- "documentation":"Creates a Deployment resource, which makes a specified RestApi callable over the internet.
"
- },
- "CreateDocumentationPart":{
- "name":"CreateDocumentationPart",
- "http":{
- "method":"POST",
- "requestUri":"/restapis/{restapi_id}/documentation/parts",
- "responseCode":201
- },
- "input":{"shape":"CreateDocumentationPartRequest"},
- "output":{"shape":"DocumentationPart"},
- "errors":[
- {"shape":"BadRequestException"},
- {"shape":"ConflictException"},
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"LimitExceededException"},
- {"shape":"TooManyRequestsException"}
- ]
- },
- "CreateDocumentationVersion":{
- "name":"CreateDocumentationVersion",
- "http":{
- "method":"POST",
- "requestUri":"/restapis/{restapi_id}/documentation/versions",
- "responseCode":201
- },
- "input":{"shape":"CreateDocumentationVersionRequest"},
- "output":{"shape":"DocumentationVersion"},
- "errors":[
- {"shape":"BadRequestException"},
- {"shape":"ConflictException"},
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"LimitExceededException"},
- {"shape":"TooManyRequestsException"}
- ]
- },
- "CreateDomainName":{
- "name":"CreateDomainName",
- "http":{
- "method":"POST",
- "requestUri":"/domainnames",
- "responseCode":201
- },
- "input":{"shape":"CreateDomainNameRequest"},
- "output":{"shape":"DomainName"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"BadRequestException"},
- {"shape":"ConflictException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Creates a new domain name.
"
- },
- "CreateModel":{
- "name":"CreateModel",
- "http":{
- "method":"POST",
- "requestUri":"/restapis/{restapi_id}/models",
- "responseCode":201
- },
- "input":{"shape":"CreateModelRequest"},
- "output":{"shape":"Model"},
- "errors":[
- {"shape":"BadRequestException"},
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"ConflictException"},
- {"shape":"LimitExceededException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Adds a new Model resource to an existing RestApi resource.
"
- },
- "CreateRequestValidator":{
- "name":"CreateRequestValidator",
- "http":{
- "method":"POST",
- "requestUri":"/restapis/{restapi_id}/requestvalidators",
- "responseCode":201
- },
- "input":{"shape":"CreateRequestValidatorRequest"},
- "output":{"shape":"RequestValidator"},
- "errors":[
- {"shape":"BadRequestException"},
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"LimitExceededException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Creates a ReqeustValidator of a given RestApi.
"
- },
- "CreateResource":{
- "name":"CreateResource",
- "http":{
- "method":"POST",
- "requestUri":"/restapis/{restapi_id}/resources/{parent_id}",
- "responseCode":201
- },
- "input":{"shape":"CreateResourceRequest"},
- "output":{"shape":"Resource"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"ConflictException"},
- {"shape":"LimitExceededException"},
- {"shape":"BadRequestException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Creates a Resource resource.
"
- },
- "CreateRestApi":{
- "name":"CreateRestApi",
- "http":{
- "method":"POST",
- "requestUri":"/restapis",
- "responseCode":201
- },
- "input":{"shape":"CreateRestApiRequest"},
- "output":{"shape":"RestApi"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"LimitExceededException"},
- {"shape":"BadRequestException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Creates a new RestApi resource.
"
- },
- "CreateStage":{
- "name":"CreateStage",
- "http":{
- "method":"POST",
- "requestUri":"/restapis/{restapi_id}/stages",
- "responseCode":201
- },
- "input":{"shape":"CreateStageRequest"},
- "output":{"shape":"Stage"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"BadRequestException"},
- {"shape":"NotFoundException"},
- {"shape":"ConflictException"},
- {"shape":"LimitExceededException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Creates a new Stage resource that references a pre-existing Deployment for the API.
"
- },
- "CreateUsagePlan":{
- "name":"CreateUsagePlan",
- "http":{
- "method":"POST",
- "requestUri":"/usageplans",
- "responseCode":201
- },
- "input":{"shape":"CreateUsagePlanRequest"},
- "output":{"shape":"UsagePlan"},
- "errors":[
- {"shape":"BadRequestException"},
- {"shape":"UnauthorizedException"},
- {"shape":"TooManyRequestsException"},
- {"shape":"LimitExceededException"},
- {"shape":"ConflictException"},
- {"shape":"NotFoundException"}
- ],
- "documentation":"Creates a usage plan with the throttle and quota limits, as well as the associated API stages, specified in the payload.
"
- },
- "CreateUsagePlanKey":{
- "name":"CreateUsagePlanKey",
- "http":{
- "method":"POST",
- "requestUri":"/usageplans/{usageplanId}/keys",
- "responseCode":201
- },
- "input":{"shape":"CreateUsagePlanKeyRequest"},
- "output":{"shape":"UsagePlanKey"},
- "errors":[
- {"shape":"BadRequestException"},
- {"shape":"ConflictException"},
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Creates a usage plan key for adding an existing API key to a usage plan.
"
- },
- "CreateVpcLink":{
- "name":"CreateVpcLink",
- "http":{
- "method":"POST",
- "requestUri":"/vpclinks",
- "responseCode":202
- },
- "input":{"shape":"CreateVpcLinkRequest"},
- "output":{"shape":"VpcLink"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"BadRequestException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Creates a VPC link, under the caller's account in a selected region, in an asynchronous operation that typically takes 2-4 minutes to complete and become operational. The caller must have permissions to create and update VPC Endpoint services.
"
- },
- "DeleteApiKey":{
- "name":"DeleteApiKey",
- "http":{
- "method":"DELETE",
- "requestUri":"/apikeys/{api_Key}",
- "responseCode":202
- },
- "input":{"shape":"DeleteApiKeyRequest"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Deletes the ApiKey resource.
"
- },
- "DeleteAuthorizer":{
- "name":"DeleteAuthorizer",
- "http":{
- "method":"DELETE",
- "requestUri":"/restapis/{restapi_id}/authorizers/{authorizer_id}",
- "responseCode":202
- },
- "input":{"shape":"DeleteAuthorizerRequest"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"},
- {"shape":"BadRequestException"},
- {"shape":"ConflictException"}
- ],
- "documentation":"Deletes an existing Authorizer resource.
"
- },
- "DeleteBasePathMapping":{
- "name":"DeleteBasePathMapping",
- "http":{
- "method":"DELETE",
- "requestUri":"/domainnames/{domain_name}/basepathmappings/{base_path}",
- "responseCode":202
- },
- "input":{"shape":"DeleteBasePathMappingRequest"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"ConflictException"},
- {"shape":"BadRequestException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Deletes the BasePathMapping resource.
"
- },
- "DeleteClientCertificate":{
- "name":"DeleteClientCertificate",
- "http":{
- "method":"DELETE",
- "requestUri":"/clientcertificates/{clientcertificate_id}",
- "responseCode":202
- },
- "input":{"shape":"DeleteClientCertificateRequest"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"TooManyRequestsException"},
- {"shape":"BadRequestException"},
- {"shape":"NotFoundException"}
- ],
- "documentation":"Deletes the ClientCertificate resource.
"
- },
- "DeleteDeployment":{
- "name":"DeleteDeployment",
- "http":{
- "method":"DELETE",
- "requestUri":"/restapis/{restapi_id}/deployments/{deployment_id}",
- "responseCode":202
- },
- "input":{"shape":"DeleteDeploymentRequest"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"BadRequestException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Deletes a Deployment resource. Deleting a deployment will only succeed if there are no Stage resources associated with it.
"
- },
- "DeleteDocumentationPart":{
- "name":"DeleteDocumentationPart",
- "http":{
- "method":"DELETE",
- "requestUri":"/restapis/{restapi_id}/documentation/parts/{part_id}",
- "responseCode":202
- },
- "input":{"shape":"DeleteDocumentationPartRequest"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"},
- {"shape":"ConflictException"},
- {"shape":"BadRequestException"}
- ]
- },
- "DeleteDocumentationVersion":{
- "name":"DeleteDocumentationVersion",
- "http":{
- "method":"DELETE",
- "requestUri":"/restapis/{restapi_id}/documentation/versions/{doc_version}",
- "responseCode":202
- },
- "input":{"shape":"DeleteDocumentationVersionRequest"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"BadRequestException"},
- {"shape":"ConflictException"},
- {"shape":"TooManyRequestsException"}
- ]
- },
- "DeleteDomainName":{
- "name":"DeleteDomainName",
- "http":{
- "method":"DELETE",
- "requestUri":"/domainnames/{domain_name}",
- "responseCode":202
- },
- "input":{"shape":"DeleteDomainNameRequest"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Deletes the DomainName resource.
"
- },
- "DeleteGatewayResponse":{
- "name":"DeleteGatewayResponse",
- "http":{
- "method":"DELETE",
- "requestUri":"/restapis/{restapi_id}/gatewayresponses/{response_type}",
- "responseCode":202
- },
- "input":{"shape":"DeleteGatewayResponseRequest"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"},
- {"shape":"BadRequestException"},
- {"shape":"ConflictException"}
- ],
- "documentation":"Clears any customization of a GatewayResponse of a specified response type on the given RestApi and resets it with the default settings.
"
- },
- "DeleteIntegration":{
- "name":"DeleteIntegration",
- "http":{
- "method":"DELETE",
- "requestUri":"/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration",
- "responseCode":204
- },
- "input":{"shape":"DeleteIntegrationRequest"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"},
- {"shape":"ConflictException"}
- ],
- "documentation":"Represents a delete integration.
"
- },
- "DeleteIntegrationResponse":{
- "name":"DeleteIntegrationResponse",
- "http":{
- "method":"DELETE",
- "requestUri":"/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration/responses/{status_code}",
- "responseCode":204
- },
- "input":{"shape":"DeleteIntegrationResponseRequest"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"},
- {"shape":"BadRequestException"},
- {"shape":"ConflictException"}
- ],
- "documentation":"Represents a delete integration response.
"
- },
- "DeleteMethod":{
- "name":"DeleteMethod",
- "http":{
- "method":"DELETE",
- "requestUri":"/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}",
- "responseCode":204
- },
- "input":{"shape":"DeleteMethodRequest"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"},
- {"shape":"ConflictException"}
- ],
- "documentation":"Deletes an existing Method resource.
"
- },
- "DeleteMethodResponse":{
- "name":"DeleteMethodResponse",
- "http":{
- "method":"DELETE",
- "requestUri":"/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/responses/{status_code}",
- "responseCode":204
- },
- "input":{"shape":"DeleteMethodResponseRequest"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"},
- {"shape":"BadRequestException"},
- {"shape":"ConflictException"}
- ],
- "documentation":"Deletes an existing MethodResponse resource.
"
- },
- "DeleteModel":{
- "name":"DeleteModel",
- "http":{
- "method":"DELETE",
- "requestUri":"/restapis/{restapi_id}/models/{model_name}",
- "responseCode":202
- },
- "input":{"shape":"DeleteModelRequest"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"},
- {"shape":"BadRequestException"},
- {"shape":"ConflictException"}
- ],
- "documentation":"Deletes a model.
"
- },
- "DeleteRequestValidator":{
- "name":"DeleteRequestValidator",
- "http":{
- "method":"DELETE",
- "requestUri":"/restapis/{restapi_id}/requestvalidators/{requestvalidator_id}",
- "responseCode":202
- },
- "input":{"shape":"DeleteRequestValidatorRequest"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"},
- {"shape":"BadRequestException"},
- {"shape":"ConflictException"}
- ],
- "documentation":"Deletes a RequestValidator of a given RestApi.
"
- },
- "DeleteResource":{
- "name":"DeleteResource",
- "http":{
- "method":"DELETE",
- "requestUri":"/restapis/{restapi_id}/resources/{resource_id}",
- "responseCode":202
- },
- "input":{"shape":"DeleteResourceRequest"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"BadRequestException"},
- {"shape":"ConflictException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Deletes a Resource resource.
"
- },
- "DeleteRestApi":{
- "name":"DeleteRestApi",
- "http":{
- "method":"DELETE",
- "requestUri":"/restapis/{restapi_id}",
- "responseCode":202
- },
- "input":{"shape":"DeleteRestApiRequest"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"},
- {"shape":"BadRequestException"}
- ],
- "documentation":"Deletes the specified API.
"
- },
- "DeleteStage":{
- "name":"DeleteStage",
- "http":{
- "method":"DELETE",
- "requestUri":"/restapis/{restapi_id}/stages/{stage_name}",
- "responseCode":202
- },
- "input":{"shape":"DeleteStageRequest"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"},
- {"shape":"BadRequestException"}
- ],
- "documentation":"Deletes a Stage resource.
"
- },
- "DeleteUsagePlan":{
- "name":"DeleteUsagePlan",
- "http":{
- "method":"DELETE",
- "requestUri":"/usageplans/{usageplanId}",
- "responseCode":202
- },
- "input":{"shape":"DeleteUsagePlanRequest"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"TooManyRequestsException"},
- {"shape":"BadRequestException"},
- {"shape":"NotFoundException"}
- ],
- "documentation":"Deletes a usage plan of a given plan Id.
"
- },
- "DeleteUsagePlanKey":{
- "name":"DeleteUsagePlanKey",
- "http":{
- "method":"DELETE",
- "requestUri":"/usageplans/{usageplanId}/keys/{keyId}",
- "responseCode":202
- },
- "input":{"shape":"DeleteUsagePlanKeyRequest"},
- "errors":[
- {"shape":"BadRequestException"},
- {"shape":"ConflictException"},
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Deletes a usage plan key and remove the underlying API key from the associated usage plan.
"
- },
- "DeleteVpcLink":{
- "name":"DeleteVpcLink",
- "http":{
- "method":"DELETE",
- "requestUri":"/vpclinks/{vpclink_id}",
- "responseCode":202
- },
- "input":{"shape":"DeleteVpcLinkRequest"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"},
- {"shape":"BadRequestException"}
- ],
- "documentation":"Deletes an existing VpcLink of a specified identifier.
"
- },
- "FlushStageAuthorizersCache":{
- "name":"FlushStageAuthorizersCache",
- "http":{
- "method":"DELETE",
- "requestUri":"/restapis/{restapi_id}/stages/{stage_name}/cache/authorizers",
- "responseCode":202
- },
- "input":{"shape":"FlushStageAuthorizersCacheRequest"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"BadRequestException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Flushes all authorizer cache entries on a stage.
"
- },
- "FlushStageCache":{
- "name":"FlushStageCache",
- "http":{
- "method":"DELETE",
- "requestUri":"/restapis/{restapi_id}/stages/{stage_name}/cache/data",
- "responseCode":202
- },
- "input":{"shape":"FlushStageCacheRequest"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"BadRequestException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Flushes a stage's cache.
"
- },
- "GenerateClientCertificate":{
- "name":"GenerateClientCertificate",
- "http":{
- "method":"POST",
- "requestUri":"/clientcertificates",
- "responseCode":201
- },
- "input":{"shape":"GenerateClientCertificateRequest"},
- "output":{"shape":"ClientCertificate"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"TooManyRequestsException"},
- {"shape":"LimitExceededException"}
- ],
- "documentation":"Generates a ClientCertificate resource.
"
- },
- "GetAccount":{
- "name":"GetAccount",
- "http":{
- "method":"GET",
- "requestUri":"/account"
- },
- "input":{"shape":"GetAccountRequest"},
- "output":{"shape":"Account"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Gets information about the current Account resource.
"
- },
- "GetApiKey":{
- "name":"GetApiKey",
- "http":{
- "method":"GET",
- "requestUri":"/apikeys/{api_Key}"
- },
- "input":{"shape":"GetApiKeyRequest"},
- "output":{"shape":"ApiKey"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Gets information about the current ApiKey resource.
"
- },
- "GetApiKeys":{
- "name":"GetApiKeys",
- "http":{
- "method":"GET",
- "requestUri":"/apikeys"
- },
- "input":{"shape":"GetApiKeysRequest"},
- "output":{"shape":"ApiKeys"},
- "errors":[
- {"shape":"BadRequestException"},
- {"shape":"UnauthorizedException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Gets information about the current ApiKeys resource.
"
- },
- "GetAuthorizer":{
- "name":"GetAuthorizer",
- "http":{
- "method":"GET",
- "requestUri":"/restapis/{restapi_id}/authorizers/{authorizer_id}"
- },
- "input":{"shape":"GetAuthorizerRequest"},
- "output":{"shape":"Authorizer"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Describe an existing Authorizer resource.
"
- },
- "GetAuthorizers":{
- "name":"GetAuthorizers",
- "http":{
- "method":"GET",
- "requestUri":"/restapis/{restapi_id}/authorizers"
- },
- "input":{"shape":"GetAuthorizersRequest"},
- "output":{"shape":"Authorizers"},
- "errors":[
- {"shape":"BadRequestException"},
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Describe an existing Authorizers resource.
"
- },
- "GetBasePathMapping":{
- "name":"GetBasePathMapping",
- "http":{
- "method":"GET",
- "requestUri":"/domainnames/{domain_name}/basepathmappings/{base_path}"
- },
- "input":{"shape":"GetBasePathMappingRequest"},
- "output":{"shape":"BasePathMapping"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Describe a BasePathMapping resource.
"
- },
- "GetBasePathMappings":{
- "name":"GetBasePathMappings",
- "http":{
- "method":"GET",
- "requestUri":"/domainnames/{domain_name}/basepathmappings"
- },
- "input":{"shape":"GetBasePathMappingsRequest"},
- "output":{"shape":"BasePathMappings"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Represents a collection of BasePathMapping resources.
"
- },
- "GetClientCertificate":{
- "name":"GetClientCertificate",
- "http":{
- "method":"GET",
- "requestUri":"/clientcertificates/{clientcertificate_id}"
- },
- "input":{"shape":"GetClientCertificateRequest"},
- "output":{"shape":"ClientCertificate"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Gets information about the current ClientCertificate resource.
"
- },
- "GetClientCertificates":{
- "name":"GetClientCertificates",
- "http":{
- "method":"GET",
- "requestUri":"/clientcertificates"
- },
- "input":{"shape":"GetClientCertificatesRequest"},
- "output":{"shape":"ClientCertificates"},
- "errors":[
- {"shape":"BadRequestException"},
- {"shape":"UnauthorizedException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Gets a collection of ClientCertificate resources.
"
- },
- "GetDeployment":{
- "name":"GetDeployment",
- "http":{
- "method":"GET",
- "requestUri":"/restapis/{restapi_id}/deployments/{deployment_id}"
- },
- "input":{"shape":"GetDeploymentRequest"},
- "output":{"shape":"Deployment"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"},
- {"shape":"ServiceUnavailableException"}
- ],
- "documentation":"Gets information about a Deployment resource.
"
- },
- "GetDeployments":{
- "name":"GetDeployments",
- "http":{
- "method":"GET",
- "requestUri":"/restapis/{restapi_id}/deployments"
- },
- "input":{"shape":"GetDeploymentsRequest"},
- "output":{"shape":"Deployments"},
- "errors":[
- {"shape":"BadRequestException"},
- {"shape":"UnauthorizedException"},
- {"shape":"TooManyRequestsException"},
- {"shape":"ServiceUnavailableException"}
- ],
- "documentation":"Gets information about a Deployments collection.
"
- },
- "GetDocumentationPart":{
- "name":"GetDocumentationPart",
- "http":{
- "method":"GET",
- "requestUri":"/restapis/{restapi_id}/documentation/parts/{part_id}"
- },
- "input":{"shape":"GetDocumentationPartRequest"},
- "output":{"shape":"DocumentationPart"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"}
- ]
- },
- "GetDocumentationParts":{
- "name":"GetDocumentationParts",
- "http":{
- "method":"GET",
- "requestUri":"/restapis/{restapi_id}/documentation/parts"
- },
- "input":{"shape":"GetDocumentationPartsRequest"},
- "output":{"shape":"DocumentationParts"},
- "errors":[
- {"shape":"BadRequestException"},
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"}
- ]
- },
- "GetDocumentationVersion":{
- "name":"GetDocumentationVersion",
- "http":{
- "method":"GET",
- "requestUri":"/restapis/{restapi_id}/documentation/versions/{doc_version}"
- },
- "input":{"shape":"GetDocumentationVersionRequest"},
- "output":{"shape":"DocumentationVersion"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"}
- ]
- },
- "GetDocumentationVersions":{
- "name":"GetDocumentationVersions",
- "http":{
- "method":"GET",
- "requestUri":"/restapis/{restapi_id}/documentation/versions"
- },
- "input":{"shape":"GetDocumentationVersionsRequest"},
- "output":{"shape":"DocumentationVersions"},
- "errors":[
- {"shape":"BadRequestException"},
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"}
- ]
- },
- "GetDomainName":{
- "name":"GetDomainName",
- "http":{
- "method":"GET",
- "requestUri":"/domainnames/{domain_name}"
- },
- "input":{"shape":"GetDomainNameRequest"},
- "output":{"shape":"DomainName"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"ServiceUnavailableException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Represents a domain name that is contained in a simpler, more intuitive URL that can be called.
"
- },
- "GetDomainNames":{
- "name":"GetDomainNames",
- "http":{
- "method":"GET",
- "requestUri":"/domainnames"
- },
- "input":{"shape":"GetDomainNamesRequest"},
- "output":{"shape":"DomainNames"},
- "errors":[
- {"shape":"BadRequestException"},
- {"shape":"UnauthorizedException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Represents a collection of DomainName resources.
"
- },
- "GetExport":{
- "name":"GetExport",
- "http":{
- "method":"GET",
- "requestUri":"/restapis/{restapi_id}/stages/{stage_name}/exports/{export_type}",
- "responseCode":200
- },
- "input":{"shape":"GetExportRequest"},
- "output":{"shape":"ExportResponse"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"BadRequestException"},
- {"shape":"ConflictException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Exports a deployed version of a RestApi in a specified format.
"
- },
- "GetGatewayResponse":{
- "name":"GetGatewayResponse",
- "http":{
- "method":"GET",
- "requestUri":"/restapis/{restapi_id}/gatewayresponses/{response_type}"
- },
- "input":{"shape":"GetGatewayResponseRequest"},
- "output":{"shape":"GatewayResponse"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Gets a GatewayResponse of a specified response type on the given RestApi.
"
- },
- "GetGatewayResponses":{
- "name":"GetGatewayResponses",
- "http":{
- "method":"GET",
- "requestUri":"/restapis/{restapi_id}/gatewayresponses"
- },
- "input":{"shape":"GetGatewayResponsesRequest"},
- "output":{"shape":"GatewayResponses"},
- "errors":[
- {"shape":"BadRequestException"},
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Gets the GatewayResponses collection on the given RestApi. If an API developer has not added any definitions for gateway responses, the result will be the API Gateway-generated default GatewayResponses collection for the supported response types.
"
- },
- "GetIntegration":{
- "name":"GetIntegration",
- "http":{
- "method":"GET",
- "requestUri":"/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration"
- },
- "input":{"shape":"GetIntegrationRequest"},
- "output":{"shape":"Integration"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Get the integration settings.
"
- },
- "GetIntegrationResponse":{
- "name":"GetIntegrationResponse",
- "http":{
- "method":"GET",
- "requestUri":"/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration/responses/{status_code}"
- },
- "input":{"shape":"GetIntegrationResponseRequest"},
- "output":{"shape":"IntegrationResponse"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Represents a get integration response.
"
- },
- "GetMethod":{
- "name":"GetMethod",
- "http":{
- "method":"GET",
- "requestUri":"/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}"
- },
- "input":{"shape":"GetMethodRequest"},
- "output":{"shape":"Method"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Describe an existing Method resource.
"
- },
- "GetMethodResponse":{
- "name":"GetMethodResponse",
- "http":{
- "method":"GET",
- "requestUri":"/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/responses/{status_code}"
- },
- "input":{"shape":"GetMethodResponseRequest"},
- "output":{"shape":"MethodResponse"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Describes a MethodResponse resource.
"
- },
- "GetModel":{
- "name":"GetModel",
- "http":{
- "method":"GET",
- "requestUri":"/restapis/{restapi_id}/models/{model_name}"
- },
- "input":{"shape":"GetModelRequest"},
- "output":{"shape":"Model"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Describes an existing model defined for a RestApi resource.
"
- },
- "GetModelTemplate":{
- "name":"GetModelTemplate",
- "http":{
- "method":"GET",
- "requestUri":"/restapis/{restapi_id}/models/{model_name}/default_template"
- },
- "input":{"shape":"GetModelTemplateRequest"},
- "output":{"shape":"Template"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"BadRequestException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Generates a sample mapping template that can be used to transform a payload into the structure of a model.
"
- },
- "GetModels":{
- "name":"GetModels",
- "http":{
- "method":"GET",
- "requestUri":"/restapis/{restapi_id}/models"
- },
- "input":{"shape":"GetModelsRequest"},
- "output":{"shape":"Models"},
- "errors":[
- {"shape":"BadRequestException"},
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Describes existing Models defined for a RestApi resource.
"
- },
- "GetRequestValidator":{
- "name":"GetRequestValidator",
- "http":{
- "method":"GET",
- "requestUri":"/restapis/{restapi_id}/requestvalidators/{requestvalidator_id}"
- },
- "input":{"shape":"GetRequestValidatorRequest"},
- "output":{"shape":"RequestValidator"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Gets a RequestValidator of a given RestApi.
"
- },
- "GetRequestValidators":{
- "name":"GetRequestValidators",
- "http":{
- "method":"GET",
- "requestUri":"/restapis/{restapi_id}/requestvalidators"
- },
- "input":{"shape":"GetRequestValidatorsRequest"},
- "output":{"shape":"RequestValidators"},
- "errors":[
- {"shape":"BadRequestException"},
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Gets the RequestValidators collection of a given RestApi.
"
- },
- "GetResource":{
- "name":"GetResource",
- "http":{
- "method":"GET",
- "requestUri":"/restapis/{restapi_id}/resources/{resource_id}"
- },
- "input":{"shape":"GetResourceRequest"},
- "output":{"shape":"Resource"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Lists information about a resource.
"
- },
- "GetResources":{
- "name":"GetResources",
- "http":{
- "method":"GET",
- "requestUri":"/restapis/{restapi_id}/resources"
- },
- "input":{"shape":"GetResourcesRequest"},
- "output":{"shape":"Resources"},
- "errors":[
- {"shape":"BadRequestException"},
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Lists information about a collection of Resource resources.
"
- },
- "GetRestApi":{
- "name":"GetRestApi",
- "http":{
- "method":"GET",
- "requestUri":"/restapis/{restapi_id}"
- },
- "input":{"shape":"GetRestApiRequest"},
- "output":{"shape":"RestApi"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Lists the RestApi resource in the collection.
"
- },
- "GetRestApis":{
- "name":"GetRestApis",
- "http":{
- "method":"GET",
- "requestUri":"/restapis"
- },
- "input":{"shape":"GetRestApisRequest"},
- "output":{"shape":"RestApis"},
- "errors":[
- {"shape":"BadRequestException"},
- {"shape":"UnauthorizedException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Lists the RestApis resources for your collection.
"
- },
- "GetSdk":{
- "name":"GetSdk",
- "http":{
- "method":"GET",
- "requestUri":"/restapis/{restapi_id}/stages/{stage_name}/sdks/{sdk_type}",
- "responseCode":200
- },
- "input":{"shape":"GetSdkRequest"},
- "output":{"shape":"SdkResponse"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"BadRequestException"},
- {"shape":"ConflictException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Generates a client SDK for a RestApi and Stage.
"
- },
- "GetSdkType":{
- "name":"GetSdkType",
- "http":{
- "method":"GET",
- "requestUri":"/sdktypes/{sdktype_id}"
- },
- "input":{"shape":"GetSdkTypeRequest"},
- "output":{"shape":"SdkType"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"}
- ]
- },
- "GetSdkTypes":{
- "name":"GetSdkTypes",
- "http":{
- "method":"GET",
- "requestUri":"/sdktypes"
- },
- "input":{"shape":"GetSdkTypesRequest"},
- "output":{"shape":"SdkTypes"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"TooManyRequestsException"}
- ]
- },
- "GetStage":{
- "name":"GetStage",
- "http":{
- "method":"GET",
- "requestUri":"/restapis/{restapi_id}/stages/{stage_name}"
- },
- "input":{"shape":"GetStageRequest"},
- "output":{"shape":"Stage"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Gets information about a Stage resource.
"
- },
- "GetStages":{
- "name":"GetStages",
- "http":{
- "method":"GET",
- "requestUri":"/restapis/{restapi_id}/stages"
- },
- "input":{"shape":"GetStagesRequest"},
- "output":{"shape":"Stages"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Gets information about one or more Stage resources.
"
- },
- "GetTags":{
- "name":"GetTags",
- "http":{
- "method":"GET",
- "requestUri":"/tags/{resource_arn}"
- },
- "input":{"shape":"GetTagsRequest"},
- "output":{"shape":"Tags"},
- "errors":[
- {"shape":"BadRequestException"},
- {"shape":"UnauthorizedException"},
- {"shape":"TooManyRequestsException"},
- {"shape":"NotFoundException"},
- {"shape":"LimitExceededException"}
- ],
- "documentation":"Gets the Tags collection for a given resource.
"
- },
- "GetUsage":{
- "name":"GetUsage",
- "http":{
- "method":"GET",
- "requestUri":"/usageplans/{usageplanId}/usage"
- },
- "input":{"shape":"GetUsageRequest"},
- "output":{"shape":"Usage"},
- "errors":[
- {"shape":"BadRequestException"},
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Gets the usage data of a usage plan in a specified time interval.
"
- },
- "GetUsagePlan":{
- "name":"GetUsagePlan",
- "http":{
- "method":"GET",
- "requestUri":"/usageplans/{usageplanId}"
- },
- "input":{"shape":"GetUsagePlanRequest"},
- "output":{"shape":"UsagePlan"},
- "errors":[
- {"shape":"BadRequestException"},
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Gets a usage plan of a given plan identifier.
"
- },
- "GetUsagePlanKey":{
- "name":"GetUsagePlanKey",
- "http":{
- "method":"GET",
- "requestUri":"/usageplans/{usageplanId}/keys/{keyId}",
- "responseCode":200
- },
- "input":{"shape":"GetUsagePlanKeyRequest"},
- "output":{"shape":"UsagePlanKey"},
- "errors":[
- {"shape":"BadRequestException"},
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Gets a usage plan key of a given key identifier.
"
- },
- "GetUsagePlanKeys":{
- "name":"GetUsagePlanKeys",
- "http":{
- "method":"GET",
- "requestUri":"/usageplans/{usageplanId}/keys"
- },
- "input":{"shape":"GetUsagePlanKeysRequest"},
- "output":{"shape":"UsagePlanKeys"},
- "errors":[
- {"shape":"BadRequestException"},
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Gets all the usage plan keys representing the API keys added to a specified usage plan.
"
- },
- "GetUsagePlans":{
- "name":"GetUsagePlans",
- "http":{
- "method":"GET",
- "requestUri":"/usageplans"
- },
- "input":{"shape":"GetUsagePlansRequest"},
- "output":{"shape":"UsagePlans"},
- "errors":[
- {"shape":"BadRequestException"},
- {"shape":"UnauthorizedException"},
- {"shape":"TooManyRequestsException"},
- {"shape":"ConflictException"},
- {"shape":"NotFoundException"}
- ],
- "documentation":"Gets all the usage plans of the caller's account.
"
- },
- "GetVpcLink":{
- "name":"GetVpcLink",
- "http":{
- "method":"GET",
- "requestUri":"/vpclinks/{vpclink_id}"
- },
- "input":{"shape":"GetVpcLinkRequest"},
- "output":{"shape":"VpcLink"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Gets a specified VPC link under the caller's account in a region.
"
- },
- "GetVpcLinks":{
- "name":"GetVpcLinks",
- "http":{
- "method":"GET",
- "requestUri":"/vpclinks"
- },
- "input":{"shape":"GetVpcLinksRequest"},
- "output":{"shape":"VpcLinks"},
- "errors":[
- {"shape":"BadRequestException"},
- {"shape":"UnauthorizedException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Gets the VpcLinks collection under the caller's account in a selected region.
"
- },
- "ImportApiKeys":{
- "name":"ImportApiKeys",
- "http":{
- "method":"POST",
- "requestUri":"/apikeys?mode=import",
- "responseCode":201
- },
- "input":{"shape":"ImportApiKeysRequest"},
- "output":{"shape":"ApiKeyIds"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"},
- {"shape":"LimitExceededException"},
- {"shape":"BadRequestException"},
- {"shape":"ConflictException"}
- ],
- "documentation":"Import API keys from an external source, such as a CSV-formatted file.
"
- },
- "ImportDocumentationParts":{
- "name":"ImportDocumentationParts",
- "http":{
- "method":"PUT",
- "requestUri":"/restapis/{restapi_id}/documentation/parts"
- },
- "input":{"shape":"ImportDocumentationPartsRequest"},
- "output":{"shape":"DocumentationPartIds"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"BadRequestException"},
- {"shape":"LimitExceededException"},
- {"shape":"TooManyRequestsException"}
- ]
- },
- "ImportRestApi":{
- "name":"ImportRestApi",
- "http":{
- "method":"POST",
- "requestUri":"/restapis?mode=import",
- "responseCode":201
- },
- "input":{"shape":"ImportRestApiRequest"},
- "output":{"shape":"RestApi"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"LimitExceededException"},
- {"shape":"BadRequestException"},
- {"shape":"TooManyRequestsException"},
- {"shape":"ConflictException"}
- ],
- "documentation":"A feature of the API Gateway control service for creating a new API from an external API definition file.
"
- },
- "PutGatewayResponse":{
- "name":"PutGatewayResponse",
- "http":{
- "method":"PUT",
- "requestUri":"/restapis/{restapi_id}/gatewayresponses/{response_type}",
- "responseCode":201
- },
- "input":{"shape":"PutGatewayResponseRequest"},
- "output":{"shape":"GatewayResponse"},
- "errors":[
- {"shape":"BadRequestException"},
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"LimitExceededException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Creates a customization of a GatewayResponse of a specified response type and status code on the given RestApi.
"
- },
- "PutIntegration":{
- "name":"PutIntegration",
- "http":{
- "method":"PUT",
- "requestUri":"/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration",
- "responseCode":201
- },
- "input":{"shape":"PutIntegrationRequest"},
- "output":{"shape":"Integration"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"BadRequestException"},
- {"shape":"ConflictException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Sets up a method's integration.
"
- },
- "PutIntegrationResponse":{
- "name":"PutIntegrationResponse",
- "http":{
- "method":"PUT",
- "requestUri":"/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration/responses/{status_code}",
- "responseCode":201
- },
- "input":{"shape":"PutIntegrationResponseRequest"},
- "output":{"shape":"IntegrationResponse"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"LimitExceededException"},
- {"shape":"BadRequestException"},
- {"shape":"TooManyRequestsException"},
- {"shape":"ConflictException"}
- ],
- "documentation":"Represents a put integration.
"
- },
- "PutMethod":{
- "name":"PutMethod",
- "http":{
- "method":"PUT",
- "requestUri":"/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}",
- "responseCode":201
- },
- "input":{"shape":"PutMethodRequest"},
- "output":{"shape":"Method"},
- "errors":[
- {"shape":"BadRequestException"},
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"ConflictException"},
- {"shape":"LimitExceededException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Add a method to an existing Resource resource.
"
- },
- "PutMethodResponse":{
- "name":"PutMethodResponse",
- "http":{
- "method":"PUT",
- "requestUri":"/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/responses/{status_code}",
- "responseCode":201
- },
- "input":{"shape":"PutMethodResponseRequest"},
- "output":{"shape":"MethodResponse"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"ConflictException"},
- {"shape":"LimitExceededException"},
- {"shape":"BadRequestException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Adds a MethodResponse to an existing Method resource.
"
- },
- "PutRestApi":{
- "name":"PutRestApi",
- "http":{
- "method":"PUT",
- "requestUri":"/restapis/{restapi_id}"
- },
- "input":{"shape":"PutRestApiRequest"},
- "output":{"shape":"RestApi"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"LimitExceededException"},
- {"shape":"NotFoundException"},
- {"shape":"BadRequestException"},
- {"shape":"TooManyRequestsException"},
- {"shape":"ConflictException"}
- ],
- "documentation":"A feature of the API Gateway control service for updating an existing API with an input of external API definitions. The update can take the form of merging the supplied definition into the existing API or overwriting the existing API.
"
- },
- "TagResource":{
- "name":"TagResource",
- "http":{
- "method":"PUT",
- "requestUri":"/tags/{resource_arn}",
- "responseCode":204
- },
- "input":{"shape":"TagResourceRequest"},
- "errors":[
- {"shape":"BadRequestException"},
- {"shape":"UnauthorizedException"},
- {"shape":"TooManyRequestsException"},
- {"shape":"NotFoundException"},
- {"shape":"LimitExceededException"},
- {"shape":"ConflictException"}
- ],
- "documentation":"Adds or updates a tag on a given resource.
"
- },
- "TestInvokeAuthorizer":{
- "name":"TestInvokeAuthorizer",
- "http":{
- "method":"POST",
- "requestUri":"/restapis/{restapi_id}/authorizers/{authorizer_id}"
- },
- "input":{"shape":"TestInvokeAuthorizerRequest"},
- "output":{"shape":"TestInvokeAuthorizerResponse"},
- "errors":[
- {"shape":"BadRequestException"},
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Simulate the execution of an Authorizer in your RestApi with headers, parameters, and an incoming request body.
"
- },
- "TestInvokeMethod":{
- "name":"TestInvokeMethod",
- "http":{
- "method":"POST",
- "requestUri":"/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}"
- },
- "input":{"shape":"TestInvokeMethodRequest"},
- "output":{"shape":"TestInvokeMethodResponse"},
- "errors":[
- {"shape":"BadRequestException"},
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Simulate the execution of a Method in your RestApi with headers, parameters, and an incoming request body.
"
- },
- "UntagResource":{
- "name":"UntagResource",
- "http":{
- "method":"DELETE",
- "requestUri":"/tags/{resource_arn}",
- "responseCode":204
- },
- "input":{"shape":"UntagResourceRequest"},
- "errors":[
- {"shape":"BadRequestException"},
- {"shape":"UnauthorizedException"},
- {"shape":"TooManyRequestsException"},
- {"shape":"NotFoundException"},
- {"shape":"ConflictException"}
- ],
- "documentation":"Removes a tag from a given resource.
"
- },
- "UpdateAccount":{
- "name":"UpdateAccount",
- "http":{
- "method":"PATCH",
- "requestUri":"/account"
- },
- "input":{"shape":"UpdateAccountRequest"},
- "output":{"shape":"Account"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"BadRequestException"},
- {"shape":"NotFoundException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Changes information about the current Account resource.
"
- },
- "UpdateApiKey":{
- "name":"UpdateApiKey",
- "http":{
- "method":"PATCH",
- "requestUri":"/apikeys/{api_Key}"
- },
- "input":{"shape":"UpdateApiKeyRequest"},
- "output":{"shape":"ApiKey"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"BadRequestException"},
- {"shape":"TooManyRequestsException"},
- {"shape":"ConflictException"}
- ],
- "documentation":"Changes information about an ApiKey resource.
"
- },
- "UpdateAuthorizer":{
- "name":"UpdateAuthorizer",
- "http":{
- "method":"PATCH",
- "requestUri":"/restapis/{restapi_id}/authorizers/{authorizer_id}"
- },
- "input":{"shape":"UpdateAuthorizerRequest"},
- "output":{"shape":"Authorizer"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"BadRequestException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Updates an existing Authorizer resource.
"
- },
- "UpdateBasePathMapping":{
- "name":"UpdateBasePathMapping",
- "http":{
- "method":"PATCH",
- "requestUri":"/domainnames/{domain_name}/basepathmappings/{base_path}"
- },
- "input":{"shape":"UpdateBasePathMappingRequest"},
- "output":{"shape":"BasePathMapping"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"ConflictException"},
- {"shape":"BadRequestException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Changes information about the BasePathMapping resource.
"
- },
- "UpdateClientCertificate":{
- "name":"UpdateClientCertificate",
- "http":{
- "method":"PATCH",
- "requestUri":"/clientcertificates/{clientcertificate_id}"
- },
- "input":{"shape":"UpdateClientCertificateRequest"},
- "output":{"shape":"ClientCertificate"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"TooManyRequestsException"},
- {"shape":"BadRequestException"},
- {"shape":"NotFoundException"}
- ],
- "documentation":"Changes information about an ClientCertificate resource.
"
- },
- "UpdateDeployment":{
- "name":"UpdateDeployment",
- "http":{
- "method":"PATCH",
- "requestUri":"/restapis/{restapi_id}/deployments/{deployment_id}"
- },
- "input":{"shape":"UpdateDeploymentRequest"},
- "output":{"shape":"Deployment"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"BadRequestException"},
- {"shape":"TooManyRequestsException"},
- {"shape":"ServiceUnavailableException"}
- ],
- "documentation":"Changes information about a Deployment resource.
"
- },
- "UpdateDocumentationPart":{
- "name":"UpdateDocumentationPart",
- "http":{
- "method":"PATCH",
- "requestUri":"/restapis/{restapi_id}/documentation/parts/{part_id}"
- },
- "input":{"shape":"UpdateDocumentationPartRequest"},
- "output":{"shape":"DocumentationPart"},
- "errors":[
- {"shape":"BadRequestException"},
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"ConflictException"},
- {"shape":"LimitExceededException"},
- {"shape":"TooManyRequestsException"}
- ]
- },
- "UpdateDocumentationVersion":{
- "name":"UpdateDocumentationVersion",
- "http":{
- "method":"PATCH",
- "requestUri":"/restapis/{restapi_id}/documentation/versions/{doc_version}"
- },
- "input":{"shape":"UpdateDocumentationVersionRequest"},
- "output":{"shape":"DocumentationVersion"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"ConflictException"},
- {"shape":"BadRequestException"},
- {"shape":"TooManyRequestsException"}
- ]
- },
- "UpdateDomainName":{
- "name":"UpdateDomainName",
- "http":{
- "method":"PATCH",
- "requestUri":"/domainnames/{domain_name}"
- },
- "input":{"shape":"UpdateDomainNameRequest"},
- "output":{"shape":"DomainName"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"BadRequestException"},
- {"shape":"ConflictException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Changes information about the DomainName resource.
"
- },
- "UpdateGatewayResponse":{
- "name":"UpdateGatewayResponse",
- "http":{
- "method":"PATCH",
- "requestUri":"/restapis/{restapi_id}/gatewayresponses/{response_type}"
- },
- "input":{"shape":"UpdateGatewayResponseRequest"},
- "output":{"shape":"GatewayResponse"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"BadRequestException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Updates a GatewayResponse of a specified response type on the given RestApi.
"
- },
- "UpdateIntegration":{
- "name":"UpdateIntegration",
- "http":{
- "method":"PATCH",
- "requestUri":"/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration"
- },
- "input":{"shape":"UpdateIntegrationRequest"},
- "output":{"shape":"Integration"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"BadRequestException"},
- {"shape":"TooManyRequestsException"},
- {"shape":"ConflictException"}
- ],
- "documentation":"Represents an update integration.
"
- },
- "UpdateIntegrationResponse":{
- "name":"UpdateIntegrationResponse",
- "http":{
- "method":"PATCH",
- "requestUri":"/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration/responses/{status_code}"
- },
- "input":{"shape":"UpdateIntegrationResponseRequest"},
- "output":{"shape":"IntegrationResponse"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"ConflictException"},
- {"shape":"BadRequestException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Represents an update integration response.
"
- },
- "UpdateMethod":{
- "name":"UpdateMethod",
- "http":{
- "method":"PATCH",
- "requestUri":"/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}"
- },
- "input":{"shape":"UpdateMethodRequest"},
- "output":{"shape":"Method"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"BadRequestException"},
- {"shape":"ConflictException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Updates an existing Method resource.
"
- },
- "UpdateMethodResponse":{
- "name":"UpdateMethodResponse",
- "http":{
- "method":"PATCH",
- "requestUri":"/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/responses/{status_code}",
- "responseCode":201
- },
- "input":{"shape":"UpdateMethodResponseRequest"},
- "output":{"shape":"MethodResponse"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"ConflictException"},
- {"shape":"LimitExceededException"},
- {"shape":"BadRequestException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Updates an existing MethodResponse resource.
"
- },
- "UpdateModel":{
- "name":"UpdateModel",
- "http":{
- "method":"PATCH",
- "requestUri":"/restapis/{restapi_id}/models/{model_name}"
- },
- "input":{"shape":"UpdateModelRequest"},
- "output":{"shape":"Model"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"BadRequestException"},
- {"shape":"ConflictException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Changes information about a model.
"
- },
- "UpdateRequestValidator":{
- "name":"UpdateRequestValidator",
- "http":{
- "method":"PATCH",
- "requestUri":"/restapis/{restapi_id}/requestvalidators/{requestvalidator_id}"
- },
- "input":{"shape":"UpdateRequestValidatorRequest"},
- "output":{"shape":"RequestValidator"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"BadRequestException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Updates a RequestValidator of a given RestApi.
"
- },
- "UpdateResource":{
- "name":"UpdateResource",
- "http":{
- "method":"PATCH",
- "requestUri":"/restapis/{restapi_id}/resources/{resource_id}"
- },
- "input":{"shape":"UpdateResourceRequest"},
- "output":{"shape":"Resource"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"ConflictException"},
- {"shape":"BadRequestException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Changes information about a Resource resource.
"
- },
- "UpdateRestApi":{
- "name":"UpdateRestApi",
- "http":{
- "method":"PATCH",
- "requestUri":"/restapis/{restapi_id}"
- },
- "input":{"shape":"UpdateRestApiRequest"},
- "output":{"shape":"RestApi"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"ConflictException"},
- {"shape":"BadRequestException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Changes information about the specified API.
"
- },
- "UpdateStage":{
- "name":"UpdateStage",
- "http":{
- "method":"PATCH",
- "requestUri":"/restapis/{restapi_id}/stages/{stage_name}"
- },
- "input":{"shape":"UpdateStageRequest"},
- "output":{"shape":"Stage"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"ConflictException"},
- {"shape":"BadRequestException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Changes information about a Stage resource.
"
- },
- "UpdateUsage":{
- "name":"UpdateUsage",
- "http":{
- "method":"PATCH",
- "requestUri":"/usageplans/{usageplanId}/keys/{keyId}/usage"
- },
- "input":{"shape":"UpdateUsageRequest"},
- "output":{"shape":"Usage"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"TooManyRequestsException"},
- {"shape":"BadRequestException"},
- {"shape":"NotFoundException"}
- ],
- "documentation":"Grants a temporary extension to the remaining quota of a usage plan associated with a specified API key.
"
- },
- "UpdateUsagePlan":{
- "name":"UpdateUsagePlan",
- "http":{
- "method":"PATCH",
- "requestUri":"/usageplans/{usageplanId}"
- },
- "input":{"shape":"UpdateUsagePlanRequest"},
- "output":{"shape":"UsagePlan"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"TooManyRequestsException"},
- {"shape":"BadRequestException"},
- {"shape":"NotFoundException"},
- {"shape":"ConflictException"}
- ],
- "documentation":"Updates a usage plan of a given plan Id.
"
- },
- "UpdateVpcLink":{
- "name":"UpdateVpcLink",
- "http":{
- "method":"PATCH",
- "requestUri":"/vpclinks/{vpclink_id}"
- },
- "input":{"shape":"UpdateVpcLinkRequest"},
- "output":{"shape":"VpcLink"},
- "errors":[
- {"shape":"UnauthorizedException"},
- {"shape":"NotFoundException"},
- {"shape":"BadRequestException"},
- {"shape":"ConflictException"},
- {"shape":"TooManyRequestsException"}
- ],
- "documentation":"Updates an existing VpcLink of a specified identifier.
"
- }
- },
- "shapes":{
- "AccessLogSettings":{
- "type":"structure",
- "members":{
- "format":{
- "shape":"String",
- "documentation":"A single line format of the access logs of data, as specified by selected $context variables. The format must include at least $context.requestId
.
"
- },
- "destinationArn":{
- "shape":"String",
- "documentation":"The ARN of the CloudWatch Logs log group to receive access logs.
"
- }
- },
- "documentation":"Access log settings, including the access log format and access log destination ARN.
"
- },
- "Account":{
- "type":"structure",
- "members":{
- "cloudwatchRoleArn":{
- "shape":"String",
- "documentation":"The ARN of an Amazon CloudWatch role for the current Account.
"
- },
- "throttleSettings":{
- "shape":"ThrottleSettings",
- "documentation":"Specifies the API request limits configured for the current Account.
"
- },
- "features":{
- "shape":"ListOfString",
- "documentation":"A list of features supported for the account. When usage plans are enabled, the features list will include an entry of \"UsagePlans\"
.
"
- },
- "apiKeyVersion":{
- "shape":"String",
- "documentation":"The version of the API keys used for the account.
"
- }
- },
- "documentation":"Represents an AWS account that is associated with API Gateway.
"
- },
- "ApiKey":{
- "type":"structure",
- "members":{
- "id":{
- "shape":"String",
- "documentation":"The identifier of the API Key.
"
- },
- "value":{
- "shape":"String",
- "documentation":"The value of the API Key.
"
- },
- "name":{
- "shape":"String",
- "documentation":"The name of the API Key.
"
- },
- "customerId":{
- "shape":"String",
- "documentation":"An AWS Marketplace customer identifier , when integrating with the AWS SaaS Marketplace.
"
- },
- "description":{
- "shape":"String",
- "documentation":"The description of the API Key.
"
- },
- "enabled":{
- "shape":"Boolean",
- "documentation":"Specifies whether the API Key can be used by callers.
"
- },
- "createdDate":{
- "shape":"Timestamp",
- "documentation":"The timestamp when the API Key was created.
"
- },
- "lastUpdatedDate":{
- "shape":"Timestamp",
- "documentation":"The timestamp when the API Key was last updated.
"
- },
- "stageKeys":{
- "shape":"ListOfString",
- "documentation":"A list of Stage resources that are associated with the ApiKey resource.
"
- }
- },
- "documentation":"A resource that can be distributed to callers for executing Method resources that require an API key. API keys can be mapped to any Stage on any RestApi, which indicates that the callers with the API key can make requests to that stage.
"
- },
- "ApiKeyIds":{
- "type":"structure",
- "members":{
- "ids":{
- "shape":"ListOfString",
- "documentation":"A list of all the ApiKey identifiers.
"
- },
- "warnings":{
- "shape":"ListOfString",
- "documentation":"A list of warning messages.
"
- }
- },
- "documentation":"The identifier of an ApiKey used in a UsagePlan.
"
- },
- "ApiKeySourceType":{
- "type":"string",
- "enum":[
- "HEADER",
- "AUTHORIZER"
- ]
- },
- "ApiKeys":{
- "type":"structure",
- "members":{
- "warnings":{
- "shape":"ListOfString",
- "documentation":"A list of warning messages logged during the import of API keys when the failOnWarnings
option is set to true.
"
- },
- "position":{"shape":"String"},
- "items":{
- "shape":"ListOfApiKey",
- "documentation":"The current page of elements from this collection.
",
- "locationName":"item"
- }
- },
- "documentation":"Represents a collection of API keys as represented by an ApiKeys resource.
"
- },
- "ApiKeysFormat":{
- "type":"string",
- "enum":["csv"]
- },
- "ApiStage":{
- "type":"structure",
- "members":{
- "apiId":{
- "shape":"String",
- "documentation":"API Id of the associated API stage in a usage plan.
"
- },
- "stage":{
- "shape":"String",
- "documentation":"API stage name of the associated API stage in a usage plan.
"
- },
- "throttle":{
- "shape":"MapOfApiStageThrottleSettings",
- "documentation":"Map containing method level throttling information for API stage in a usage plan.
"
- }
- },
- "documentation":"API stage name of the associated API stage in a usage plan.
"
- },
- "Authorizer":{
- "type":"structure",
- "members":{
- "id":{
- "shape":"String",
- "documentation":"The identifier for the authorizer resource.
"
- },
- "name":{
- "shape":"String",
- "documentation":"[Required] The name of the authorizer.
"
- },
- "type":{
- "shape":"AuthorizerType",
- "documentation":"The authorizer type. Valid values are TOKEN
for a Lambda function using a single authorization token submitted in a custom header, REQUEST
for a Lambda function using incoming request parameters, and COGNITO_USER_POOLS
for using an Amazon Cognito user pool.
"
- },
- "providerARNs":{
- "shape":"ListOfARNs",
- "documentation":"A list of the Amazon Cognito user pool ARNs for the COGNITO_USER_POOLS
authorizer. Each element is of this format: arn:aws:cognito-idp:{region}:{account_id}:userpool/{user_pool_id}
. For a TOKEN
or REQUEST
authorizer, this is not defined.
"
- },
- "authType":{
- "shape":"String",
- "documentation":"Optional customer-defined field, used in Swagger imports and exports without functional impact.
"
- },
- "authorizerUri":{
- "shape":"String",
- "documentation":"Specifies the authorizer's Uniform Resource Identifier (URI). For TOKEN
or REQUEST
authorizers, this must be a well-formed Lambda function URI, for example, arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:{account_id}:function:{lambda_function_name}/invocations
. In general, the URI has this form arn:aws:apigateway:{region}:lambda:path/{service_api}
, where {region}
is the same as the region hosting the Lambda function, path
indicates that the remaining substring in the URI should be treated as the path to the resource, including the initial /
. For Lambda functions, this is usually of the form /2015-03-31/functions/[FunctionARN]/invocations
.
"
- },
- "authorizerCredentials":{
- "shape":"String",
- "documentation":"Specifies the required credentials as an IAM role for API Gateway to invoke the authorizer. To specify an IAM role for API Gateway to assume, use the role's Amazon Resource Name (ARN). To use resource-based permissions on the Lambda function, specify null.
"
- },
- "identitySource":{
- "shape":"String",
- "documentation":"The identity source for which authorization is requested.
- For a
TOKEN
or COGNITO_USER_POOLS
authorizer, this is required and specifies the request header mapping expression for the custom header holding the authorization token submitted by the client. For example, if the token header name is Auth
, the header mapping expression is method.request.header.Auth
. - For the
REQUEST
authorizer, this is required when authorization caching is enabled. The value is a comma-separated string of one or more mapping expressions of the specified request parameters. For example, if an Auth
header, a Name
query string parameter are defined as identity sources, this value is method.request.header.Auth, method.request.querystring.Name
. These parameters will be used to derive the authorization caching key and to perform runtime validation of the REQUEST
authorizer by verifying all of the identity-related request parameters are present, not null and non-empty. Only when this is true does the authorizer invoke the authorizer Lambda function, otherwise, it returns a 401 Unauthorized response without calling the Lambda function. The valid value is a string of comma-separated mapping expressions of the specified request parameters. When the authorization caching is not enabled, this property is optional.
"
- },
- "identityValidationExpression":{
- "shape":"String",
- "documentation":"A validation expression for the incoming identity token. For TOKEN
authorizers, this value is a regular expression. API Gateway will match the aud
field of the incoming token from the client against the specified regular expression. It will invoke the authorizer's Lambda function when there is a match. Otherwise, it will return a 401 Unauthorized response without calling the Lambda function. The validation expression does not apply to the REQUEST
authorizer.
"
- },
- "authorizerResultTtlInSeconds":{
- "shape":"NullableInteger",
- "documentation":"The TTL in seconds of cached authorizer results. If it equals 0, authorization caching is disabled. If it is greater than 0, API Gateway will cache authorizer responses. If this field is not set, the default value is 300. The maximum value is 3600, or 1 hour.
"
- }
- },
- "documentation":"Represents an authorization layer for methods. If enabled on a method, API Gateway will activate the authorizer when a client calls the method.
"
- },
- "AuthorizerType":{
- "type":"string",
- "documentation":"The authorizer type. Valid values are TOKEN
for a Lambda function using a single authorization token submitted in a custom header, REQUEST
for a Lambda function using incoming request parameters, and COGNITO_USER_POOLS
for using an Amazon Cognito user pool.
",
- "enum":[
- "TOKEN",
- "REQUEST",
- "COGNITO_USER_POOLS"
- ]
- },
- "Authorizers":{
- "type":"structure",
- "members":{
- "position":{"shape":"String"},
- "items":{
- "shape":"ListOfAuthorizer",
- "documentation":"The current page of elements from this collection.
",
- "locationName":"item"
- }
- },
- "documentation":"Represents a collection of Authorizer resources.
"
- },
- "BadRequestException":{
- "type":"structure",
- "members":{
- "message":{"shape":"String"}
- },
- "documentation":"The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.
",
- "error":{"httpStatusCode":400},
- "exception":true
- },
- "BasePathMapping":{
- "type":"structure",
- "members":{
- "basePath":{
- "shape":"String",
- "documentation":"The base path name that callers of the API must provide as part of the URL after the domain name.
"
- },
- "restApiId":{
- "shape":"String",
- "documentation":"The string identifier of the associated RestApi.
"
- },
- "stage":{
- "shape":"String",
- "documentation":"The name of the associated stage.
"
- }
- },
- "documentation":"Represents the base path that callers of the API must provide as part of the URL after the domain name.
"
- },
- "BasePathMappings":{
- "type":"structure",
- "members":{
- "position":{"shape":"String"},
- "items":{
- "shape":"ListOfBasePathMapping",
- "documentation":"The current page of elements from this collection.
",
- "locationName":"item"
- }
- },
- "documentation":"Represents a collection of BasePathMapping resources.
"
- },
- "Blob":{"type":"blob"},
- "Boolean":{"type":"boolean"},
- "CacheClusterSize":{
- "type":"string",
- "documentation":"Returns the size of the CacheCluster.
",
- "enum":[
- "0.5",
- "1.6",
- "6.1",
- "13.5",
- "28.4",
- "58.2",
- "118",
- "237"
- ]
- },
- "CacheClusterStatus":{
- "type":"string",
- "documentation":"Returns the status of the CacheCluster.
",
- "enum":[
- "CREATE_IN_PROGRESS",
- "AVAILABLE",
- "DELETE_IN_PROGRESS",
- "NOT_AVAILABLE",
- "FLUSH_IN_PROGRESS"
- ]
- },
- "CanarySettings":{
- "type":"structure",
- "members":{
- "percentTraffic":{
- "shape":"Double",
- "documentation":"The percent (0-100) of traffic diverted to a canary deployment.
"
- },
- "deploymentId":{
- "shape":"String",
- "documentation":"The ID of the canary deployment.
"
- },
- "stageVariableOverrides":{
- "shape":"MapOfStringToString",
- "documentation":"Stage variables overridden for a canary release deployment, including new stage variables introduced in the canary. These stage variables are represented as a string-to-string map between stage variable names and their values.
"
- },
- "useStageCache":{
- "shape":"Boolean",
- "documentation":"A Boolean flag to indicate whether the canary deployment uses the stage cache or not.
"
- }
- },
- "documentation":"Configuration settings of a canary deployment.
"
- },
- "ClientCertificate":{
- "type":"structure",
- "members":{
- "clientCertificateId":{
- "shape":"String",
- "documentation":"The identifier of the client certificate.
"
- },
- "description":{
- "shape":"String",
- "documentation":"The description of the client certificate.
"
- },
- "pemEncodedCertificate":{
- "shape":"String",
- "documentation":"The PEM-encoded public key of the client certificate, which can be used to configure certificate authentication in the integration endpoint .
"
- },
- "createdDate":{
- "shape":"Timestamp",
- "documentation":"The timestamp when the client certificate was created.
"
- },
- "expirationDate":{
- "shape":"Timestamp",
- "documentation":"The timestamp when the client certificate will expire.
"
- }
- },
- "documentation":"Represents a client certificate used to configure client-side SSL authentication while sending requests to the integration endpoint.
"
- },
- "ClientCertificates":{
- "type":"structure",
- "members":{
- "position":{"shape":"String"},
- "items":{
- "shape":"ListOfClientCertificate",
- "documentation":"The current page of elements from this collection.
",
- "locationName":"item"
- }
- },
- "documentation":"Represents a collection of ClientCertificate resources.
"
- },
- "ConflictException":{
- "type":"structure",
- "members":{
- "message":{"shape":"String"}
- },
- "documentation":"The request configuration has conflicts. For details, see the accompanying error message.
",
- "error":{"httpStatusCode":409},
- "exception":true
- },
- "ConnectionType":{
- "type":"string",
- "enum":[
- "INTERNET",
- "VPC_LINK"
- ]
- },
- "ContentHandlingStrategy":{
- "type":"string",
- "enum":[
- "CONVERT_TO_BINARY",
- "CONVERT_TO_TEXT"
- ]
- },
- "CreateApiKeyRequest":{
- "type":"structure",
- "members":{
- "name":{
- "shape":"String",
- "documentation":"The name of the ApiKey.
"
- },
- "description":{
- "shape":"String",
- "documentation":"The description of the ApiKey.
"
- },
- "enabled":{
- "shape":"Boolean",
- "documentation":"Specifies whether the ApiKey can be used by callers.
"
- },
- "generateDistinctId":{
- "shape":"Boolean",
- "documentation":"Specifies whether (true
) or not (false
) the key identifier is distinct from the created API key value.
"
- },
- "value":{
- "shape":"String",
- "documentation":"Specifies a value of the API key.
"
- },
- "stageKeys":{
- "shape":"ListOfStageKeys",
- "documentation":"DEPRECATED FOR USAGE PLANS - Specifies stages associated with the API key.
"
- },
- "customerId":{
- "shape":"String",
- "documentation":"An AWS Marketplace customer identifier , when integrating with the AWS SaaS Marketplace.
"
- }
- },
- "documentation":"Request to create an ApiKey resource.
"
- },
- "CreateAuthorizerRequest":{
- "type":"structure",
- "required":[
- "restApiId",
- "name",
- "type"
- ],
- "members":{
- "restApiId":{
- "shape":"String",
- "documentation":"[Required] The string identifier of the associated RestApi.
",
- "location":"uri",
- "locationName":"restapi_id"
- },
- "name":{
- "shape":"String",
- "documentation":"[Required] The name of the authorizer.
"
- },
- "type":{
- "shape":"AuthorizerType",
- "documentation":"[Required] The authorizer type. Valid values are TOKEN
for a Lambda function using a single authorization token submitted in a custom header, REQUEST
for a Lambda function using incoming request parameters, and COGNITO_USER_POOLS
for using an Amazon Cognito user pool.
"
- },
- "providerARNs":{
- "shape":"ListOfARNs",
- "documentation":"A list of the Amazon Cognito user pool ARNs for the COGNITO_USER_POOLS
authorizer. Each element is of this format: arn:aws:cognito-idp:{region}:{account_id}:userpool/{user_pool_id}
. For a TOKEN
or REQUEST
authorizer, this is not defined.
"
- },
- "authType":{
- "shape":"String",
- "documentation":"Optional customer-defined field, used in Swagger imports and exports without functional impact.
"
- },
- "authorizerUri":{
- "shape":"String",
- "documentation":"Specifies the authorizer's Uniform Resource Identifier (URI). For TOKEN
or REQUEST
authorizers, this must be a well-formed Lambda function URI, for example, arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:{account_id}:function:{lambda_function_name}/invocations
. In general, the URI has this form arn:aws:apigateway:{region}:lambda:path/{service_api}
, where {region}
is the same as the region hosting the Lambda function, path
indicates that the remaining substring in the URI should be treated as the path to the resource, including the initial /
. For Lambda functions, this is usually of the form /2015-03-31/functions/[FunctionARN]/invocations
.
"
- },
- "authorizerCredentials":{
- "shape":"String",
- "documentation":"Specifies the required credentials as an IAM role for API Gateway to invoke the authorizer. To specify an IAM role for API Gateway to assume, use the role's Amazon Resource Name (ARN). To use resource-based permissions on the Lambda function, specify null.
"
- },
- "identitySource":{
- "shape":"String",
- "documentation":"The identity source for which authorization is requested.
- For a
TOKEN
or COGNITO_USER_POOLS
authorizer, this is required and specifies the request header mapping expression for the custom header holding the authorization token submitted by the client. For example, if the token header name is Auth
, the header mapping expression is method.request.header.Auth
. - For the
REQUEST
authorizer, this is required when authorization caching is enabled. The value is a comma-separated string of one or more mapping expressions of the specified request parameters. For example, if an Auth
header, a Name
query string parameter are defined as identity sources, this value is method.request.header.Auth, method.request.querystring.Name
. These parameters will be used to derive the authorization caching key and to perform runtime validation of the REQUEST
authorizer by verifying all of the identity-related request parameters are present, not null and non-empty. Only when this is true does the authorizer invoke the authorizer Lambda function, otherwise, it returns a 401 Unauthorized response without calling the Lambda function. The valid value is a string of comma-separated mapping expressions of the specified request parameters. When the authorization caching is not enabled, this property is optional.
"
- },
- "identityValidationExpression":{
- "shape":"String",
- "documentation":"A validation expression for the incoming identity token. For TOKEN
authorizers, this value is a regular expression. API Gateway will match the aud
field of the incoming token from the client against the specified regular expression. It will invoke the authorizer's Lambda function when there is a match. Otherwise, it will return a 401 Unauthorized response without calling the Lambda function. The validation expression does not apply to the REQUEST
authorizer.
"
- },
- "authorizerResultTtlInSeconds":{
- "shape":"NullableInteger",
- "documentation":"The TTL in seconds of cached authorizer results. If it equals 0, authorization caching is disabled. If it is greater than 0, API Gateway will cache authorizer responses. If this field is not set, the default value is 300. The maximum value is 3600, or 1 hour.
"
- }
- },
- "documentation":"Request to add a new Authorizer to an existing RestApi resource.
"
- },
- "CreateBasePathMappingRequest":{
- "type":"structure",
- "required":[
- "domainName",
- "restApiId"
- ],
- "members":{
- "domainName":{
- "shape":"String",
- "documentation":"[Required] The domain name of the BasePathMapping resource to create.
",
- "location":"uri",
- "locationName":"domain_name"
- },
- "basePath":{
- "shape":"String",
- "documentation":"The base path name that callers of the API must provide as part of the URL after the domain name. This value must be unique for all of the mappings across a single API. Leave this blank if you do not want callers to specify a base path name after the domain name.
"
- },
- "restApiId":{
- "shape":"String",
- "documentation":"[Required] The string identifier of the associated RestApi.
"
- },
- "stage":{
- "shape":"String",
- "documentation":"The name of the API's stage that you want to use for this mapping. Leave this blank if you do not want callers to explicitly specify the stage name after any base path name.
"
- }
- },
- "documentation":"Requests API Gateway to create a new BasePathMapping resource.
"
- },
- "CreateDeploymentRequest":{
- "type":"structure",
- "required":["restApiId"],
- "members":{
- "restApiId":{
- "shape":"String",
- "documentation":"[Required] The string identifier of the associated RestApi.
",
- "location":"uri",
- "locationName":"restapi_id"
- },
- "stageName":{
- "shape":"String",
- "documentation":"The name of the Stage resource for the Deployment resource to create.
"
- },
- "stageDescription":{
- "shape":"String",
- "documentation":"The description of the Stage resource for the Deployment resource to create.
"
- },
- "description":{
- "shape":"String",
- "documentation":"The description for the Deployment resource to create.
"
- },
- "cacheClusterEnabled":{
- "shape":"NullableBoolean",
- "documentation":"Enables a cache cluster for the Stage resource specified in the input.
"
- },
- "cacheClusterSize":{
- "shape":"CacheClusterSize",
- "documentation":"Specifies the cache cluster size for the Stage resource specified in the input, if a cache cluster is enabled.
"
- },
- "variables":{
- "shape":"MapOfStringToString",
- "documentation":"A map that defines the stage variables for the Stage resource that is associated with the new deployment. Variable names can have alphanumeric and underscore characters, and the values must match [A-Za-z0-9-._~:/?#&=,]+
.
"
- },
- "canarySettings":{
- "shape":"DeploymentCanarySettings",
- "documentation":"The input configuration for the canary deployment when the deployment is a canary release deployment.
"
- }
- },
- "documentation":"Requests API Gateway to create a Deployment resource.
"
- },
- "CreateDocumentationPartRequest":{
- "type":"structure",
- "required":[
- "restApiId",
- "location",
- "properties"
- ],
- "members":{
- "restApiId":{
- "shape":"String",
- "documentation":"[Required] The string identifier of the associated RestApi.
",
- "location":"uri",
- "locationName":"restapi_id"
- },
- "location":{
- "shape":"DocumentationPartLocation",
- "documentation":"[Required] The location of the targeted API entity of the to-be-created documentation part.
"
- },
- "properties":{
- "shape":"String",
- "documentation":"[Required] The new documentation content map of the targeted API entity. Enclosed key-value pairs are API-specific, but only Swagger-compliant key-value pairs can be exported and, hence, published.
"
- }
- },
- "documentation":"Creates a new documentation part of a given API.
"
- },
- "CreateDocumentationVersionRequest":{
- "type":"structure",
- "required":[
- "restApiId",
- "documentationVersion"
- ],
- "members":{
- "restApiId":{
- "shape":"String",
- "documentation":"[Required] The string identifier of the associated RestApi.
",
- "location":"uri",
- "locationName":"restapi_id"
- },
- "documentationVersion":{
- "shape":"String",
- "documentation":"[Required] The version identifier of the new snapshot.
"
- },
- "stageName":{
- "shape":"String",
- "documentation":"The stage name to be associated with the new documentation snapshot.
"
- },
- "description":{
- "shape":"String",
- "documentation":"A description about the new documentation snapshot.
"
- }
- },
- "documentation":"Creates a new documentation version of a given API.
"
- },
- "CreateDomainNameRequest":{
- "type":"structure",
- "required":["domainName"],
- "members":{
- "domainName":{
- "shape":"String",
- "documentation":"[Required] The name of the DomainName resource.
"
- },
- "certificateName":{
- "shape":"String",
- "documentation":"The user-friendly name of the certificate that will be used by edge-optimized endpoint for this domain name.
"
- },
- "certificateBody":{
- "shape":"String",
- "documentation":"[Deprecated] The body of the server certificate that will be used by edge-optimized endpoint for this domain name provided by your certificate authority.
"
- },
- "certificatePrivateKey":{
- "shape":"String",
- "documentation":"[Deprecated] Your edge-optimized endpoint's domain name certificate's private key.
"
- },
- "certificateChain":{
- "shape":"String",
- "documentation":"[Deprecated] The intermediate certificates and optionally the root certificate, one after the other without any blank lines, used by an edge-optimized endpoint for this domain name. If you include the root certificate, your certificate chain must start with intermediate certificates and end with the root certificate. Use the intermediate certificates that were provided by your certificate authority. Do not include any intermediaries that are not in the chain of trust path.
"
- },
- "certificateArn":{
- "shape":"String",
- "documentation":"The reference to an AWS-managed certificate that will be used by edge-optimized endpoint for this domain name. AWS Certificate Manager is the only supported source.
"
- },
- "regionalCertificateName":{
- "shape":"String",
- "documentation":"The user-friendly name of the certificate that will be used by regional endpoint for this domain name.
"
- },
- "regionalCertificateArn":{
- "shape":"String",
- "documentation":"The reference to an AWS-managed certificate that will be used by regional endpoint for this domain name. AWS Certificate Manager is the only supported source.
"
- },
- "endpointConfiguration":{
- "shape":"EndpointConfiguration",
- "documentation":"The endpoint configuration of this DomainName showing the endpoint types of the domain name.
"
- }
- },
- "documentation":"A request to create a new domain name.
"
- },
- "CreateModelRequest":{
- "type":"structure",
- "required":[
- "restApiId",
- "name",
- "contentType"
- ],
- "members":{
- "restApiId":{
- "shape":"String",
- "documentation":"[Required] The RestApi identifier under which the Model will be created.
",
- "location":"uri",
- "locationName":"restapi_id"
- },
- "name":{
- "shape":"String",
- "documentation":"[Required] The name of the model. Must be alphanumeric.
"
- },
- "description":{
- "shape":"String",
- "documentation":"The description of the model.
"
- },
- "schema":{
- "shape":"String",
- "documentation":"The schema for the model. For application/json
models, this should be JSON schema draft 4 model.
"
- },
- "contentType":{
- "shape":"String",
- "documentation":"[Required] The content-type for the model.
"
- }
- },
- "documentation":"Request to add a new Model to an existing RestApi resource.
"
- },
- "CreateRequestValidatorRequest":{
- "type":"structure",
- "required":["restApiId"],
- "members":{
- "restApiId":{
- "shape":"String",
- "documentation":"[Required] The string identifier of the associated RestApi.
",
- "location":"uri",
- "locationName":"restapi_id"
- },
- "name":{
- "shape":"String",
- "documentation":"The name of the to-be-created RequestValidator.
"
- },
- "validateRequestBody":{
- "shape":"Boolean",
- "documentation":"A Boolean flag to indicate whether to validate request body according to the configured model schema for the method (true
) or not (false
).
"
- },
- "validateRequestParameters":{
- "shape":"Boolean",
- "documentation":"A Boolean flag to indicate whether to validate request parameters, true
, or not false
.
"
- }
- },
- "documentation":"Creates a RequestValidator of a given RestApi.
"
- },
- "CreateResourceRequest":{
- "type":"structure",
- "required":[
- "restApiId",
- "parentId",
- "pathPart"
- ],
- "members":{
- "restApiId":{
- "shape":"String",
- "documentation":"[Required] The string identifier of the associated RestApi.
",
- "location":"uri",
- "locationName":"restapi_id"
- },
- "parentId":{
- "shape":"String",
- "documentation":"[Required] The parent resource's identifier.
",
- "location":"uri",
- "locationName":"parent_id"
- },
- "pathPart":{
- "shape":"String",
- "documentation":"The last path segment for this resource.
"
- }
- },
- "documentation":"Requests API Gateway to create a Resource resource.
"
- },
- "CreateRestApiRequest":{
- "type":"structure",
- "required":["name"],
- "members":{
- "name":{
- "shape":"String",
- "documentation":"[Required] The name of the RestApi.
"
- },
- "description":{
- "shape":"String",
- "documentation":"The description of the RestApi.
"
- },
- "version":{
- "shape":"String",
- "documentation":"A version identifier for the API.
"
- },
- "cloneFrom":{
- "shape":"String",
- "documentation":"The ID of the RestApi that you want to clone from.
"
- },
- "binaryMediaTypes":{
- "shape":"ListOfString",
- "documentation":"The list of binary media types supported by the RestApi. By default, the RestApi supports only UTF-8-encoded text payloads.
"
- },
- "minimumCompressionSize":{
- "shape":"NullableInteger",
- "documentation":"A nullable integer that is used to enable compression (with non-negative between 0 and 10485760 (10M) bytes, inclusive) or disable compression (with a null value) on an API. When compression is enabled, compression or decompression is not applied on the payload if the payload size is smaller than this value. Setting it to zero allows compression for any payload size.
"
- },
- "apiKeySource":{
- "shape":"ApiKeySourceType",
- "documentation":"The source of the API key for metering requests according to a usage plan. Valid values are:
HEADER
to read the API key from the X-API-Key
header of a request. AUTHORIZER
to read the API key from the UsageIdentifierKey
from a custom authorizer.
"
- },
- "endpointConfiguration":{
- "shape":"EndpointConfiguration",
- "documentation":"The endpoint configuration of this RestApi showing the endpoint types of the API.
"
- },
- "policy":{
- "shape":"String",
- "documentation":"A stringified JSON policy document that applies to this RestApi regardless of the caller and Method configuration."
- }
- },
- "documentation":"The POST Request to add a new RestApi resource to your collection.
"
- },
- "CreateStageRequest":{
- "type":"structure",
- "required":[
- "restApiId",
- "stageName",
- "deploymentId"
- ],
- "members":{
- "restApiId":{
- "shape":"String",
- "documentation":"[Required] The string identifier of the associated RestApi.
",
- "location":"uri",
- "locationName":"restapi_id"
- },
- "stageName":{
- "shape":"String",
- "documentation":"[Required] The name for the Stage resource.
"
- },
- "deploymentId":{
- "shape":"String",
- "documentation":"[Required] The identifier of the Deployment resource for the Stage resource.
"
- },
- "description":{
- "shape":"String",
- "documentation":"The description of the Stage resource.
"
- },
- "cacheClusterEnabled":{
- "shape":"Boolean",
- "documentation":"Whether cache clustering is enabled for the stage.
"
- },
- "cacheClusterSize":{
- "shape":"CacheClusterSize",
- "documentation":"The stage's cache cluster size.
"
- },
- "variables":{
- "shape":"MapOfStringToString",
- "documentation":"A map that defines the stage variables for the new Stage resource. Variable names can have alphanumeric and underscore characters, and the values must match [A-Za-z0-9-._~:/?#&=,]+
.
"
- },
- "documentationVersion":{
- "shape":"String",
- "documentation":"The version of the associated API documentation.
"
- },
- "canarySettings":{
- "shape":"CanarySettings",
- "documentation":"The canary deployment settings of this stage.
"
- },
- "tags":{
- "shape":"MapOfStringToString",
- "documentation":"The key-value map of strings. The valid character set is [a-zA-Z+-=._:/]. The tag key can be up to 128 characters and must not start with aws:
. The tag value can be up to 256 characters.
"
- }
- },
- "documentation":"Requests API Gateway to create a Stage resource.
"
- },
- "CreateUsagePlanKeyRequest":{
- "type":"structure",
- "required":[
- "usagePlanId",
- "keyId",
- "keyType"
- ],
- "members":{
- "usagePlanId":{
- "shape":"String",
- "documentation":"[Required] The Id of the UsagePlan resource representing the usage plan containing the to-be-created UsagePlanKey resource representing a plan customer.
",
- "location":"uri",
- "locationName":"usageplanId"
- },
- "keyId":{
- "shape":"String",
- "documentation":"[Required] The identifier of a UsagePlanKey resource for a plan customer.
"
- },
- "keyType":{
- "shape":"String",
- "documentation":"[Required] The type of a UsagePlanKey resource for a plan customer.
"
- }
- },
- "documentation":"The POST request to create a usage plan key for adding an existing API key to a usage plan.
"
- },
- "CreateUsagePlanRequest":{
- "type":"structure",
- "required":["name"],
- "members":{
- "name":{
- "shape":"String",
- "documentation":"[Required] The name of the usage plan.
"
- },
- "description":{
- "shape":"String",
- "documentation":"The description of the usage plan.
"
- },
- "apiStages":{
- "shape":"ListOfApiStage",
- "documentation":"The associated API stages of the usage plan.
"
- },
- "throttle":{
- "shape":"ThrottleSettings",
- "documentation":"The throttling limits of the usage plan.
"
- },
- "quota":{
- "shape":"QuotaSettings",
- "documentation":"The quota of the usage plan.
"
- }
- },
- "documentation":"The POST request to create a usage plan with the name, description, throttle limits and quota limits, as well as the associated API stages, specified in the payload.
"
- },
- "CreateVpcLinkRequest":{
- "type":"structure",
- "required":[
- "name",
- "targetArns"
- ],
- "members":{
- "name":{
- "shape":"String",
- "documentation":"[Required] The name used to label and identify the VPC link.
"
- },
- "description":{
- "shape":"String",
- "documentation":"The description of the VPC link.
"
- },
- "targetArns":{
- "shape":"ListOfString",
- "documentation":"[Required] The ARNs of network load balancers of the VPC targeted by the VPC link. The network load balancers must be owned by the same AWS account of the API owner.
"
- }
- },
- "documentation":"Creates a VPC link, under the caller's account in a selected region, in an asynchronous operation that typically takes 2-4 minutes to complete and become operational. The caller must have permissions to create and update VPC Endpoint services.
"
- },
- "DeleteApiKeyRequest":{
- "type":"structure",
- "required":["apiKey"],
- "members":{
- "apiKey":{
- "shape":"String",
- "documentation":"[Required] The identifier of the ApiKey resource to be deleted.
",
- "location":"uri",
- "locationName":"api_Key"
- }
- },
- "documentation":"A request to delete the ApiKey resource.
"
- },
- "DeleteAuthorizerRequest":{
- "type":"structure",
- "required":[
- "restApiId",
- "authorizerId"
- ],
- "members":{
- "restApiId":{
- "shape":"String",
- "documentation":"[Required] The string identifier of the associated RestApi.
",
- "location":"uri",
- "locationName":"restapi_id"
- },
- "authorizerId":{
- "shape":"String",
- "documentation":"[Required] The identifier of the Authorizer resource.
",
- "location":"uri",
- "locationName":"authorizer_id"
- }
- },
- "documentation":"Request to delete an existing Authorizer resource.
"
- },
- "DeleteBasePathMappingRequest":{
- "type":"structure",
- "required":[
- "domainName",
- "basePath"
- ],
- "members":{
- "domainName":{
- "shape":"String",
- "documentation":"[Required] The domain name of the BasePathMapping resource to delete.
",
- "location":"uri",
- "locationName":"domain_name"
- },
- "basePath":{
- "shape":"String",
- "documentation":"[Required] The base path name of the BasePathMapping resource to delete.
",
- "location":"uri",
- "locationName":"base_path"
- }
- },
- "documentation":"A request to delete the BasePathMapping resource.
"
- },
- "DeleteClientCertificateRequest":{
- "type":"structure",
- "required":["clientCertificateId"],
- "members":{
- "clientCertificateId":{
- "shape":"String",
- "documentation":"[Required] The identifier of the ClientCertificate resource to be deleted.
",
- "location":"uri",
- "locationName":"clientcertificate_id"
- }
- },
- "documentation":"A request to delete the ClientCertificate resource.
"
- },
- "DeleteDeploymentRequest":{
- "type":"structure",
- "required":[
- "restApiId",
- "deploymentId"
- ],
- "members":{
- "restApiId":{
- "shape":"String",
- "documentation":"[Required] The string identifier of the associated RestApi.
",
- "location":"uri",
- "locationName":"restapi_id"
- },
- "deploymentId":{
- "shape":"String",
- "documentation":"[Required] The identifier of the Deployment resource to delete.
",
- "location":"uri",
- "locationName":"deployment_id"
- }
- },
- "documentation":"Requests API Gateway to delete a Deployment resource.
"
- },
- "DeleteDocumentationPartRequest":{
- "type":"structure",
- "required":[
- "restApiId",
- "documentationPartId"
- ],
- "members":{
- "restApiId":{
- "shape":"String",
- "documentation":"[Required] The string identifier of the associated RestApi.
",
- "location":"uri",
- "locationName":"restapi_id"
- },
- "documentationPartId":{
- "shape":"String",
- "documentation":"[Required] The identifier of the to-be-deleted documentation part.
",
- "location":"uri",
- "locationName":"part_id"
- }
- },
- "documentation":"Deletes an existing documentation part of an API.
"
- },
- "DeleteDocumentationVersionRequest":{
- "type":"structure",
- "required":[
- "restApiId",
- "documentationVersion"
- ],
- "members":{
- "restApiId":{
- "shape":"String",
- "documentation":"[Required] The string identifier of the associated RestApi.
",
- "location":"uri",
- "locationName":"restapi_id"
- },
- "documentationVersion":{
- "shape":"String",
- "documentation":"[Required] The version identifier of a to-be-deleted documentation snapshot.
",
- "location":"uri",
- "locationName":"doc_version"
- }
- },
- "documentation":"Deletes an existing documentation version of an API.
"
- },
- "DeleteDomainNameRequest":{
- "type":"structure",
- "required":["domainName"],
- "members":{
- "domainName":{
- "shape":"String",
- "documentation":"[Required] The name of the DomainName resource to be deleted.
",
- "location":"uri",
- "locationName":"domain_name"
- }
- },
- "documentation":"A request to delete the DomainName resource.
"
- },
- "DeleteGatewayResponseRequest":{
- "type":"structure",
- "required":[
- "restApiId",
- "responseType"
- ],
- "members":{
- "restApiId":{
- "shape":"String",
- "documentation":"[Required] The string identifier of the associated RestApi.
",
- "location":"uri",
- "locationName":"restapi_id"
- },
- "responseType":{
- "shape":"GatewayResponseType",
- "documentation":"[Required]
The response type of the associated GatewayResponse. Valid values are
- ACCESS_DENIED
- API_CONFIGURATION_ERROR
- AUTHORIZER_FAILURE
- AUTHORIZER_CONFIGURATION_ERROR
- BAD_REQUEST_PARAMETERS
- BAD_REQUEST_BODY
- DEFAULT_4XX
- DEFAULT_5XX
- EXPIRED_TOKEN
- INVALID_SIGNATURE
- INTEGRATION_FAILURE
- INTEGRATION_TIMEOUT
- INVALID_API_KEY
- MISSING_AUTHENTICATION_TOKEN
- QUOTA_EXCEEDED
- REQUEST_TOO_LARGE
- RESOURCE_NOT_FOUND
- THROTTLED
- UNAUTHORIZED
- UNSUPPORTED_MEDIA_TYPE
",
- "location":"uri",
- "locationName":"response_type"
- }
- },
- "documentation":"Clears any customization of a GatewayResponse of a specified response type on the given RestApi and resets it with the default settings.
"
- },
- "DeleteIntegrationRequest":{
- "type":"structure",
- "required":[
- "restApiId",
- "resourceId",
- "httpMethod"
- ],
- "members":{
- "restApiId":{
- "shape":"String",
- "documentation":"[Required] The string identifier of the associated RestApi.
",
- "location":"uri",
- "locationName":"restapi_id"
- },
- "resourceId":{
- "shape":"String",
- "documentation":"[Required] Specifies a delete integration request's resource identifier.
",
- "location":"uri",
- "locationName":"resource_id"
- },
- "httpMethod":{
- "shape":"String",
- "documentation":"[Required] Specifies a delete integration request's HTTP method.
",
- "location":"uri",
- "locationName":"http_method"
- }
- },
- "documentation":"Represents a delete integration request.
"
- },
- "DeleteIntegrationResponseRequest":{
- "type":"structure",
- "required":[
- "restApiId",
- "resourceId",
- "httpMethod",
- "statusCode"
- ],
- "members":{
- "restApiId":{
- "shape":"String",
- "documentation":"[Required] The string identifier of the associated RestApi.
",
- "location":"uri",
- "locationName":"restapi_id"
- },
- "resourceId":{
- "shape":"String",
- "documentation":"[Required] Specifies a delete integration response request's resource identifier.
",
- "location":"uri",
- "locationName":"resource_id"
- },
- "httpMethod":{
- "shape":"String",
- "documentation":"[Required] Specifies a delete integration response request's HTTP method.
",
- "location":"uri",
- "locationName":"http_method"
- },
- "statusCode":{
- "shape":"StatusCode",
- "documentation":"[Required] Specifies a delete integration response request's status code.
",
- "location":"uri",
- "locationName":"status_code"
- }
- },
- "documentation":"Represents a delete integration response request.
"
- },
- "DeleteMethodRequest":{
- "type":"structure",
- "required":[
- "restApiId",
- "resourceId",
- "httpMethod"
- ],
- "members":{
- "restApiId":{
- "shape":"String",
- "documentation":"[Required] The string identifier of the associated RestApi.
",
- "location":"uri",
- "locationName":"restapi_id"
- },
- "resourceId":{
- "shape":"String",
- "documentation":"[Required] The Resource identifier for the Method resource.
",
- "location":"uri",
- "locationName":"resource_id"
- },
- "httpMethod":{
- "shape":"String",
- "documentation":"[Required] The HTTP verb of the Method resource.
",
- "location":"uri",
- "locationName":"http_method"
- }
- },
- "documentation":"Request to delete an existing Method resource.
"
- },
- "DeleteMethodResponseRequest":{
- "type":"structure",
- "required":[
- "restApiId",
- "resourceId",
- "httpMethod",
- "statusCode"
- ],
- "members":{
- "restApiId":{
- "shape":"String",
- "documentation":"[Required] The string identifier of the associated RestApi.
",
- "location":"uri",
- "locationName":"restapi_id"
- },
- "resourceId":{
- "shape":"String",
- "documentation":"[Required] The Resource identifier for the MethodResponse resource.
",
- "location":"uri",
- "locationName":"resource_id"
- },
- "httpMethod":{
- "shape":"String",
- "documentation":"[Required] The HTTP verb of the Method resource.
",
- "location":"uri",
- "locationName":"http_method"
- },
- "statusCode":{
- "shape":"StatusCode",
- "documentation":"[Required] The status code identifier for the MethodResponse resource.
",
- "location":"uri",
- "locationName":"status_code"
- }
- },
- "documentation":"A request to delete an existing MethodResponse resource.
"
- },
- "DeleteModelRequest":{
- "type":"structure",
- "required":[
- "restApiId",
- "modelName"
- ],
- "members":{
- "restApiId":{
- "shape":"String",
- "documentation":"[Required] The string identifier of the associated RestApi.
",
- "location":"uri",
- "locationName":"restapi_id"
- },
- "modelName":{
- "shape":"String",
- "documentation":"[Required] The name of the model to delete.
",
- "location":"uri",
- "locationName":"model_name"
- }
- },
- "documentation":"Request to delete an existing model in an existing RestApi resource.
"
- },
- "DeleteRequestValidatorRequest":{
- "type":"structure",
- "required":[
- "restApiId",
- "requestValidatorId"
- ],
- "members":{
- "restApiId":{
- "shape":"String",
- "documentation":"[Required] The string identifier of the associated RestApi.
",
- "location":"uri",
- "locationName":"restapi_id"
- },
- "requestValidatorId":{
- "shape":"String",
- "documentation":"[Required] The identifier of the RequestValidator to be deleted.
",
- "location":"uri",
- "locationName":"requestvalidator_id"
- }
- },
- "documentation":"Deletes a specified RequestValidator of a given RestApi.
"
- },
- "DeleteResourceRequest":{
- "type":"structure",
- "required":[
- "restApiId",
- "resourceId"
- ],
- "members":{
- "restApiId":{
- "shape":"String",
- "documentation":"[Required] The string identifier of the associated RestApi.
",
- "location":"uri",
- "locationName":"restapi_id"
- },
- "resourceId":{
- "shape":"String",
- "documentation":"[Required] The identifier of the Resource resource.
",
- "location":"uri",
- "locationName":"resource_id"
- }
- },
- "documentation":"Request to delete a Resource.
"
- },
- "DeleteRestApiRequest":{
- "type":"structure",
- "required":["restApiId"],
- "members":{
- "restApiId":{
- "shape":"String",
- "documentation":"[Required] The string identifier of the associated RestApi.
",
- "location":"uri",
- "locationName":"restapi_id"
- }
- },
- "documentation":"Request to delete the specified API from your collection.
"
- },
- "DeleteStageRequest":{
- "type":"structure",
- "required":[
- "restApiId",
- "stageName"
- ],
- "members":{
- "restApiId":{
- "shape":"String",
- "documentation":"[Required] The string identifier of the associated RestApi.
",
- "location":"uri",
- "locationName":"restapi_id"
- },
- "stageName":{
- "shape":"String",
- "documentation":"[Required] The name of the Stage resource to delete.
",
- "location":"uri",
- "locationName":"stage_name"
- }
- },
- "documentation":"Requests API Gateway to delete a Stage resource.
"
- },
- "DeleteUsagePlanKeyRequest":{
- "type":"structure",
- "required":[
- "usagePlanId",
- "keyId"
- ],
- "members":{
- "usagePlanId":{
- "shape":"String",
- "documentation":"[Required] The Id of the UsagePlan resource representing the usage plan containing the to-be-deleted UsagePlanKey resource representing a plan customer.
",
- "location":"uri",
- "locationName":"usageplanId"
- },
- "keyId":{
- "shape":"String",
- "documentation":"[Required] The Id of the UsagePlanKey resource to be deleted.
",
- "location":"uri",
- "locationName":"keyId"
- }
- },
- "documentation":"The DELETE request to delete a usage plan key and remove the underlying API key from the associated usage plan.
"
- },
- "DeleteUsagePlanRequest":{
- "type":"structure",
- "required":["usagePlanId"],
- "members":{
- "usagePlanId":{
- "shape":"String",
- "documentation":"[Required] The Id of the to-be-deleted usage plan.
",
- "location":"uri",
- "locationName":"usageplanId"
- }
- },
- "documentation":"The DELETE request to delete a usage plan of a given plan Id.
"
- },
- "DeleteVpcLinkRequest":{
- "type":"structure",
- "required":["vpcLinkId"],
- "members":{
- "vpcLinkId":{
- "shape":"String",
- "documentation":"[Required] The identifier of the VpcLink. It is used in an Integration to reference this VpcLink.
",
- "location":"uri",
- "locationName":"vpclink_id"
- }
- },
- "documentation":"Deletes an existing VpcLink of a specified identifier.
"
- },
- "Deployment":{
- "type":"structure",
- "members":{
- "id":{
- "shape":"String",
- "documentation":"The identifier for the deployment resource.
"
- },
- "description":{
- "shape":"String",
- "documentation":"The description for the deployment resource.
"
- },
- "createdDate":{
- "shape":"Timestamp",
- "documentation":"The date and time that the deployment resource was created.
"
- },
- "apiSummary":{
- "shape":"PathToMapOfMethodSnapshot",
- "documentation":"A summary of the RestApi at the date and time that the deployment resource was created.
"
- }
- },
- "documentation":"An immutable representation of a RestApi resource that can be called by users using Stages. A deployment must be associated with a Stage for it to be callable over the Internet.
"
- },
- "DeploymentCanarySettings":{
- "type":"structure",
- "members":{
- "percentTraffic":{
- "shape":"Double",
- "documentation":"The percentage (0.0-100.0) of traffic routed to the canary deployment.
"
- },
- "stageVariableOverrides":{
- "shape":"MapOfStringToString",
- "documentation":"A stage variable overrides used for the canary release deployment. They can override existing stage variables or add new stage variables for the canary release deployment. These stage variables are represented as a string-to-string map between stage variable names and their values.
"
- },
- "useStageCache":{
- "shape":"Boolean",
- "documentation":"A Boolean flag to indicate whether the canary release deployment uses the stage cache or not.
"
- }
- },
- "documentation":"The input configuration for a canary deployment.
"
- },
- "Deployments":{
- "type":"structure",
- "members":{
- "position":{"shape":"String"},
- "items":{
- "shape":"ListOfDeployment",
- "documentation":"The current page of elements from this collection.
",
- "locationName":"item"
- }
- },
- "documentation":"Represents a collection resource that contains zero or more references to your existing deployments, and links that guide you on how to interact with your collection. The collection offers a paginated view of the contained deployments.
"
- },
- "DocumentationPart":{
- "type":"structure",
- "members":{
- "id":{
- "shape":"String",
- "documentation":"The DocumentationPart identifier, generated by API Gateway when the DocumentationPart
is created.
"
- },
- "location":{
- "shape":"DocumentationPartLocation",
- "documentation":"The location of the API entity to which the documentation applies. Valid fields depend on the targeted API entity type. All the valid location fields are not required. If not explicitly specified, a valid location field is treated as a wildcard and associated documentation content may be inherited by matching entities, unless overridden.
"
- },
- "properties":{
- "shape":"String",
- "documentation":"A content map of API-specific key-value pairs describing the targeted API entity. The map must be encoded as a JSON string, e.g., \"{ \\\"description\\\": \\\"The API does ...\\\" }\"
. Only Swagger-compliant documentation-related fields from the properties map are exported and, hence, published as part of the API entity definitions, while the original documentation parts are exported in a Swagger extension of x-amazon-apigateway-documentation
.
"
- }
- },
- "documentation":"A documentation part for a targeted API entity.
"
- },
- "DocumentationPartIds":{
- "type":"structure",
- "members":{
- "ids":{
- "shape":"ListOfString",
- "documentation":"A list of the returned documentation part identifiers.
"
- },
- "warnings":{
- "shape":"ListOfString",
- "documentation":"A list of warning messages reported during import of documentation parts.
"
- }
- },
- "documentation":"A collection of the imported DocumentationPart identifiers.
"
- },
- "DocumentationPartLocation":{
- "type":"structure",
- "required":["type"],
- "members":{
- "type":{
- "shape":"DocumentationPartType",
- "documentation":"[Required] The type of API entity to which the documentation content applies. Valid values are API
, AUTHORIZER
, MODEL
, RESOURCE
, METHOD
, PATH_PARAMETER
, QUERY_PARAMETER
, REQUEST_HEADER
, REQUEST_BODY
, RESPONSE
, RESPONSE_HEADER
, and RESPONSE_BODY
. Content inheritance does not apply to any entity of the API
, AUTHORIZER
, METHOD
, MODEL
, REQUEST_BODY
, or RESOURCE
type.
"
- },
- "path":{
- "shape":"String",
- "documentation":"The URL path of the target. It is a valid field for the API entity types of RESOURCE
, METHOD
, PATH_PARAMETER
, QUERY_PARAMETER
, REQUEST_HEADER
, REQUEST_BODY
, RESPONSE
, RESPONSE_HEADER
, and RESPONSE_BODY
. The default value is /
for the root resource. When an applicable child entity inherits the content of another entity of the same type with more general specifications of the other location
attributes, the child entity's path
attribute must match that of the parent entity as a prefix.
"
- },
- "method":{
- "shape":"String",
- "documentation":"The HTTP verb of a method. It is a valid field for the API entity types of METHOD
, PATH_PARAMETER
, QUERY_PARAMETER
, REQUEST_HEADER
, REQUEST_BODY
, RESPONSE
, RESPONSE_HEADER
, and RESPONSE_BODY
. The default value is *
for any method. When an applicable child entity inherits the content of an entity of the same type with more general specifications of the other location
attributes, the child entity's method
attribute must match that of the parent entity exactly.
"
- },
- "statusCode":{
- "shape":"DocumentationPartLocationStatusCode",
- "documentation":"The HTTP status code of a response. It is a valid field for the API entity types of RESPONSE
, RESPONSE_HEADER
, and RESPONSE_BODY
. The default value is *
for any status code. When an applicable child entity inherits the content of an entity of the same type with more general specifications of the other location
attributes, the child entity's statusCode
attribute must match that of the parent entity exactly.
"
- },
- "name":{
- "shape":"String",
- "documentation":"The name of the targeted API entity. It is a valid and required field for the API entity types of AUTHORIZER
, MODEL
, PATH_PARAMETER
, QUERY_PARAMETER
, REQUEST_HEADER
, REQUEST_BODY
and RESPONSE_HEADER
. It is an invalid field for any other entity type.
"
- }
- },
- "documentation":"Specifies the target API entity to which the documentation applies.
"
- },
- "DocumentationPartLocationStatusCode":{
- "type":"string",
- "pattern":"^([1-5]\\d\\d|\\*|\\s*)$"
- },
- "DocumentationPartType":{
- "type":"string",
- "enum":[
- "API",
- "AUTHORIZER",
- "MODEL",
- "RESOURCE",
- "METHOD",
- "PATH_PARAMETER",
- "QUERY_PARAMETER",
- "REQUEST_HEADER",
- "REQUEST_BODY",
- "RESPONSE",
- "RESPONSE_HEADER",
- "RESPONSE_BODY"
- ]
- },
- "DocumentationParts":{
- "type":"structure",
- "members":{
- "position":{"shape":"String"},
- "items":{
- "shape":"ListOfDocumentationPart",
- "documentation":"The current page of elements from this collection.
",
- "locationName":"item"
- }
- },
- "documentation":"The collection of documentation parts of an API.