1202 lines
55 KiB
Python
1202 lines
55 KiB
Python
# Copyright (c) 2012 Mitch Garnaat http://garnaat.org/
|
|
# Copyright (c) 2012 Amazon.com, Inc. or its affiliates.
|
|
# All Rights Reserved
|
|
#
|
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
# copy of this software and associated documentation files (the
|
|
# "Software"), to deal in the Software without restriction, including
|
|
# without limitation the rights to use, copy, modify, merge, publish, dis-
|
|
# tribute, sublicense, and/or sell copies of the Software, and to permit
|
|
# persons to whom the Software is furnished to do so, subject to the fol-
|
|
# lowing conditions:
|
|
#
|
|
# The above copyright notice and this permission notice shall be included
|
|
# in all copies or substantial portions of the Software.
|
|
#
|
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
|
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
|
|
# ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
|
|
# SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
# IN THE SOFTWARE.
|
|
#
|
|
|
|
import boto
|
|
import boto.jsonresponse
|
|
from boto.compat import json
|
|
from boto.regioninfo import RegionInfo
|
|
from boto.connection import AWSQueryConnection
|
|
|
|
|
|
class Layer1(AWSQueryConnection):
|
|
|
|
APIVersion = '2010-12-01'
|
|
DefaultRegionName = 'us-east-1'
|
|
DefaultRegionEndpoint = 'elasticbeanstalk.us-east-1.amazonaws.com'
|
|
|
|
def __init__(self, aws_access_key_id=None, aws_secret_access_key=None,
|
|
is_secure=True, port=None,
|
|
proxy=None, proxy_port=None,
|
|
proxy_user=None, proxy_pass=None, debug=0,
|
|
https_connection_factory=None, region=None, path='/',
|
|
api_version=None, security_token=None, profile_name=None):
|
|
if not region:
|
|
region = RegionInfo(self, self.DefaultRegionName,
|
|
self.DefaultRegionEndpoint)
|
|
self.region = region
|
|
super(Layer1, self).__init__(aws_access_key_id,
|
|
aws_secret_access_key,
|
|
is_secure, port, proxy, proxy_port,
|
|
proxy_user, proxy_pass,
|
|
self.region.endpoint, debug,
|
|
https_connection_factory, path,
|
|
security_token, profile_name=profile_name)
|
|
|
|
def _required_auth_capability(self):
|
|
return ['hmac-v4']
|
|
|
|
def _encode_bool(self, v):
|
|
v = bool(v)
|
|
return {True: "true", False: "false"}[v]
|
|
|
|
def _get_response(self, action, params, path='/', verb='GET'):
|
|
params['ContentType'] = 'JSON'
|
|
response = self.make_request(action, params, path, verb)
|
|
body = response.read().decode('utf-8')
|
|
boto.log.debug(body)
|
|
if response.status == 200:
|
|
return json.loads(body)
|
|
else:
|
|
raise self.ResponseError(response.status, response.reason, body)
|
|
|
|
def check_dns_availability(self, cname_prefix):
|
|
"""Checks if the specified CNAME is available.
|
|
|
|
:type cname_prefix: string
|
|
:param cname_prefix: The prefix used when this CNAME is
|
|
reserved.
|
|
"""
|
|
params = {'CNAMEPrefix': cname_prefix}
|
|
return self._get_response('CheckDNSAvailability', params)
|
|
|
|
def create_application(self, application_name, description=None):
|
|
"""
|
|
Creates an application that has one configuration template
|
|
named default and no application versions.
|
|
|
|
:type application_name: string
|
|
:param application_name: The name of the application.
|
|
Constraint: This name must be unique within your account. If the
|
|
specified name already exists, the action returns an
|
|
InvalidParameterValue error.
|
|
|
|
:type description: string
|
|
:param description: Describes the application.
|
|
|
|
:raises: TooManyApplicationsException
|
|
"""
|
|
params = {'ApplicationName': application_name}
|
|
if description:
|
|
params['Description'] = description
|
|
return self._get_response('CreateApplication', params)
|
|
|
|
def create_application_version(self, application_name, version_label,
|
|
description=None, s3_bucket=None,
|
|
s3_key=None, auto_create_application=None):
|
|
"""Creates an application version for the specified application.
|
|
|
|
:type application_name: string
|
|
:param application_name: The name of the application. If no
|
|
application is found with this name, and AutoCreateApplication is
|
|
false, returns an InvalidParameterValue error.
|
|
|
|
:type version_label: string
|
|
:param version_label: A label identifying this version. Constraint:
|
|
Must be unique per application. If an application version already
|
|
exists with this label for the specified application, AWS Elastic
|
|
Beanstalk returns an InvalidParameterValue error.
|
|
|
|
:type description: string
|
|
:param description: Describes this version.
|
|
|
|
:type s3_bucket: string
|
|
:param s3_bucket: The Amazon S3 bucket where the data is located.
|
|
|
|
:type s3_key: string
|
|
:param s3_key: The Amazon S3 key where the data is located. Both
|
|
s3_bucket and s3_key must be specified in order to use a specific
|
|
source bundle. If both of these values are not specified the
|
|
sample application will be used.
|
|
|
|
:type auto_create_application: boolean
|
|
:param auto_create_application: Determines how the system behaves if
|
|
the specified application for this version does not already exist:
|
|
true: Automatically creates the specified application for this
|
|
version if it does not already exist. false: Returns an
|
|
InvalidParameterValue if the specified application for this version
|
|
does not already exist. Default: false Valid Values: true | false
|
|
|
|
:raises: TooManyApplicationsException,
|
|
TooManyApplicationVersionsException,
|
|
InsufficientPrivilegesException,
|
|
S3LocationNotInServiceRegionException
|
|
|
|
"""
|
|
params = {'ApplicationName': application_name,
|
|
'VersionLabel': version_label}
|
|
if description:
|
|
params['Description'] = description
|
|
if s3_bucket and s3_key:
|
|
params['SourceBundle.S3Bucket'] = s3_bucket
|
|
params['SourceBundle.S3Key'] = s3_key
|
|
if auto_create_application:
|
|
params['AutoCreateApplication'] = self._encode_bool(
|
|
auto_create_application)
|
|
return self._get_response('CreateApplicationVersion', params)
|
|
|
|
def create_configuration_template(self, application_name, template_name,
|
|
solution_stack_name=None,
|
|
source_configuration_application_name=None,
|
|
source_configuration_template_name=None,
|
|
environment_id=None, description=None,
|
|
option_settings=None):
|
|
"""Creates a configuration template.
|
|
|
|
Templates are associated with a specific application and are used to
|
|
deploy different versions of the application with the same
|
|
configuration settings.
|
|
|
|
:type application_name: string
|
|
:param application_name: The name of the application to associate with
|
|
this configuration template. If no application is found with this
|
|
name, AWS Elastic Beanstalk returns an InvalidParameterValue error.
|
|
|
|
:type template_name: string
|
|
:param template_name: The name of the configuration template.
|
|
Constraint: This name must be unique per application. Default: If
|
|
a configuration template already exists with this name, AWS Elastic
|
|
Beanstalk returns an InvalidParameterValue error.
|
|
|
|
:type solution_stack_name: string
|
|
:param solution_stack_name: The name of the solution stack used by this
|
|
configuration. The solution stack specifies the operating system,
|
|
architecture, and application server for a configuration template.
|
|
It determines the set of configuration options as well as the
|
|
possible and default values. Use ListAvailableSolutionStacks to
|
|
obtain a list of available solution stacks. Default: If the
|
|
SolutionStackName is not specified and the source configuration
|
|
parameter is blank, AWS Elastic Beanstalk uses the default solution
|
|
stack. If not specified and the source configuration parameter is
|
|
specified, AWS Elastic Beanstalk uses the same solution stack as
|
|
the source configuration template.
|
|
|
|
:type source_configuration_application_name: string
|
|
:param source_configuration_application_name: The name of the
|
|
application associated with the configuration.
|
|
|
|
:type source_configuration_template_name: string
|
|
:param source_configuration_template_name: The name of the
|
|
configuration template.
|
|
|
|
:type environment_id: string
|
|
:param environment_id: The ID of the environment used with this
|
|
configuration template.
|
|
|
|
:type description: string
|
|
:param description: Describes this configuration.
|
|
|
|
:type option_settings: list
|
|
:param option_settings: If specified, AWS Elastic Beanstalk sets the
|
|
specified configuration option to the requested value. The new
|
|
value overrides the value obtained from the solution stack or the
|
|
source configuration template.
|
|
|
|
:raises: InsufficientPrivilegesException,
|
|
TooManyConfigurationTemplatesException
|
|
"""
|
|
params = {'ApplicationName': application_name,
|
|
'TemplateName': template_name}
|
|
if solution_stack_name:
|
|
params['SolutionStackName'] = solution_stack_name
|
|
if source_configuration_application_name:
|
|
params['SourceConfiguration.ApplicationName'] = source_configuration_application_name
|
|
if source_configuration_template_name:
|
|
params['SourceConfiguration.TemplateName'] = source_configuration_template_name
|
|
if environment_id:
|
|
params['EnvironmentId'] = environment_id
|
|
if description:
|
|
params['Description'] = description
|
|
if option_settings:
|
|
self._build_list_params(params, option_settings,
|
|
'OptionSettings.member',
|
|
('Namespace', 'OptionName', 'Value'))
|
|
return self._get_response('CreateConfigurationTemplate', params)
|
|
|
|
def create_environment(self, application_name, environment_name,
|
|
version_label=None, template_name=None,
|
|
solution_stack_name=None, cname_prefix=None,
|
|
description=None, option_settings=None,
|
|
options_to_remove=None, tier_name=None,
|
|
tier_type=None, tier_version='1.0'):
|
|
"""Launches an environment for the application using a configuration.
|
|
|
|
:type application_name: string
|
|
:param application_name: The name of the application that contains the
|
|
version to be deployed. If no application is found with this name,
|
|
CreateEnvironment returns an InvalidParameterValue error.
|
|
|
|
:type environment_name: string
|
|
:param environment_name: A unique name for the deployment environment.
|
|
Used in the application URL. Constraint: Must be from 4 to 23
|
|
characters in length. The name can contain only letters, numbers,
|
|
and hyphens. It cannot start or end with a hyphen. This name must
|
|
be unique in your account. If the specified name already exists,
|
|
AWS Elastic Beanstalk returns an InvalidParameterValue error.
|
|
Default: If the CNAME parameter is not specified, the environment
|
|
name becomes part of the CNAME, and therefore part of the visible
|
|
URL for your application.
|
|
|
|
:type version_label: string
|
|
:param version_label: The name of the application version to deploy. If
|
|
the specified application has no associated application versions,
|
|
AWS Elastic Beanstalk UpdateEnvironment returns an
|
|
InvalidParameterValue error. Default: If not specified, AWS
|
|
Elastic Beanstalk attempts to launch the most recently created
|
|
application version.
|
|
|
|
:type template_name: string
|
|
:param template_name: The name of the configuration template to
|
|
use in deployment. If no configuration template is found with this
|
|
name, AWS Elastic Beanstalk returns an InvalidParameterValue error.
|
|
Condition: You must specify either this parameter or a
|
|
SolutionStackName, but not both. If you specify both, AWS Elastic
|
|
Beanstalk returns an InvalidParameterCombination error. If you do
|
|
not specify either, AWS Elastic Beanstalk returns a
|
|
MissingRequiredParameter error.
|
|
|
|
:type solution_stack_name: string
|
|
:param solution_stack_name: This is an alternative to specifying a
|
|
configuration name. If specified, AWS Elastic Beanstalk sets the
|
|
configuration values to the default values associated with the
|
|
specified solution stack. Condition: You must specify either this
|
|
or a TemplateName, but not both. If you specify both, AWS Elastic
|
|
Beanstalk returns an InvalidParameterCombination error. If you do
|
|
not specify either, AWS Elastic Beanstalk returns a
|
|
MissingRequiredParameter error.
|
|
|
|
:type cname_prefix: string
|
|
:param cname_prefix: If specified, the environment attempts to use this
|
|
value as the prefix for the CNAME. If not specified, the
|
|
environment uses the environment name.
|
|
|
|
:type description: string
|
|
:param description: Describes this environment.
|
|
|
|
:type option_settings: list
|
|
:param option_settings: If specified, AWS Elastic Beanstalk sets the
|
|
specified configuration options to the requested value in the
|
|
configuration set for the new environment. These override the
|
|
values obtained from the solution stack or the configuration
|
|
template. Each element in the list is a tuple of (Namespace,
|
|
OptionName, Value), for example::
|
|
|
|
[('aws:autoscaling:launchconfiguration',
|
|
'Ec2KeyName', 'mykeypair')]
|
|
|
|
:type options_to_remove: list
|
|
:param options_to_remove: A list of custom user-defined configuration
|
|
options to remove from the configuration set for this new
|
|
environment.
|
|
|
|
:type tier_name: string
|
|
:param tier_name: The name of the tier. Valid values are
|
|
"WebServer" and "Worker". Defaults to "WebServer".
|
|
The ``tier_name`` and a ``tier_type`` parameters are
|
|
related and the values provided must be valid.
|
|
The possible combinations are:
|
|
|
|
* "WebServer" and "Standard" (the default)
|
|
* "Worker" and "SQS/HTTP"
|
|
|
|
:type tier_type: string
|
|
:param tier_type: The type of the tier. Valid values are
|
|
"Standard" if ``tier_name`` is "WebServer" and "SQS/HTTP"
|
|
if ``tier_name`` is "Worker". Defaults to "Standard".
|
|
|
|
:type tier_version: string
|
|
:type tier_version: The version of the tier. Valid values
|
|
currently are "1.0". Defaults to "1.0".
|
|
|
|
:raises: TooManyEnvironmentsException, InsufficientPrivilegesException
|
|
|
|
"""
|
|
params = {'ApplicationName': application_name,
|
|
'EnvironmentName': environment_name}
|
|
if version_label:
|
|
params['VersionLabel'] = version_label
|
|
if template_name:
|
|
params['TemplateName'] = template_name
|
|
if solution_stack_name:
|
|
params['SolutionStackName'] = solution_stack_name
|
|
if cname_prefix:
|
|
params['CNAMEPrefix'] = cname_prefix
|
|
if description:
|
|
params['Description'] = description
|
|
if option_settings:
|
|
self._build_list_params(params, option_settings,
|
|
'OptionSettings.member',
|
|
('Namespace', 'OptionName', 'Value'))
|
|
if options_to_remove:
|
|
self.build_list_params(params, options_to_remove,
|
|
'OptionsToRemove.member')
|
|
if tier_name and tier_type and tier_version:
|
|
params['Tier.Name'] = tier_name
|
|
params['Tier.Type'] = tier_type
|
|
params['Tier.Version'] = tier_version
|
|
return self._get_response('CreateEnvironment', params)
|
|
|
|
def create_storage_location(self):
|
|
"""
|
|
Creates the Amazon S3 storage location for the account. This
|
|
location is used to store user log files.
|
|
|
|
:raises: TooManyBucketsException,
|
|
S3SubscriptionRequiredException,
|
|
InsufficientPrivilegesException
|
|
|
|
"""
|
|
return self._get_response('CreateStorageLocation', params={})
|
|
|
|
def delete_application(self, application_name,
|
|
terminate_env_by_force=None):
|
|
"""
|
|
Deletes the specified application along with all associated
|
|
versions and configurations. The application versions will not
|
|
be deleted from your Amazon S3 bucket.
|
|
|
|
:type application_name: string
|
|
:param application_name: The name of the application to delete.
|
|
|
|
:type terminate_env_by_force: boolean
|
|
:param terminate_env_by_force: When set to true, running
|
|
environments will be terminated before deleting the application.
|
|
|
|
:raises: OperationInProgressException
|
|
|
|
"""
|
|
params = {'ApplicationName': application_name}
|
|
if terminate_env_by_force:
|
|
params['TerminateEnvByForce'] = self._encode_bool(
|
|
terminate_env_by_force)
|
|
return self._get_response('DeleteApplication', params)
|
|
|
|
def delete_application_version(self, application_name, version_label,
|
|
delete_source_bundle=None):
|
|
"""Deletes the specified version from the specified application.
|
|
|
|
:type application_name: string
|
|
:param application_name: The name of the application to delete
|
|
releases from.
|
|
|
|
:type version_label: string
|
|
:param version_label: The label of the version to delete.
|
|
|
|
:type delete_source_bundle: boolean
|
|
:param delete_source_bundle: Indicates whether to delete the
|
|
associated source bundle from Amazon S3. Valid Values: true |
|
|
false
|
|
|
|
:raises: SourceBundleDeletionException,
|
|
InsufficientPrivilegesException,
|
|
OperationInProgressException,
|
|
S3LocationNotInServiceRegionException
|
|
"""
|
|
params = {'ApplicationName': application_name,
|
|
'VersionLabel': version_label}
|
|
if delete_source_bundle:
|
|
params['DeleteSourceBundle'] = self._encode_bool(
|
|
delete_source_bundle)
|
|
return self._get_response('DeleteApplicationVersion', params)
|
|
|
|
def delete_configuration_template(self, application_name, template_name):
|
|
"""Deletes the specified configuration template.
|
|
|
|
:type application_name: string
|
|
:param application_name: The name of the application to delete
|
|
the configuration template from.
|
|
|
|
:type template_name: string
|
|
:param template_name: The name of the configuration template to
|
|
delete.
|
|
|
|
:raises: OperationInProgressException
|
|
|
|
"""
|
|
params = {'ApplicationName': application_name,
|
|
'TemplateName': template_name}
|
|
return self._get_response('DeleteConfigurationTemplate', params)
|
|
|
|
def delete_environment_configuration(self, application_name,
|
|
environment_name):
|
|
"""
|
|
Deletes the draft configuration associated with the running
|
|
environment. Updating a running environment with any
|
|
configuration changes creates a draft configuration set. You can
|
|
get the draft configuration using DescribeConfigurationSettings
|
|
while the update is in progress or if the update fails. The
|
|
DeploymentStatus for the draft configuration indicates whether
|
|
the deployment is in process or has failed. The draft
|
|
configuration remains in existence until it is deleted with this
|
|
action.
|
|
|
|
:type application_name: string
|
|
:param application_name: The name of the application the
|
|
environment is associated with.
|
|
|
|
:type environment_name: string
|
|
:param environment_name: The name of the environment to delete
|
|
the draft configuration from.
|
|
|
|
"""
|
|
params = {'ApplicationName': application_name,
|
|
'EnvironmentName': environment_name}
|
|
return self._get_response('DeleteEnvironmentConfiguration', params)
|
|
|
|
def describe_application_versions(self, application_name=None,
|
|
version_labels=None):
|
|
"""Returns descriptions for existing application versions.
|
|
|
|
:type application_name: string
|
|
:param application_name: If specified, AWS Elastic Beanstalk restricts
|
|
the returned descriptions to only include ones that are associated
|
|
with the specified application.
|
|
|
|
:type version_labels: list
|
|
:param version_labels: If specified, restricts the returned
|
|
descriptions to only include ones that have the specified version
|
|
labels.
|
|
|
|
"""
|
|
params = {}
|
|
if application_name:
|
|
params['ApplicationName'] = application_name
|
|
if version_labels:
|
|
self.build_list_params(params, version_labels,
|
|
'VersionLabels.member')
|
|
return self._get_response('DescribeApplicationVersions', params)
|
|
|
|
def describe_applications(self, application_names=None):
|
|
"""Returns the descriptions of existing applications.
|
|
|
|
:type application_names: list
|
|
:param application_names: If specified, AWS Elastic Beanstalk restricts
|
|
the returned descriptions to only include those with the specified
|
|
names.
|
|
|
|
"""
|
|
params = {}
|
|
if application_names:
|
|
self.build_list_params(params, application_names,
|
|
'ApplicationNames.member')
|
|
return self._get_response('DescribeApplications', params)
|
|
|
|
def describe_configuration_options(self, application_name=None,
|
|
template_name=None,
|
|
environment_name=None,
|
|
solution_stack_name=None, options=None):
|
|
"""Describes configuration options used in a template or environment.
|
|
|
|
Describes the configuration options that are used in a
|
|
particular configuration template or environment, or that a
|
|
specified solution stack defines. The description includes the
|
|
values the options, their default values, and an indication of
|
|
the required action on a running environment if an option value
|
|
is changed.
|
|
|
|
:type application_name: string
|
|
:param application_name: The name of the application associated with
|
|
the configuration template or environment. Only needed if you want
|
|
to describe the configuration options associated with either the
|
|
configuration template or environment.
|
|
|
|
:type template_name: string
|
|
:param template_name: The name of the configuration template whose
|
|
configuration options you want to describe.
|
|
|
|
:type environment_name: string
|
|
:param environment_name: The name of the environment whose
|
|
configuration options you want to describe.
|
|
|
|
:type solution_stack_name: string
|
|
:param solution_stack_name: The name of the solution stack whose
|
|
configuration options you want to describe.
|
|
|
|
:type options: list
|
|
:param options: If specified, restricts the descriptions to only
|
|
the specified options.
|
|
"""
|
|
params = {}
|
|
if application_name:
|
|
params['ApplicationName'] = application_name
|
|
if template_name:
|
|
params['TemplateName'] = template_name
|
|
if environment_name:
|
|
params['EnvironmentName'] = environment_name
|
|
if solution_stack_name:
|
|
params['SolutionStackName'] = solution_stack_name
|
|
if options:
|
|
self.build_list_params(params, options, 'Options.member')
|
|
return self._get_response('DescribeConfigurationOptions', params)
|
|
|
|
def describe_configuration_settings(self, application_name,
|
|
template_name=None,
|
|
environment_name=None):
|
|
"""
|
|
Returns a description of the settings for the specified
|
|
configuration set, that is, either a configuration template or
|
|
the configuration set associated with a running environment.
|
|
When describing the settings for the configuration set
|
|
associated with a running environment, it is possible to receive
|
|
two sets of setting descriptions. One is the deployed
|
|
configuration set, and the other is a draft configuration of an
|
|
environment that is either in the process of deployment or that
|
|
failed to deploy.
|
|
|
|
:type application_name: string
|
|
:param application_name: The application for the environment or
|
|
configuration template.
|
|
|
|
:type template_name: string
|
|
:param template_name: The name of the configuration template to
|
|
describe. Conditional: You must specify either this parameter or
|
|
an EnvironmentName, but not both. If you specify both, AWS Elastic
|
|
Beanstalk returns an InvalidParameterCombination error. If you do
|
|
not specify either, AWS Elastic Beanstalk returns a
|
|
MissingRequiredParameter error.
|
|
|
|
:type environment_name: string
|
|
:param environment_name: The name of the environment to describe.
|
|
Condition: You must specify either this or a TemplateName, but not
|
|
both. If you specify both, AWS Elastic Beanstalk returns an
|
|
InvalidParameterCombination error. If you do not specify either,
|
|
AWS Elastic Beanstalk returns MissingRequiredParameter error.
|
|
"""
|
|
params = {'ApplicationName': application_name}
|
|
if template_name:
|
|
params['TemplateName'] = template_name
|
|
if environment_name:
|
|
params['EnvironmentName'] = environment_name
|
|
return self._get_response('DescribeConfigurationSettings', params)
|
|
|
|
def describe_environment_resources(self, environment_id=None,
|
|
environment_name=None):
|
|
"""Returns AWS resources for this environment.
|
|
|
|
:type environment_id: string
|
|
:param environment_id: The ID of the environment to retrieve AWS
|
|
resource usage data. Condition: You must specify either this or an
|
|
EnvironmentName, or both. If you do not specify either, AWS Elastic
|
|
Beanstalk returns MissingRequiredParameter error.
|
|
|
|
:type environment_name: string
|
|
:param environment_name: The name of the environment to retrieve
|
|
AWS resource usage data. Condition: You must specify either this
|
|
or an EnvironmentId, or both. If you do not specify either, AWS
|
|
Elastic Beanstalk returns MissingRequiredParameter error.
|
|
|
|
:raises: InsufficientPrivilegesException
|
|
"""
|
|
params = {}
|
|
if environment_id:
|
|
params['EnvironmentId'] = environment_id
|
|
if environment_name:
|
|
params['EnvironmentName'] = environment_name
|
|
return self._get_response('DescribeEnvironmentResources', params)
|
|
|
|
def describe_environments(self, application_name=None, version_label=None,
|
|
environment_ids=None, environment_names=None,
|
|
include_deleted=None,
|
|
included_deleted_back_to=None):
|
|
"""Returns descriptions for existing environments.
|
|
|
|
:type application_name: string
|
|
:param application_name: If specified, AWS Elastic Beanstalk restricts
|
|
the returned descriptions to include only those that are associated
|
|
with this application.
|
|
|
|
:type version_label: string
|
|
:param version_label: If specified, AWS Elastic Beanstalk restricts the
|
|
returned descriptions to include only those that are associated
|
|
with this application version.
|
|
|
|
:type environment_ids: list
|
|
:param environment_ids: If specified, AWS Elastic Beanstalk restricts
|
|
the returned descriptions to include only those that have the
|
|
specified IDs.
|
|
|
|
:type environment_names: list
|
|
:param environment_names: If specified, AWS Elastic Beanstalk restricts
|
|
the returned descriptions to include only those that have the
|
|
specified names.
|
|
|
|
:type include_deleted: boolean
|
|
:param include_deleted: Indicates whether to include deleted
|
|
environments: true: Environments that have been deleted after
|
|
IncludedDeletedBackTo are displayed. false: Do not include deleted
|
|
environments.
|
|
|
|
:type included_deleted_back_to: timestamp
|
|
:param included_deleted_back_to: If specified when IncludeDeleted is
|
|
set to true, then environments deleted after this date are
|
|
displayed.
|
|
"""
|
|
params = {}
|
|
if application_name:
|
|
params['ApplicationName'] = application_name
|
|
if version_label:
|
|
params['VersionLabel'] = version_label
|
|
if environment_ids:
|
|
self.build_list_params(params, environment_ids,
|
|
'EnvironmentIds.member')
|
|
if environment_names:
|
|
self.build_list_params(params, environment_names,
|
|
'EnvironmentNames.member')
|
|
if include_deleted:
|
|
params['IncludeDeleted'] = self._encode_bool(include_deleted)
|
|
if included_deleted_back_to:
|
|
params['IncludedDeletedBackTo'] = included_deleted_back_to
|
|
return self._get_response('DescribeEnvironments', params)
|
|
|
|
def describe_events(self, application_name=None, version_label=None,
|
|
template_name=None, environment_id=None,
|
|
environment_name=None, request_id=None, severity=None,
|
|
start_time=None, end_time=None, max_records=None,
|
|
next_token=None):
|
|
"""Returns event descriptions matching criteria up to the last 6 weeks.
|
|
|
|
:type application_name: string
|
|
:param application_name: If specified, AWS Elastic Beanstalk restricts
|
|
the returned descriptions to include only those associated with
|
|
this application.
|
|
|
|
:type version_label: string
|
|
:param version_label: If specified, AWS Elastic Beanstalk restricts the
|
|
returned descriptions to those associated with this application
|
|
version.
|
|
|
|
:type template_name: string
|
|
:param template_name: If specified, AWS Elastic Beanstalk restricts the
|
|
returned descriptions to those that are associated with this
|
|
environment configuration.
|
|
|
|
:type environment_id: string
|
|
:param environment_id: If specified, AWS Elastic Beanstalk restricts
|
|
the returned descriptions to those associated with this
|
|
environment.
|
|
|
|
:type environment_name: string
|
|
:param environment_name: If specified, AWS Elastic Beanstalk restricts
|
|
the returned descriptions to those associated with this
|
|
environment.
|
|
|
|
:type request_id: string
|
|
:param request_id: If specified, AWS Elastic Beanstalk restricts the
|
|
described events to include only those associated with this request
|
|
ID.
|
|
|
|
:type severity: string
|
|
:param severity: If specified, limits the events returned from this
|
|
call to include only those with the specified severity or higher.
|
|
|
|
:type start_time: timestamp
|
|
:param start_time: If specified, AWS Elastic Beanstalk restricts the
|
|
returned descriptions to those that occur on or after this time.
|
|
|
|
:type end_time: timestamp
|
|
:param end_time: If specified, AWS Elastic Beanstalk restricts the
|
|
returned descriptions to those that occur up to, but not including,
|
|
the EndTime.
|
|
|
|
:type max_records: integer
|
|
:param max_records: Specifies the maximum number of events that can be
|
|
returned, beginning with the most recent event.
|
|
|
|
:type next_token: string
|
|
:param next_token: Pagination token. If specified, the events return
|
|
the next batch of results.
|
|
"""
|
|
params = {}
|
|
if application_name:
|
|
params['ApplicationName'] = application_name
|
|
if version_label:
|
|
params['VersionLabel'] = version_label
|
|
if template_name:
|
|
params['TemplateName'] = template_name
|
|
if environment_id:
|
|
params['EnvironmentId'] = environment_id
|
|
if environment_name:
|
|
params['EnvironmentName'] = environment_name
|
|
if request_id:
|
|
params['RequestId'] = request_id
|
|
if severity:
|
|
params['Severity'] = severity
|
|
if start_time:
|
|
params['StartTime'] = start_time
|
|
if end_time:
|
|
params['EndTime'] = end_time
|
|
if max_records:
|
|
params['MaxRecords'] = max_records
|
|
if next_token:
|
|
params['NextToken'] = next_token
|
|
return self._get_response('DescribeEvents', params)
|
|
|
|
def list_available_solution_stacks(self):
|
|
"""Returns a list of the available solution stack names."""
|
|
return self._get_response('ListAvailableSolutionStacks', params={})
|
|
|
|
def rebuild_environment(self, environment_id=None, environment_name=None):
|
|
"""
|
|
Deletes and recreates all of the AWS resources (for example:
|
|
the Auto Scaling group, load balancer, etc.) for a specified
|
|
environment and forces a restart.
|
|
|
|
:type environment_id: string
|
|
:param environment_id: The ID of the environment to rebuild.
|
|
Condition: You must specify either this or an EnvironmentName, or
|
|
both. If you do not specify either, AWS Elastic Beanstalk returns
|
|
MissingRequiredParameter error.
|
|
|
|
:type environment_name: string
|
|
:param environment_name: The name of the environment to rebuild.
|
|
Condition: You must specify either this or an EnvironmentId, or
|
|
both. If you do not specify either, AWS Elastic Beanstalk returns
|
|
MissingRequiredParameter error.
|
|
|
|
:raises InvalidParameterValue: If environment_name doesn't refer to a currently active environment
|
|
:raises: InsufficientPrivilegesException
|
|
"""
|
|
params = {}
|
|
if environment_id:
|
|
params['EnvironmentId'] = environment_id
|
|
if environment_name:
|
|
params['EnvironmentName'] = environment_name
|
|
return self._get_response('RebuildEnvironment', params)
|
|
|
|
def request_environment_info(self, info_type='tail', environment_id=None,
|
|
environment_name=None):
|
|
"""
|
|
Initiates a request to compile the specified type of
|
|
information of the deployed environment. Setting the InfoType
|
|
to tail compiles the last lines from the application server log
|
|
files of every Amazon EC2 instance in your environment. Use
|
|
RetrieveEnvironmentInfo to access the compiled information.
|
|
|
|
:type info_type: string
|
|
:param info_type: The type of information to request.
|
|
|
|
:type environment_id: string
|
|
:param environment_id: The ID of the environment of the
|
|
requested data. If no such environment is found,
|
|
RequestEnvironmentInfo returns an InvalidParameterValue error.
|
|
Condition: You must specify either this or an EnvironmentName, or
|
|
both. If you do not specify either, AWS Elastic Beanstalk returns
|
|
MissingRequiredParameter error.
|
|
|
|
:type environment_name: string
|
|
:param environment_name: The name of the environment of the
|
|
requested data. If no such environment is found,
|
|
RequestEnvironmentInfo returns an InvalidParameterValue error.
|
|
Condition: You must specify either this or an EnvironmentId, or
|
|
both. If you do not specify either, AWS Elastic Beanstalk returns
|
|
MissingRequiredParameter error.
|
|
"""
|
|
params = {'InfoType': info_type}
|
|
if environment_id:
|
|
params['EnvironmentId'] = environment_id
|
|
if environment_name:
|
|
params['EnvironmentName'] = environment_name
|
|
return self._get_response('RequestEnvironmentInfo', params)
|
|
|
|
def restart_app_server(self, environment_id=None, environment_name=None):
|
|
"""
|
|
Causes the environment to restart the application container
|
|
server running on each Amazon EC2 instance.
|
|
|
|
:type environment_id: string
|
|
:param environment_id: The ID of the environment to restart the server
|
|
for. Condition: You must specify either this or an
|
|
EnvironmentName, or both. If you do not specify either, AWS Elastic
|
|
Beanstalk returns MissingRequiredParameter error.
|
|
|
|
:type environment_name: string
|
|
:param environment_name: The name of the environment to restart the
|
|
server for. Condition: You must specify either this or an
|
|
EnvironmentId, or both. If you do not specify either, AWS Elastic
|
|
Beanstalk returns MissingRequiredParameter error.
|
|
"""
|
|
params = {}
|
|
if environment_id:
|
|
params['EnvironmentId'] = environment_id
|
|
if environment_name:
|
|
params['EnvironmentName'] = environment_name
|
|
return self._get_response('RestartAppServer', params)
|
|
|
|
def retrieve_environment_info(self, info_type='tail', environment_id=None,
|
|
environment_name=None):
|
|
"""
|
|
Retrieves the compiled information from a RequestEnvironmentInfo
|
|
request.
|
|
|
|
:type info_type: string
|
|
:param info_type: The type of information to retrieve.
|
|
|
|
:type environment_id: string
|
|
:param environment_id: The ID of the data's environment. If no such
|
|
environment is found, returns an InvalidParameterValue error.
|
|
Condition: You must specify either this or an EnvironmentName, or
|
|
both. If you do not specify either, AWS Elastic Beanstalk returns
|
|
MissingRequiredParameter error.
|
|
|
|
:type environment_name: string
|
|
:param environment_name: The name of the data's environment. If no such
|
|
environment is found, returns an InvalidParameterValue error.
|
|
Condition: You must specify either this or an EnvironmentId, or
|
|
both. If you do not specify either, AWS Elastic Beanstalk returns
|
|
MissingRequiredParameter error.
|
|
"""
|
|
params = {'InfoType': info_type}
|
|
if environment_id:
|
|
params['EnvironmentId'] = environment_id
|
|
if environment_name:
|
|
params['EnvironmentName'] = environment_name
|
|
return self._get_response('RetrieveEnvironmentInfo', params)
|
|
|
|
def swap_environment_cnames(self, source_environment_id=None,
|
|
source_environment_name=None,
|
|
destination_environment_id=None,
|
|
destination_environment_name=None):
|
|
"""Swaps the CNAMEs of two environments.
|
|
|
|
:type source_environment_id: string
|
|
:param source_environment_id: The ID of the source environment.
|
|
Condition: You must specify at least the SourceEnvironmentID or the
|
|
SourceEnvironmentName. You may also specify both. If you specify
|
|
the SourceEnvironmentId, you must specify the
|
|
DestinationEnvironmentId.
|
|
|
|
:type source_environment_name: string
|
|
:param source_environment_name: The name of the source environment.
|
|
Condition: You must specify at least the SourceEnvironmentID or the
|
|
SourceEnvironmentName. You may also specify both. If you specify
|
|
the SourceEnvironmentName, you must specify the
|
|
DestinationEnvironmentName.
|
|
|
|
:type destination_environment_id: string
|
|
:param destination_environment_id: The ID of the destination
|
|
environment. Condition: You must specify at least the
|
|
DestinationEnvironmentID or the DestinationEnvironmentName. You may
|
|
also specify both. You must specify the SourceEnvironmentId with
|
|
the DestinationEnvironmentId.
|
|
|
|
:type destination_environment_name: string
|
|
:param destination_environment_name: The name of the destination
|
|
environment. Condition: You must specify at least the
|
|
DestinationEnvironmentID or the DestinationEnvironmentName. You may
|
|
also specify both. You must specify the SourceEnvironmentName with
|
|
the DestinationEnvironmentName.
|
|
"""
|
|
params = {}
|
|
if source_environment_id:
|
|
params['SourceEnvironmentId'] = source_environment_id
|
|
if source_environment_name:
|
|
params['SourceEnvironmentName'] = source_environment_name
|
|
if destination_environment_id:
|
|
params['DestinationEnvironmentId'] = destination_environment_id
|
|
if destination_environment_name:
|
|
params['DestinationEnvironmentName'] = destination_environment_name
|
|
return self._get_response('SwapEnvironmentCNAMEs', params)
|
|
|
|
def terminate_environment(self, environment_id=None, environment_name=None,
|
|
terminate_resources=None):
|
|
"""Terminates the specified environment.
|
|
|
|
:type environment_id: string
|
|
:param environment_id: The ID of the environment to terminate.
|
|
Condition: You must specify either this or an EnvironmentName, or
|
|
both. If you do not specify either, AWS Elastic Beanstalk returns
|
|
MissingRequiredParameter error.
|
|
|
|
:type environment_name: string
|
|
:param environment_name: The name of the environment to terminate.
|
|
Condition: You must specify either this or an EnvironmentId, or
|
|
both. If you do not specify either, AWS Elastic Beanstalk returns
|
|
MissingRequiredParameter error.
|
|
|
|
:type terminate_resources: boolean
|
|
:param terminate_resources: Indicates whether the associated AWS
|
|
resources should shut down when the environment is terminated:
|
|
true: (default) The user AWS resources (for example, the Auto
|
|
Scaling group, LoadBalancer, etc.) are terminated along with the
|
|
environment. false: The environment is removed from the AWS
|
|
Elastic Beanstalk but the AWS resources continue to operate. For
|
|
more information, see the AWS Elastic Beanstalk User Guide.
|
|
Default: true Valid Values: true | false
|
|
|
|
:raises: InsufficientPrivilegesException
|
|
"""
|
|
params = {}
|
|
if environment_id:
|
|
params['EnvironmentId'] = environment_id
|
|
if environment_name:
|
|
params['EnvironmentName'] = environment_name
|
|
if terminate_resources:
|
|
params['TerminateResources'] = self._encode_bool(
|
|
terminate_resources)
|
|
return self._get_response('TerminateEnvironment', params)
|
|
|
|
def update_application(self, application_name, description=None):
|
|
"""
|
|
Updates the specified application to have the specified
|
|
properties.
|
|
|
|
:type application_name: string
|
|
:param application_name: The name of the application to update.
|
|
If no such application is found, UpdateApplication returns an
|
|
InvalidParameterValue error.
|
|
|
|
:type description: string
|
|
:param description: A new description for the application. Default: If
|
|
not specified, AWS Elastic Beanstalk does not update the
|
|
description.
|
|
"""
|
|
params = {'ApplicationName': application_name}
|
|
if description:
|
|
params['Description'] = description
|
|
return self._get_response('UpdateApplication', params)
|
|
|
|
def update_application_version(self, application_name, version_label,
|
|
description=None):
|
|
"""Updates the application version to have the properties.
|
|
|
|
:type application_name: string
|
|
:param application_name: The name of the application associated with
|
|
this version. If no application is found with this name,
|
|
UpdateApplication returns an InvalidParameterValue error.
|
|
|
|
:type version_label: string
|
|
:param version_label: The name of the version to update. If no
|
|
application version is found with this label, UpdateApplication
|
|
returns an InvalidParameterValue error.
|
|
|
|
:type description: string
|
|
:param description: A new description for this release.
|
|
"""
|
|
params = {'ApplicationName': application_name,
|
|
'VersionLabel': version_label}
|
|
if description:
|
|
params['Description'] = description
|
|
return self._get_response('UpdateApplicationVersion', params)
|
|
|
|
def update_configuration_template(self, application_name, template_name,
|
|
description=None, option_settings=None,
|
|
options_to_remove=None):
|
|
"""
|
|
Updates the specified configuration template to have the
|
|
specified properties or configuration option values.
|
|
|
|
:type application_name: string
|
|
:param application_name: The name of the application associated with
|
|
the configuration template to update. If no application is found
|
|
with this name, UpdateConfigurationTemplate returns an
|
|
InvalidParameterValue error.
|
|
|
|
:type template_name: string
|
|
:param template_name: The name of the configuration template to update.
|
|
If no configuration template is found with this name,
|
|
UpdateConfigurationTemplate returns an InvalidParameterValue error.
|
|
|
|
:type description: string
|
|
:param description: A new description for the configuration.
|
|
|
|
:type option_settings: list
|
|
:param option_settings: A list of configuration option settings to
|
|
update with the new specified option value.
|
|
|
|
:type options_to_remove: list
|
|
:param options_to_remove: A list of configuration options to remove
|
|
from the configuration set. Constraint: You can remove only
|
|
UserDefined configuration options.
|
|
|
|
:raises: InsufficientPrivilegesException
|
|
"""
|
|
params = {'ApplicationName': application_name,
|
|
'TemplateName': template_name}
|
|
if description:
|
|
params['Description'] = description
|
|
if option_settings:
|
|
self._build_list_params(params, option_settings,
|
|
'OptionSettings.member',
|
|
('Namespace', 'OptionName', 'Value'))
|
|
if options_to_remove:
|
|
self.build_list_params(params, options_to_remove,
|
|
'OptionsToRemove.member')
|
|
return self._get_response('UpdateConfigurationTemplate', params)
|
|
|
|
def update_environment(self, environment_id=None, environment_name=None,
|
|
version_label=None, template_name=None,
|
|
description=None, option_settings=None,
|
|
options_to_remove=None, tier_name=None,
|
|
tier_type=None, tier_version='1.0'):
|
|
"""
|
|
Updates the environment description, deploys a new application
|
|
version, updates the configuration settings to an entirely new
|
|
configuration template, or updates select configuration option
|
|
values in the running environment. Attempting to update both
|
|
the release and configuration is not allowed and AWS Elastic
|
|
Beanstalk returns an InvalidParameterCombination error. When
|
|
updating the configuration settings to a new template or
|
|
individual settings, a draft configuration is created and
|
|
DescribeConfigurationSettings for this environment returns two
|
|
setting descriptions with different DeploymentStatus values.
|
|
|
|
:type environment_id: string
|
|
:param environment_id: The ID of the environment to update. If no
|
|
environment with this ID exists, AWS Elastic Beanstalk returns an
|
|
InvalidParameterValue error. Condition: You must specify either
|
|
this or an EnvironmentName, or both. If you do not specify either,
|
|
AWS Elastic Beanstalk returns MissingRequiredParameter error.
|
|
|
|
:type environment_name: string
|
|
:param environment_name: The name of the environment to update. If no
|
|
environment with this name exists, AWS Elastic Beanstalk returns an
|
|
InvalidParameterValue error. Condition: You must specify either
|
|
this or an EnvironmentId, or both. If you do not specify either,
|
|
AWS Elastic Beanstalk returns MissingRequiredParameter error.
|
|
|
|
:type version_label: string
|
|
:param version_label: If this parameter is specified, AWS Elastic
|
|
Beanstalk deploys the named application version to the environment.
|
|
If no such application version is found, returns an
|
|
InvalidParameterValue error.
|
|
|
|
:type template_name: string
|
|
:param template_name: If this parameter is specified, AWS Elastic
|
|
Beanstalk deploys this configuration template to the environment.
|
|
If no such configuration template is found, AWS Elastic Beanstalk
|
|
returns an InvalidParameterValue error.
|
|
|
|
:type description: string
|
|
:param description: If this parameter is specified, AWS Elastic
|
|
Beanstalk updates the description of this environment.
|
|
|
|
:type option_settings: list
|
|
:param option_settings: If specified, AWS Elastic Beanstalk updates the
|
|
configuration set associated with the running environment and sets
|
|
the specified configuration options to the requested value.
|
|
|
|
:type options_to_remove: list
|
|
:param options_to_remove: A list of custom user-defined configuration
|
|
options to remove from the configuration set for this environment.
|
|
|
|
:type tier_name: string
|
|
:param tier_name: The name of the tier. Valid values are
|
|
"WebServer" and "Worker". Defaults to "WebServer".
|
|
The ``tier_name`` and a ``tier_type`` parameters are
|
|
related and the values provided must be valid.
|
|
The possible combinations are:
|
|
|
|
* "WebServer" and "Standard" (the default)
|
|
* "Worker" and "SQS/HTTP"
|
|
|
|
:type tier_type: string
|
|
:param tier_type: The type of the tier. Valid values are
|
|
"Standard" if ``tier_name`` is "WebServer" and "SQS/HTTP"
|
|
if ``tier_name`` is "Worker". Defaults to "Standard".
|
|
|
|
:type tier_version: string
|
|
:type tier_version: The version of the tier. Valid values
|
|
currently are "1.0". Defaults to "1.0".
|
|
|
|
:raises: InsufficientPrivilegesException
|
|
"""
|
|
params = {}
|
|
if environment_id:
|
|
params['EnvironmentId'] = environment_id
|
|
if environment_name:
|
|
params['EnvironmentName'] = environment_name
|
|
if version_label:
|
|
params['VersionLabel'] = version_label
|
|
if template_name:
|
|
params['TemplateName'] = template_name
|
|
if description:
|
|
params['Description'] = description
|
|
if option_settings:
|
|
self._build_list_params(params, option_settings,
|
|
'OptionSettings.member',
|
|
('Namespace', 'OptionName', 'Value'))
|
|
if options_to_remove:
|
|
self.build_list_params(params, options_to_remove,
|
|
'OptionsToRemove.member')
|
|
if tier_name and tier_type and tier_version:
|
|
params['Tier.Name'] = tier_name
|
|
params['Tier.Type'] = tier_type
|
|
params['Tier.Version'] = tier_version
|
|
return self._get_response('UpdateEnvironment', params)
|
|
|
|
def validate_configuration_settings(self, application_name,
|
|
option_settings, template_name=None,
|
|
environment_name=None):
|
|
"""
|
|
Takes a set of configuration settings and either a
|
|
configuration template or environment, and determines whether
|
|
those values are valid. This action returns a list of messages
|
|
indicating any errors or warnings associated with the selection
|
|
of option values.
|
|
|
|
:type application_name: string
|
|
:param application_name: The name of the application that the
|
|
configuration template or environment belongs to.
|
|
|
|
:type template_name: string
|
|
:param template_name: The name of the configuration template to
|
|
validate the settings against. Condition: You cannot specify both
|
|
this and an environment name.
|
|
|
|
:type environment_name: string
|
|
:param environment_name: The name of the environment to validate the
|
|
settings against. Condition: You cannot specify both this and a
|
|
configuration template name.
|
|
|
|
:type option_settings: list
|
|
:param option_settings: A list of the options and desired values to
|
|
evaluate.
|
|
|
|
:raises: InsufficientPrivilegesException
|
|
"""
|
|
params = {'ApplicationName': application_name}
|
|
self._build_list_params(params, option_settings,
|
|
'OptionSettings.member',
|
|
('Namespace', 'OptionName', 'Value'))
|
|
if template_name:
|
|
params['TemplateName'] = template_name
|
|
if environment_name:
|
|
params['EnvironmentName'] = environment_name
|
|
return self._get_response('ValidateConfigurationSettings', params)
|
|
|
|
def _build_list_params(self, params, user_values, prefix, tuple_names):
|
|
# For params such as the ConfigurationOptionSettings,
|
|
# they can specify a list of tuples where each tuple maps to a specific
|
|
# arg. For example:
|
|
# user_values = [('foo', 'bar', 'baz']
|
|
# prefix=MyOption.member
|
|
# tuple_names=('One', 'Two', 'Three')
|
|
# would result in:
|
|
# MyOption.member.1.One = foo
|
|
# MyOption.member.1.Two = bar
|
|
# MyOption.member.1.Three = baz
|
|
for i, user_value in enumerate(user_values, 1):
|
|
current_prefix = '%s.%s' % (prefix, i)
|
|
for key, value in zip(tuple_names, user_value):
|
|
full_key = '%s.%s' % (current_prefix, key)
|
|
params[full_key] = value
|