Mercurial > repos > shellac > guppy_basecaller
diff env/lib/python3.7/site-packages/boto/opsworks/layer1.py @ 5:9b1c78e6ba9c draft default tip
"planemo upload commit 6c0a8142489327ece472c84e558c47da711a9142"
| author | shellac |
|---|---|
| date | Mon, 01 Jun 2020 08:59:25 -0400 |
| parents | 79f47841a781 |
| children |
line wrap: on
line diff
--- a/env/lib/python3.7/site-packages/boto/opsworks/layer1.py Thu May 14 16:47:39 2020 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3094 +0,0 @@ -# Copyright (c) 2014 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 -from boto.compat import json -from boto.connection import AWSQueryConnection -from boto.regioninfo import RegionInfo -from boto.exception import JSONResponseError -from boto.opsworks import exceptions - - -class OpsWorksConnection(AWSQueryConnection): - """ - AWS OpsWorks - Welcome to the AWS OpsWorks API Reference . This guide provides - descriptions, syntax, and usage examples about AWS OpsWorks - actions and data types, including common parameters and error - codes. - - AWS OpsWorks is an application management service that provides an - integrated experience for overseeing the complete application - lifecycle. For information about this product, go to the `AWS - OpsWorks`_ details page. - - **SDKs and CLI** - - The most common way to use the AWS OpsWorks API is by using the - AWS Command Line Interface (CLI) or by using one of the AWS SDKs - to implement applications in your preferred language. For more - information, see: - - - + `AWS CLI`_ - + `AWS SDK for Java`_ - + `AWS SDK for .NET`_ - + `AWS SDK for PHP 2`_ - + `AWS SDK for Ruby`_ - + `AWS SDK for Node.js`_ - + `AWS SDK for Python(Boto)`_ - - - **Endpoints** - - AWS OpsWorks supports only one endpoint, opsworks.us- - east-1.amazonaws.com (HTTPS), so you must connect to that - endpoint. You can then use the API to direct AWS OpsWorks to - create stacks in any AWS Region. - - **Chef Versions** - - When you call CreateStack, CloneStack, or UpdateStack we recommend - you use the `ConfigurationManager` parameter to specify the Chef - version, 0.9, 11.4, or 11.10. The default value is currently - 11.10. For more information, see `Chef Versions`_. - - You can still specify Chef 0.9 for your stack, but new features - are not available for Chef 0.9 stacks, and support is scheduled to - end on July 24, 2014. We do not recommend using Chef 0.9 for new - stacks, and we recommend migrating your existing Chef 0.9 stacks - to Chef 11.10 as soon as possible. - """ - APIVersion = "2013-02-18" - DefaultRegionName = "us-east-1" - DefaultRegionEndpoint = "opsworks.us-east-1.amazonaws.com" - ServiceName = "OpsWorks" - TargetPrefix = "OpsWorks_20130218" - ResponseError = JSONResponseError - - _faults = { - "ResourceNotFoundException": exceptions.ResourceNotFoundException, - "ValidationException": exceptions.ValidationException, - } - - - def __init__(self, **kwargs): - region = kwargs.pop('region', None) - if not region: - region = RegionInfo(self, self.DefaultRegionName, - self.DefaultRegionEndpoint) - - if 'host' not in kwargs or kwargs['host'] is None: - kwargs['host'] = region.endpoint - - super(OpsWorksConnection, self).__init__(**kwargs) - self.region = region - - def _required_auth_capability(self): - return ['hmac-v4'] - - def assign_instance(self, instance_id, layer_ids): - """ - Assign a registered instance to a custom layer. You cannot use - this action with instances that were created with AWS - OpsWorks. - - **Required Permissions**: To use this action, an IAM user must - have a Manage permissions level for the stack or an attached - policy that explicitly grants permissions. For more - information on user permissions, see `Managing User - Permissions`_. - - :type instance_id: string - :param instance_id: The instance ID. - - :type layer_ids: list - :param layer_ids: The layer ID, which must correspond to a custom - layer. You cannot assign a registered instance to a built-in layer. - - """ - params = { - 'InstanceId': instance_id, - 'LayerIds': layer_ids, - } - return self.make_request(action='AssignInstance', - body=json.dumps(params)) - - def assign_volume(self, volume_id, instance_id=None): - """ - Assigns one of the stack's registered Amazon EBS volumes to a - specified instance. The volume must first be registered with - the stack by calling RegisterVolume. For more information, see - `Resource Management`_. - - **Required Permissions**: To use this action, an IAM user must - have a Manage permissions level for the stack, or an attached - policy that explicitly grants permissions. For more - information on user permissions, see `Managing User - Permissions`_. - - :type volume_id: string - :param volume_id: The volume ID. - - :type instance_id: string - :param instance_id: The instance ID. - - """ - params = {'VolumeId': volume_id, } - if instance_id is not None: - params['InstanceId'] = instance_id - return self.make_request(action='AssignVolume', - body=json.dumps(params)) - - def associate_elastic_ip(self, elastic_ip, instance_id=None): - """ - Associates one of the stack's registered Elastic IP addresses - with a specified instance. The address must first be - registered with the stack by calling RegisterElasticIp. For - more information, see `Resource Management`_. - - **Required Permissions**: To use this action, an IAM user must - have a Manage permissions level for the stack, or an attached - policy that explicitly grants permissions. For more - information on user permissions, see `Managing User - Permissions`_. - - :type elastic_ip: string - :param elastic_ip: The Elastic IP address. - - :type instance_id: string - :param instance_id: The instance ID. - - """ - params = {'ElasticIp': elastic_ip, } - if instance_id is not None: - params['InstanceId'] = instance_id - return self.make_request(action='AssociateElasticIp', - body=json.dumps(params)) - - def attach_elastic_load_balancer(self, elastic_load_balancer_name, - layer_id): - """ - Attaches an Elastic Load Balancing load balancer to a - specified layer. For more information, see `Elastic Load - Balancing`_. - - - You must create the Elastic Load Balancing instance - separately, by using the Elastic Load Balancing console, API, - or CLI. For more information, see ` Elastic Load Balancing - Developer Guide`_. - - - **Required Permissions**: To use this action, an IAM user must - have a Manage permissions level for the stack, or an attached - policy that explicitly grants permissions. For more - information on user permissions, see `Managing User - Permissions`_. - - :type elastic_load_balancer_name: string - :param elastic_load_balancer_name: The Elastic Load Balancing - instance's name. - - :type layer_id: string - :param layer_id: The ID of the layer that the Elastic Load Balancing - instance is to be attached to. - - """ - params = { - 'ElasticLoadBalancerName': elastic_load_balancer_name, - 'LayerId': layer_id, - } - return self.make_request(action='AttachElasticLoadBalancer', - body=json.dumps(params)) - - def clone_stack(self, source_stack_id, service_role_arn, name=None, - region=None, vpc_id=None, attributes=None, - default_instance_profile_arn=None, default_os=None, - hostname_theme=None, default_availability_zone=None, - default_subnet_id=None, custom_json=None, - configuration_manager=None, chef_configuration=None, - use_custom_cookbooks=None, - use_opsworks_security_groups=None, - custom_cookbooks_source=None, default_ssh_key_name=None, - clone_permissions=None, clone_app_ids=None, - default_root_device_type=None): - """ - Creates a clone of a specified stack. For more information, - see `Clone a Stack`_. - - **Required Permissions**: To use this action, an IAM user must - have an attached policy that explicitly grants permissions. - For more information on user permissions, see `Managing User - Permissions`_. - - :type source_stack_id: string - :param source_stack_id: The source stack ID. - - :type name: string - :param name: The cloned stack name. - - :type region: string - :param region: The cloned stack AWS region, such as "us-east-1". For - more information about AWS regions, see `Regions and Endpoints`_. - - :type vpc_id: string - :param vpc_id: The ID of the VPC that the cloned stack is to be - launched into. It must be in the specified region. All instances - are launched into this VPC, and you cannot change the ID later. - - + If your account supports EC2 Classic, the default value is no VPC. - + If your account does not support EC2 Classic, the default value is - the default VPC for the specified region. - - - If the VPC ID corresponds to a default VPC and you have specified - either the `DefaultAvailabilityZone` or the `DefaultSubnetId` - parameter only, AWS OpsWorks infers the value of the other - parameter. If you specify neither parameter, AWS OpsWorks sets - these parameters to the first valid Availability Zone for the - specified region and the corresponding default VPC subnet ID, - respectively. - - If you specify a nondefault VPC ID, note the following: - - - + It must belong to a VPC in your account that is in the specified - region. - + You must specify a value for `DefaultSubnetId`. - - - For more information on how to use AWS OpsWorks with a VPC, see - `Running a Stack in a VPC`_. For more information on default VPC - and EC2 Classic, see `Supported Platforms`_. - - :type attributes: map - :param attributes: A list of stack attributes and values as key/value - pairs to be added to the cloned stack. - - :type service_role_arn: string - :param service_role_arn: - The stack AWS Identity and Access Management (IAM) role, which allows - AWS OpsWorks to work with AWS resources on your behalf. You must - set this parameter to the Amazon Resource Name (ARN) for an - existing IAM role. If you create a stack by using the AWS OpsWorks - console, it creates the role for you. You can obtain an existing - stack's IAM ARN programmatically by calling DescribePermissions. - For more information about IAM ARNs, see `Using Identifiers`_. - - - You must set this parameter to a valid service role ARN or the action - will fail; there is no default value. You can specify the source - stack's service role ARN, if you prefer, but you must do so - explicitly. - - :type default_instance_profile_arn: string - :param default_instance_profile_arn: The ARN of an IAM profile that is - the default profile for all of the stack's EC2 instances. For more - information about IAM ARNs, see `Using Identifiers`_. - - :type default_os: string - :param default_os: The stacks's operating system, which must be set to - one of the following. - - + Standard operating systems: an Amazon Linux version such as `Amazon - Linux 2014.09`, `Ubuntu 12.04 LTS`, or `Ubuntu 14.04 LTS`. - + Custom AMIs: `Custom`. You specify the custom AMI you want to use - when you create instances. - - - The default option is the current Amazon Linux version. - - :type hostname_theme: string - :param hostname_theme: The stack's host name theme, with spaces are - replaced by underscores. The theme is used to generate host names - for the stack's instances. By default, `HostnameTheme` is set to - `Layer_Dependent`, which creates host names by appending integers - to the layer's short name. The other themes are: - - + `Baked_Goods` - + `Clouds` - + `European_Cities` - + `Fruits` - + `Greek_Deities` - + `Legendary_Creatures_from_Japan` - + `Planets_and_Moons` - + `Roman_Deities` - + `Scottish_Islands` - + `US_Cities` - + `Wild_Cats` - - - To obtain a generated host name, call `GetHostNameSuggestion`, which - returns a host name based on the current theme. - - :type default_availability_zone: string - :param default_availability_zone: The cloned stack's default - Availability Zone, which must be in the specified region. For more - information, see `Regions and Endpoints`_. If you also specify a - value for `DefaultSubnetId`, the subnet must be in the same zone. - For more information, see the `VpcId` parameter description. - - :type default_subnet_id: string - :param default_subnet_id: The stack's default VPC subnet ID. This - parameter is required if you specify a value for the `VpcId` - parameter. All instances are launched into this subnet unless you - specify otherwise when you create the instance. If you also specify - a value for `DefaultAvailabilityZone`, the subnet must be in that - zone. For information on default values and when this parameter is - required, see the `VpcId` parameter description. - - :type custom_json: string - :param custom_json: A string that contains user-defined, custom JSON. - It is used to override the corresponding default stack - configuration JSON values. The string should be in the following - format and must escape characters such as '"'.: - `"{\"key1\": \"value1\", \"key2\": \"value2\",...}"` - - For more information on custom JSON, see `Use Custom JSON to Modify the - Stack Configuration JSON`_ - - :type configuration_manager: dict - :param configuration_manager: The configuration manager. When you clone - a stack we recommend that you use the configuration manager to - specify the Chef version, 0.9, 11.4, or 11.10. The default value is - currently 11.4. - - :type chef_configuration: dict - :param chef_configuration: A `ChefConfiguration` object that specifies - whether to enable Berkshelf and the Berkshelf version on Chef 11.10 - stacks. For more information, see `Create a New Stack`_. - - :type use_custom_cookbooks: boolean - :param use_custom_cookbooks: Whether to use custom cookbooks. - - :type use_opsworks_security_groups: boolean - :param use_opsworks_security_groups: Whether to associate the AWS - OpsWorks built-in security groups with the stack's layers. - AWS OpsWorks provides a standard set of built-in security groups, one - for each layer, which are associated with layers by default. With - `UseOpsworksSecurityGroups` you can instead provide your own custom - security groups. `UseOpsworksSecurityGroups` has the following - settings: - - - + True - AWS OpsWorks automatically associates the appropriate built-in - security group with each layer (default setting). You can associate - additional security groups with a layer after you create it but you - cannot delete the built-in security group. - + False - AWS OpsWorks does not associate built-in security groups with - layers. You must create appropriate EC2 security groups and - associate a security group with each layer that you create. - However, you can still manually associate a built-in security group - with a layer on creation; custom security groups are required only - for those layers that need custom settings. - - - For more information, see `Create a New Stack`_. - - :type custom_cookbooks_source: dict - :param custom_cookbooks_source: Contains the information required to - retrieve an app or cookbook from a repository. For more - information, see `Creating Apps`_ or `Custom Recipes and - Cookbooks`_. - - :type default_ssh_key_name: string - :param default_ssh_key_name: A default SSH key for the stack instances. - You can override this value when you create or update an instance. - - :type clone_permissions: boolean - :param clone_permissions: Whether to clone the source stack's - permissions. - - :type clone_app_ids: list - :param clone_app_ids: A list of source stack app IDs to be included in - the cloned stack. - - :type default_root_device_type: string - :param default_root_device_type: The default root device type. This - value is used by default for all instances in the cloned stack, but - you can override it when you create an instance. For more - information, see `Storage for the Root Device`_. - - """ - params = { - 'SourceStackId': source_stack_id, - 'ServiceRoleArn': service_role_arn, - } - if name is not None: - params['Name'] = name - if region is not None: - params['Region'] = region - if vpc_id is not None: - params['VpcId'] = vpc_id - if attributes is not None: - params['Attributes'] = attributes - if default_instance_profile_arn is not None: - params['DefaultInstanceProfileArn'] = default_instance_profile_arn - if default_os is not None: - params['DefaultOs'] = default_os - if hostname_theme is not None: - params['HostnameTheme'] = hostname_theme - if default_availability_zone is not None: - params['DefaultAvailabilityZone'] = default_availability_zone - if default_subnet_id is not None: - params['DefaultSubnetId'] = default_subnet_id - if custom_json is not None: - params['CustomJson'] = custom_json - if configuration_manager is not None: - params['ConfigurationManager'] = configuration_manager - if chef_configuration is not None: - params['ChefConfiguration'] = chef_configuration - if use_custom_cookbooks is not None: - params['UseCustomCookbooks'] = use_custom_cookbooks - if use_opsworks_security_groups is not None: - params['UseOpsworksSecurityGroups'] = use_opsworks_security_groups - if custom_cookbooks_source is not None: - params['CustomCookbooksSource'] = custom_cookbooks_source - if default_ssh_key_name is not None: - params['DefaultSshKeyName'] = default_ssh_key_name - if clone_permissions is not None: - params['ClonePermissions'] = clone_permissions - if clone_app_ids is not None: - params['CloneAppIds'] = clone_app_ids - if default_root_device_type is not None: - params['DefaultRootDeviceType'] = default_root_device_type - return self.make_request(action='CloneStack', - body=json.dumps(params)) - - def create_app(self, stack_id, name, type, shortname=None, - description=None, data_sources=None, app_source=None, - domains=None, enable_ssl=None, ssl_configuration=None, - attributes=None, environment=None): - """ - Creates an app for a specified stack. For more information, - see `Creating Apps`_. - - **Required Permissions**: To use this action, an IAM user must - have a Manage permissions level for the stack, or an attached - policy that explicitly grants permissions. For more - information on user permissions, see `Managing User - Permissions`_. - - :type stack_id: string - :param stack_id: The stack ID. - - :type shortname: string - :param shortname: The app's short name. - - :type name: string - :param name: The app name. - - :type description: string - :param description: A description of the app. - - :type data_sources: list - :param data_sources: The app's data source. - - :type type: string - :param type: The app type. Each supported type is associated with a - particular layer. For example, PHP applications are associated with - a PHP layer. AWS OpsWorks deploys an application to those instances - that are members of the corresponding layer. - - :type app_source: dict - :param app_source: A `Source` object that specifies the app repository. - - :type domains: list - :param domains: The app virtual host settings, with multiple domains - separated by commas. For example: `'www.example.com, example.com'` - - :type enable_ssl: boolean - :param enable_ssl: Whether to enable SSL for the app. - - :type ssl_configuration: dict - :param ssl_configuration: An `SslConfiguration` object with the SSL - configuration. - - :type attributes: map - :param attributes: One or more user-defined key/value pairs to be added - to the stack attributes. - - :type environment: list - :param environment: - An array of `EnvironmentVariable` objects that specify environment - variables to be associated with the app. You can specify up to ten - environment variables. After you deploy the app, these variables - are defined on the associated app server instance. - - This parameter is supported only by Chef 11.10 stacks. If you have - specified one or more environment variables, you cannot modify the - stack's Chef version. - - """ - params = {'StackId': stack_id, 'Name': name, 'Type': type, } - if shortname is not None: - params['Shortname'] = shortname - if description is not None: - params['Description'] = description - if data_sources is not None: - params['DataSources'] = data_sources - if app_source is not None: - params['AppSource'] = app_source - if domains is not None: - params['Domains'] = domains - if enable_ssl is not None: - params['EnableSsl'] = enable_ssl - if ssl_configuration is not None: - params['SslConfiguration'] = ssl_configuration - if attributes is not None: - params['Attributes'] = attributes - if environment is not None: - params['Environment'] = environment - return self.make_request(action='CreateApp', - body=json.dumps(params)) - - def create_deployment(self, stack_id, command, app_id=None, - instance_ids=None, comment=None, custom_json=None): - """ - Runs deployment or stack commands. For more information, see - `Deploying Apps`_ and `Run Stack Commands`_. - - **Required Permissions**: To use this action, an IAM user must - have a Deploy or Manage permissions level for the stack, or an - attached policy that explicitly grants permissions. For more - information on user permissions, see `Managing User - Permissions`_. - - :type stack_id: string - :param stack_id: The stack ID. - - :type app_id: string - :param app_id: The app ID. This parameter is required for app - deployments, but not for other deployment commands. - - :type instance_ids: list - :param instance_ids: The instance IDs for the deployment targets. - - :type command: dict - :param command: A `DeploymentCommand` object that specifies the - deployment command and any associated arguments. - - :type comment: string - :param comment: A user-defined comment. - - :type custom_json: string - :param custom_json: A string that contains user-defined, custom JSON. - It is used to override the corresponding default stack - configuration JSON values. The string should be in the following - format and must escape characters such as '"'.: - `"{\"key1\": \"value1\", \"key2\": \"value2\",...}"` - - For more information on custom JSON, see `Use Custom JSON to Modify the - Stack Configuration JSON`_. - - """ - params = {'StackId': stack_id, 'Command': command, } - if app_id is not None: - params['AppId'] = app_id - if instance_ids is not None: - params['InstanceIds'] = instance_ids - if comment is not None: - params['Comment'] = comment - if custom_json is not None: - params['CustomJson'] = custom_json - return self.make_request(action='CreateDeployment', - body=json.dumps(params)) - - def create_instance(self, stack_id, layer_ids, instance_type, - auto_scaling_type=None, hostname=None, os=None, - ami_id=None, ssh_key_name=None, - availability_zone=None, virtualization_type=None, - subnet_id=None, architecture=None, - root_device_type=None, install_updates_on_boot=None, - ebs_optimized=None): - """ - Creates an instance in a specified stack. For more - information, see `Adding an Instance to a Layer`_. - - **Required Permissions**: To use this action, an IAM user must - have a Manage permissions level for the stack, or an attached - policy that explicitly grants permissions. For more - information on user permissions, see `Managing User - Permissions`_. - - :type stack_id: string - :param stack_id: The stack ID. - - :type layer_ids: list - :param layer_ids: An array that contains the instance layer IDs. - - :type instance_type: string - :param instance_type: The instance type. AWS OpsWorks supports all - instance types except Cluster Compute, Cluster GPU, and High Memory - Cluster. For more information, see `Instance Families and Types`_. - The parameter values that you use to specify the various types are - in the API Name column of the Available Instance Types table. - - :type auto_scaling_type: string - :param auto_scaling_type: For load-based or time-based instances, the - type. - - :type hostname: string - :param hostname: The instance host name. - - :type os: string - :param os: The instance's operating system, which must be set to one of - the following. - - + Standard operating systems: an Amazon Linux version such as `Amazon - Linux 2014.09`, `Ubuntu 12.04 LTS`, or `Ubuntu 14.04 LTS`. - + Custom AMIs: `Custom` - - - The default option is the current Amazon Linux version. If you set this - parameter to `Custom`, you must use the CreateInstance action's - AmiId parameter to specify the custom AMI that you want to use. For - more information on the standard operating systems, see `Operating - Systems`_For more information on how to use custom AMIs with - OpsWorks, see `Using Custom AMIs`_. - - :type ami_id: string - :param ami_id: - A custom AMI ID to be used to create the instance. The AMI should be - based on one of the standard AWS OpsWorks AMIs: Amazon Linux, - Ubuntu 12.04 LTS, or Ubuntu 14.04 LTS. For more information, see - `Instances`_. - - If you specify a custom AMI, you must set `Os` to `Custom`. - - :type ssh_key_name: string - :param ssh_key_name: The instance SSH key name. - - :type availability_zone: string - :param availability_zone: The instance Availability Zone. For more - information, see `Regions and Endpoints`_. - - :type virtualization_type: string - :param virtualization_type: The instance's virtualization type, - `paravirtual` or `hvm`. - - :type subnet_id: string - :param subnet_id: The ID of the instance's subnet. If the stack is - running in a VPC, you can use this parameter to override the - stack's default subnet ID value and direct AWS OpsWorks to launch - the instance in a different subnet. - - :type architecture: string - :param architecture: The instance architecture. The default option is - `x86_64`. Instance types do not necessarily support both - architectures. For a list of the architectures that are supported - by the different instance types, see `Instance Families and - Types`_. - - :type root_device_type: string - :param root_device_type: The instance root device type. For more - information, see `Storage for the Root Device`_. - - :type install_updates_on_boot: boolean - :param install_updates_on_boot: - Whether to install operating system and package updates when the - instance boots. The default value is `True`. To control when - updates are installed, set this value to `False`. You must then - update your instances manually by using CreateDeployment to run the - `update_dependencies` stack command or manually running `yum` - (Amazon Linux) or `apt-get` (Ubuntu) on the instances. - - - We strongly recommend using the default value of `True` to ensure that - your instances have the latest security updates. - - :type ebs_optimized: boolean - :param ebs_optimized: Whether to create an Amazon EBS-optimized - instance. - - """ - params = { - 'StackId': stack_id, - 'LayerIds': layer_ids, - 'InstanceType': instance_type, - } - if auto_scaling_type is not None: - params['AutoScalingType'] = auto_scaling_type - if hostname is not None: - params['Hostname'] = hostname - if os is not None: - params['Os'] = os - if ami_id is not None: - params['AmiId'] = ami_id - if ssh_key_name is not None: - params['SshKeyName'] = ssh_key_name - if availability_zone is not None: - params['AvailabilityZone'] = availability_zone - if virtualization_type is not None: - params['VirtualizationType'] = virtualization_type - if subnet_id is not None: - params['SubnetId'] = subnet_id - if architecture is not None: - params['Architecture'] = architecture - if root_device_type is not None: - params['RootDeviceType'] = root_device_type - if install_updates_on_boot is not None: - params['InstallUpdatesOnBoot'] = install_updates_on_boot - if ebs_optimized is not None: - params['EbsOptimized'] = ebs_optimized - return self.make_request(action='CreateInstance', - body=json.dumps(params)) - - def create_layer(self, stack_id, type, name, shortname, attributes=None, - custom_instance_profile_arn=None, - custom_security_group_ids=None, packages=None, - volume_configurations=None, enable_auto_healing=None, - auto_assign_elastic_ips=None, - auto_assign_public_ips=None, custom_recipes=None, - install_updates_on_boot=None, - use_ebs_optimized_instances=None, - lifecycle_event_configuration=None): - """ - Creates a layer. For more information, see `How to Create a - Layer`_. - - - You should use **CreateLayer** for noncustom layer types such - as PHP App Server only if the stack does not have an existing - layer of that type. A stack can have at most one instance of - each noncustom layer; if you attempt to create a second - instance, **CreateLayer** fails. A stack can have an arbitrary - number of custom layers, so you can call **CreateLayer** as - many times as you like for that layer type. - - - **Required Permissions**: To use this action, an IAM user must - have a Manage permissions level for the stack, or an attached - policy that explicitly grants permissions. For more - information on user permissions, see `Managing User - Permissions`_. - - :type stack_id: string - :param stack_id: The layer stack ID. - - :type type: string - :param type: The layer type. A stack cannot have more than one built-in - layer of the same type. It can have any number of custom layers. - - :type name: string - :param name: The layer name, which is used by the console. - - :type shortname: string - :param shortname: The layer short name, which is used internally by AWS - OpsWorks and by Chef recipes. The short name is also used as the - name for the directory where your app files are installed. It can - have a maximum of 200 characters, which are limited to the - alphanumeric characters, '-', '_', and '.'. - - :type attributes: map - :param attributes: One or more user-defined key/value pairs to be added - to the stack attributes. - - :type custom_instance_profile_arn: string - :param custom_instance_profile_arn: The ARN of an IAM profile that to - be used for the layer's EC2 instances. For more information about - IAM ARNs, see `Using Identifiers`_. - - :type custom_security_group_ids: list - :param custom_security_group_ids: An array containing the layer custom - security group IDs. - - :type packages: list - :param packages: An array of `Package` objects that describe the layer - packages. - - :type volume_configurations: list - :param volume_configurations: A `VolumeConfigurations` object that - describes the layer's Amazon EBS volumes. - - :type enable_auto_healing: boolean - :param enable_auto_healing: Whether to disable auto healing for the - layer. - - :type auto_assign_elastic_ips: boolean - :param auto_assign_elastic_ips: Whether to automatically assign an - `Elastic IP address`_ to the layer's instances. For more - information, see `How to Edit a Layer`_. - - :type auto_assign_public_ips: boolean - :param auto_assign_public_ips: For stacks that are running in a VPC, - whether to automatically assign a public IP address to the layer's - instances. For more information, see `How to Edit a Layer`_. - - :type custom_recipes: dict - :param custom_recipes: A `LayerCustomRecipes` object that specifies the - layer custom recipes. - - :type install_updates_on_boot: boolean - :param install_updates_on_boot: - Whether to install operating system and package updates when the - instance boots. The default value is `True`. To control when - updates are installed, set this value to `False`. You must then - update your instances manually by using CreateDeployment to run the - `update_dependencies` stack command or manually running `yum` - (Amazon Linux) or `apt-get` (Ubuntu) on the instances. - - - We strongly recommend using the default value of `True`, to ensure that - your instances have the latest security updates. - - :type use_ebs_optimized_instances: boolean - :param use_ebs_optimized_instances: Whether to use Amazon EBS-optimized - instances. - - :type lifecycle_event_configuration: dict - :param lifecycle_event_configuration: A LifeCycleEventConfiguration - object that you can use to configure the Shutdown event to specify - an execution timeout and enable or disable Elastic Load Balancer - connection draining. - - """ - params = { - 'StackId': stack_id, - 'Type': type, - 'Name': name, - 'Shortname': shortname, - } - if attributes is not None: - params['Attributes'] = attributes - if custom_instance_profile_arn is not None: - params['CustomInstanceProfileArn'] = custom_instance_profile_arn - if custom_security_group_ids is not None: - params['CustomSecurityGroupIds'] = custom_security_group_ids - if packages is not None: - params['Packages'] = packages - if volume_configurations is not None: - params['VolumeConfigurations'] = volume_configurations - if enable_auto_healing is not None: - params['EnableAutoHealing'] = enable_auto_healing - if auto_assign_elastic_ips is not None: - params['AutoAssignElasticIps'] = auto_assign_elastic_ips - if auto_assign_public_ips is not None: - params['AutoAssignPublicIps'] = auto_assign_public_ips - if custom_recipes is not None: - params['CustomRecipes'] = custom_recipes - if install_updates_on_boot is not None: - params['InstallUpdatesOnBoot'] = install_updates_on_boot - if use_ebs_optimized_instances is not None: - params['UseEbsOptimizedInstances'] = use_ebs_optimized_instances - if lifecycle_event_configuration is not None: - params['LifecycleEventConfiguration'] = lifecycle_event_configuration - return self.make_request(action='CreateLayer', - body=json.dumps(params)) - - def create_stack(self, name, region, service_role_arn, - default_instance_profile_arn, vpc_id=None, - attributes=None, default_os=None, hostname_theme=None, - default_availability_zone=None, default_subnet_id=None, - custom_json=None, configuration_manager=None, - chef_configuration=None, use_custom_cookbooks=None, - use_opsworks_security_groups=None, - custom_cookbooks_source=None, default_ssh_key_name=None, - default_root_device_type=None): - """ - Creates a new stack. For more information, see `Create a New - Stack`_. - - **Required Permissions**: To use this action, an IAM user must - have an attached policy that explicitly grants permissions. - For more information on user permissions, see `Managing User - Permissions`_. - - :type name: string - :param name: The stack name. - - :type region: string - :param region: The stack AWS region, such as "us-east-1". For more - information about Amazon regions, see `Regions and Endpoints`_. - - :type vpc_id: string - :param vpc_id: The ID of the VPC that the stack is to be launched into. - It must be in the specified region. All instances are launched into - this VPC, and you cannot change the ID later. - - + If your account supports EC2 Classic, the default value is no VPC. - + If your account does not support EC2 Classic, the default value is - the default VPC for the specified region. - - - If the VPC ID corresponds to a default VPC and you have specified - either the `DefaultAvailabilityZone` or the `DefaultSubnetId` - parameter only, AWS OpsWorks infers the value of the other - parameter. If you specify neither parameter, AWS OpsWorks sets - these parameters to the first valid Availability Zone for the - specified region and the corresponding default VPC subnet ID, - respectively. - - If you specify a nondefault VPC ID, note the following: - - - + It must belong to a VPC in your account that is in the specified - region. - + You must specify a value for `DefaultSubnetId`. - - - For more information on how to use AWS OpsWorks with a VPC, see - `Running a Stack in a VPC`_. For more information on default VPC - and EC2 Classic, see `Supported Platforms`_. - - :type attributes: map - :param attributes: One or more user-defined key/value pairs to be added - to the stack attributes. - - :type service_role_arn: string - :param service_role_arn: The stack AWS Identity and Access Management - (IAM) role, which allows AWS OpsWorks to work with AWS resources on - your behalf. You must set this parameter to the Amazon Resource - Name (ARN) for an existing IAM role. For more information about IAM - ARNs, see `Using Identifiers`_. - - :type default_instance_profile_arn: string - :param default_instance_profile_arn: The ARN of an IAM profile that is - the default profile for all of the stack's EC2 instances. For more - information about IAM ARNs, see `Using Identifiers`_. - - :type default_os: string - :param default_os: The stack's operating system, which must be set to - one of the following. - - + Standard operating systems: an Amazon Linux version such as `Amazon - Linux 2014.09`, `Ubuntu 12.04 LTS`, or `Ubuntu 14.04 LTS`. - + Custom AMIs: `Custom`. You specify the custom AMI you want to use - when you create instances. - - - The default option is the current Amazon Linux version. - - :type hostname_theme: string - :param hostname_theme: The stack's host name theme, with spaces are - replaced by underscores. The theme is used to generate host names - for the stack's instances. By default, `HostnameTheme` is set to - `Layer_Dependent`, which creates host names by appending integers - to the layer's short name. The other themes are: - - + `Baked_Goods` - + `Clouds` - + `European_Cities` - + `Fruits` - + `Greek_Deities` - + `Legendary_Creatures_from_Japan` - + `Planets_and_Moons` - + `Roman_Deities` - + `Scottish_Islands` - + `US_Cities` - + `Wild_Cats` - - - To obtain a generated host name, call `GetHostNameSuggestion`, which - returns a host name based on the current theme. - - :type default_availability_zone: string - :param default_availability_zone: The stack's default Availability - Zone, which must be in the specified region. For more information, - see `Regions and Endpoints`_. If you also specify a value for - `DefaultSubnetId`, the subnet must be in the same zone. For more - information, see the `VpcId` parameter description. - - :type default_subnet_id: string - :param default_subnet_id: The stack's default VPC subnet ID. This - parameter is required if you specify a value for the `VpcId` - parameter. All instances are launched into this subnet unless you - specify otherwise when you create the instance. If you also specify - a value for `DefaultAvailabilityZone`, the subnet must be in that - zone. For information on default values and when this parameter is - required, see the `VpcId` parameter description. - - :type custom_json: string - :param custom_json: A string that contains user-defined, custom JSON. - It is used to override the corresponding default stack - configuration JSON values. The string should be in the following - format and must escape characters such as '"'.: - `"{\"key1\": \"value1\", \"key2\": \"value2\",...}"` - - For more information on custom JSON, see `Use Custom JSON to Modify the - Stack Configuration JSON`_. - - :type configuration_manager: dict - :param configuration_manager: The configuration manager. When you clone - a stack we recommend that you use the configuration manager to - specify the Chef version, 0.9, 11.4, or 11.10. The default value is - currently 11.4. - - :type chef_configuration: dict - :param chef_configuration: A `ChefConfiguration` object that specifies - whether to enable Berkshelf and the Berkshelf version on Chef 11.10 - stacks. For more information, see `Create a New Stack`_. - - :type use_custom_cookbooks: boolean - :param use_custom_cookbooks: Whether the stack uses custom cookbooks. - - :type use_opsworks_security_groups: boolean - :param use_opsworks_security_groups: Whether to associate the AWS - OpsWorks built-in security groups with the stack's layers. - AWS OpsWorks provides a standard set of built-in security groups, one - for each layer, which are associated with layers by default. With - `UseOpsworksSecurityGroups` you can instead provide your own custom - security groups. `UseOpsworksSecurityGroups` has the following - settings: - - - + True - AWS OpsWorks automatically associates the appropriate built-in - security group with each layer (default setting). You can associate - additional security groups with a layer after you create it but you - cannot delete the built-in security group. - + False - AWS OpsWorks does not associate built-in security groups with - layers. You must create appropriate EC2 security groups and - associate a security group with each layer that you create. - However, you can still manually associate a built-in security group - with a layer on creation; custom security groups are required only - for those layers that need custom settings. - - - For more information, see `Create a New Stack`_. - - :type custom_cookbooks_source: dict - :param custom_cookbooks_source: Contains the information required to - retrieve an app or cookbook from a repository. For more - information, see `Creating Apps`_ or `Custom Recipes and - Cookbooks`_. - - :type default_ssh_key_name: string - :param default_ssh_key_name: A default SSH key for the stack instances. - You can override this value when you create or update an instance. - - :type default_root_device_type: string - :param default_root_device_type: The default root device type. This - value is used by default for all instances in the stack, but you - can override it when you create an instance. The default option is - `instance-store`. For more information, see `Storage for the Root - Device`_. - - """ - params = { - 'Name': name, - 'Region': region, - 'ServiceRoleArn': service_role_arn, - 'DefaultInstanceProfileArn': default_instance_profile_arn, - } - if vpc_id is not None: - params['VpcId'] = vpc_id - if attributes is not None: - params['Attributes'] = attributes - if default_os is not None: - params['DefaultOs'] = default_os - if hostname_theme is not None: - params['HostnameTheme'] = hostname_theme - if default_availability_zone is not None: - params['DefaultAvailabilityZone'] = default_availability_zone - if default_subnet_id is not None: - params['DefaultSubnetId'] = default_subnet_id - if custom_json is not None: - params['CustomJson'] = custom_json - if configuration_manager is not None: - params['ConfigurationManager'] = configuration_manager - if chef_configuration is not None: - params['ChefConfiguration'] = chef_configuration - if use_custom_cookbooks is not None: - params['UseCustomCookbooks'] = use_custom_cookbooks - if use_opsworks_security_groups is not None: - params['UseOpsworksSecurityGroups'] = use_opsworks_security_groups - if custom_cookbooks_source is not None: - params['CustomCookbooksSource'] = custom_cookbooks_source - if default_ssh_key_name is not None: - params['DefaultSshKeyName'] = default_ssh_key_name - if default_root_device_type is not None: - params['DefaultRootDeviceType'] = default_root_device_type - return self.make_request(action='CreateStack', - body=json.dumps(params)) - - def create_user_profile(self, iam_user_arn, ssh_username=None, - ssh_public_key=None, allow_self_management=None): - """ - Creates a new user profile. - - **Required Permissions**: To use this action, an IAM user must - have an attached policy that explicitly grants permissions. - For more information on user permissions, see `Managing User - Permissions`_. - - :type iam_user_arn: string - :param iam_user_arn: The user's IAM ARN. - - :type ssh_username: string - :param ssh_username: The user's SSH user name. The allowable characters - are [a-z], [A-Z], [0-9], '-', and '_'. If the specified name - includes other punctuation marks, AWS OpsWorks removes them. For - example, `my.name` will be changed to `myname`. If you do not - specify an SSH user name, AWS OpsWorks generates one from the IAM - user name. - - :type ssh_public_key: string - :param ssh_public_key: The user's public SSH key. - - :type allow_self_management: boolean - :param allow_self_management: Whether users can specify their own SSH - public key through the My Settings page. For more information, see - `Setting an IAM User's Public SSH Key`_. - - """ - params = {'IamUserArn': iam_user_arn, } - if ssh_username is not None: - params['SshUsername'] = ssh_username - if ssh_public_key is not None: - params['SshPublicKey'] = ssh_public_key - if allow_self_management is not None: - params['AllowSelfManagement'] = allow_self_management - return self.make_request(action='CreateUserProfile', - body=json.dumps(params)) - - def delete_app(self, app_id): - """ - Deletes a specified app. - - **Required Permissions**: To use this action, an IAM user must - have a Manage permissions level for the stack, or an attached - policy that explicitly grants permissions. For more - information on user permissions, see `Managing User - Permissions`_. - - :type app_id: string - :param app_id: The app ID. - - """ - params = {'AppId': app_id, } - return self.make_request(action='DeleteApp', - body=json.dumps(params)) - - def delete_instance(self, instance_id, delete_elastic_ip=None, - delete_volumes=None): - """ - Deletes a specified instance, which terminates the associated - Amazon EC2 instance. You must stop an instance before you can - delete it. - - For more information, see `Deleting Instances`_. - - **Required Permissions**: To use this action, an IAM user must - have a Manage permissions level for the stack, or an attached - policy that explicitly grants permissions. For more - information on user permissions, see `Managing User - Permissions`_. - - :type instance_id: string - :param instance_id: The instance ID. - - :type delete_elastic_ip: boolean - :param delete_elastic_ip: Whether to delete the instance Elastic IP - address. - - :type delete_volumes: boolean - :param delete_volumes: Whether to delete the instance's Amazon EBS - volumes. - - """ - params = {'InstanceId': instance_id, } - if delete_elastic_ip is not None: - params['DeleteElasticIp'] = delete_elastic_ip - if delete_volumes is not None: - params['DeleteVolumes'] = delete_volumes - return self.make_request(action='DeleteInstance', - body=json.dumps(params)) - - def delete_layer(self, layer_id): - """ - Deletes a specified layer. You must first stop and then delete - all associated instances or unassign registered instances. For - more information, see `How to Delete a Layer`_. - - **Required Permissions**: To use this action, an IAM user must - have a Manage permissions level for the stack, or an attached - policy that explicitly grants permissions. For more - information on user permissions, see `Managing User - Permissions`_. - - :type layer_id: string - :param layer_id: The layer ID. - - """ - params = {'LayerId': layer_id, } - return self.make_request(action='DeleteLayer', - body=json.dumps(params)) - - def delete_stack(self, stack_id): - """ - Deletes a specified stack. You must first delete all - instances, layers, and apps or deregister registered - instances. For more information, see `Shut Down a Stack`_. - - **Required Permissions**: To use this action, an IAM user must - have a Manage permissions level for the stack, or an attached - policy that explicitly grants permissions. For more - information on user permissions, see `Managing User - Permissions`_. - - :type stack_id: string - :param stack_id: The stack ID. - - """ - params = {'StackId': stack_id, } - return self.make_request(action='DeleteStack', - body=json.dumps(params)) - - def delete_user_profile(self, iam_user_arn): - """ - Deletes a user profile. - - **Required Permissions**: To use this action, an IAM user must - have an attached policy that explicitly grants permissions. - For more information on user permissions, see `Managing User - Permissions`_. - - :type iam_user_arn: string - :param iam_user_arn: The user's IAM ARN. - - """ - params = {'IamUserArn': iam_user_arn, } - return self.make_request(action='DeleteUserProfile', - body=json.dumps(params)) - - def deregister_elastic_ip(self, elastic_ip): - """ - Deregisters a specified Elastic IP address. The address can - then be registered by another stack. For more information, see - `Resource Management`_. - - **Required Permissions**: To use this action, an IAM user must - have a Manage permissions level for the stack, or an attached - policy that explicitly grants permissions. For more - information on user permissions, see `Managing User - Permissions`_. - - :type elastic_ip: string - :param elastic_ip: The Elastic IP address. - - """ - params = {'ElasticIp': elastic_ip, } - return self.make_request(action='DeregisterElasticIp', - body=json.dumps(params)) - - def deregister_instance(self, instance_id): - """ - Deregister a registered Amazon EC2 or on-premises instance. - This action removes the instance from the stack and returns it - to your control. This action can not be used with instances - that were created with AWS OpsWorks. - - **Required Permissions**: To use this action, an IAM user must - have a Manage permissions level for the stack or an attached - policy that explicitly grants permissions. For more - information on user permissions, see `Managing User - Permissions`_. - - :type instance_id: string - :param instance_id: The instance ID. - - """ - params = {'InstanceId': instance_id, } - return self.make_request(action='DeregisterInstance', - body=json.dumps(params)) - - def deregister_rds_db_instance(self, rds_db_instance_arn): - """ - Deregisters an Amazon RDS instance. - - **Required Permissions**: To use this action, an IAM user must - have a Manage permissions level for the stack, or an attached - policy that explicitly grants permissions. For more - information on user permissions, see `Managing User - Permissions`_. - - :type rds_db_instance_arn: string - :param rds_db_instance_arn: The Amazon RDS instance's ARN. - - """ - params = {'RdsDbInstanceArn': rds_db_instance_arn, } - return self.make_request(action='DeregisterRdsDbInstance', - body=json.dumps(params)) - - def deregister_volume(self, volume_id): - """ - Deregisters an Amazon EBS volume. The volume can then be - registered by another stack. For more information, see - `Resource Management`_. - - **Required Permissions**: To use this action, an IAM user must - have a Manage permissions level for the stack, or an attached - policy that explicitly grants permissions. For more - information on user permissions, see `Managing User - Permissions`_. - - :type volume_id: string - :param volume_id: The volume ID. - - """ - params = {'VolumeId': volume_id, } - return self.make_request(action='DeregisterVolume', - body=json.dumps(params)) - - def describe_apps(self, stack_id=None, app_ids=None): - """ - Requests a description of a specified set of apps. - - - You must specify at least one of the parameters. - - - **Required Permissions**: To use this action, an IAM user must - have a Show, Deploy, or Manage permissions level for the - stack, or an attached policy that explicitly grants - permissions. For more information on user permissions, see - `Managing User Permissions`_. - - :type stack_id: string - :param stack_id: The app stack ID. If you use this parameter, - `DescribeApps` returns a description of the apps in the specified - stack. - - :type app_ids: list - :param app_ids: An array of app IDs for the apps to be described. If - you use this parameter, `DescribeApps` returns a description of the - specified apps. Otherwise, it returns a description of every app. - - """ - params = {} - if stack_id is not None: - params['StackId'] = stack_id - if app_ids is not None: - params['AppIds'] = app_ids - return self.make_request(action='DescribeApps', - body=json.dumps(params)) - - def describe_commands(self, deployment_id=None, instance_id=None, - command_ids=None): - """ - Describes the results of specified commands. - - - You must specify at least one of the parameters. - - - **Required Permissions**: To use this action, an IAM user must - have a Show, Deploy, or Manage permissions level for the - stack, or an attached policy that explicitly grants - permissions. For more information on user permissions, see - `Managing User Permissions`_. - - :type deployment_id: string - :param deployment_id: The deployment ID. If you include this parameter, - `DescribeCommands` returns a description of the commands associated - with the specified deployment. - - :type instance_id: string - :param instance_id: The instance ID. If you include this parameter, - `DescribeCommands` returns a description of the commands associated - with the specified instance. - - :type command_ids: list - :param command_ids: An array of command IDs. If you include this - parameter, `DescribeCommands` returns a description of the - specified commands. Otherwise, it returns a description of every - command. - - """ - params = {} - if deployment_id is not None: - params['DeploymentId'] = deployment_id - if instance_id is not None: - params['InstanceId'] = instance_id - if command_ids is not None: - params['CommandIds'] = command_ids - return self.make_request(action='DescribeCommands', - body=json.dumps(params)) - - def describe_deployments(self, stack_id=None, app_id=None, - deployment_ids=None): - """ - Requests a description of a specified set of deployments. - - - You must specify at least one of the parameters. - - - **Required Permissions**: To use this action, an IAM user must - have a Show, Deploy, or Manage permissions level for the - stack, or an attached policy that explicitly grants - permissions. For more information on user permissions, see - `Managing User Permissions`_. - - :type stack_id: string - :param stack_id: The stack ID. If you include this parameter, - `DescribeDeployments` returns a description of the commands - associated with the specified stack. - - :type app_id: string - :param app_id: The app ID. If you include this parameter, - `DescribeDeployments` returns a description of the commands - associated with the specified app. - - :type deployment_ids: list - :param deployment_ids: An array of deployment IDs to be described. If - you include this parameter, `DescribeDeployments` returns a - description of the specified deployments. Otherwise, it returns a - description of every deployment. - - """ - params = {} - if stack_id is not None: - params['StackId'] = stack_id - if app_id is not None: - params['AppId'] = app_id - if deployment_ids is not None: - params['DeploymentIds'] = deployment_ids - return self.make_request(action='DescribeDeployments', - body=json.dumps(params)) - - def describe_elastic_ips(self, instance_id=None, stack_id=None, ips=None): - """ - Describes `Elastic IP addresses`_. - - - You must specify at least one of the parameters. - - - **Required Permissions**: To use this action, an IAM user must - have a Show, Deploy, or Manage permissions level for the - stack, or an attached policy that explicitly grants - permissions. For more information on user permissions, see - `Managing User Permissions`_. - - :type instance_id: string - :param instance_id: The instance ID. If you include this parameter, - `DescribeElasticIps` returns a description of the Elastic IP - addresses associated with the specified instance. - - :type stack_id: string - :param stack_id: A stack ID. If you include this parameter, - `DescribeElasticIps` returns a description of the Elastic IP - addresses that are registered with the specified stack. - - :type ips: list - :param ips: An array of Elastic IP addresses to be described. If you - include this parameter, `DescribeElasticIps` returns a description - of the specified Elastic IP addresses. Otherwise, it returns a - description of every Elastic IP address. - - """ - params = {} - if instance_id is not None: - params['InstanceId'] = instance_id - if stack_id is not None: - params['StackId'] = stack_id - if ips is not None: - params['Ips'] = ips - return self.make_request(action='DescribeElasticIps', - body=json.dumps(params)) - - def describe_elastic_load_balancers(self, stack_id=None, layer_ids=None): - """ - Describes a stack's Elastic Load Balancing instances. - - - You must specify at least one of the parameters. - - - **Required Permissions**: To use this action, an IAM user must - have a Show, Deploy, or Manage permissions level for the - stack, or an attached policy that explicitly grants - permissions. For more information on user permissions, see - `Managing User Permissions`_. - - :type stack_id: string - :param stack_id: A stack ID. The action describes the stack's Elastic - Load Balancing instances. - - :type layer_ids: list - :param layer_ids: A list of layer IDs. The action describes the Elastic - Load Balancing instances for the specified layers. - - """ - params = {} - if stack_id is not None: - params['StackId'] = stack_id - if layer_ids is not None: - params['LayerIds'] = layer_ids - return self.make_request(action='DescribeElasticLoadBalancers', - body=json.dumps(params)) - - def describe_instances(self, stack_id=None, layer_id=None, - instance_ids=None): - """ - Requests a description of a set of instances. - - - You must specify at least one of the parameters. - - - **Required Permissions**: To use this action, an IAM user must - have a Show, Deploy, or Manage permissions level for the - stack, or an attached policy that explicitly grants - permissions. For more information on user permissions, see - `Managing User Permissions`_. - - :type stack_id: string - :param stack_id: A stack ID. If you use this parameter, - `DescribeInstances` returns descriptions of the instances - associated with the specified stack. - - :type layer_id: string - :param layer_id: A layer ID. If you use this parameter, - `DescribeInstances` returns descriptions of the instances - associated with the specified layer. - - :type instance_ids: list - :param instance_ids: An array of instance IDs to be described. If you - use this parameter, `DescribeInstances` returns a description of - the specified instances. Otherwise, it returns a description of - every instance. - - """ - params = {} - if stack_id is not None: - params['StackId'] = stack_id - if layer_id is not None: - params['LayerId'] = layer_id - if instance_ids is not None: - params['InstanceIds'] = instance_ids - return self.make_request(action='DescribeInstances', - body=json.dumps(params)) - - def describe_layers(self, stack_id=None, layer_ids=None): - """ - Requests a description of one or more layers in a specified - stack. - - - You must specify at least one of the parameters. - - - **Required Permissions**: To use this action, an IAM user must - have a Show, Deploy, or Manage permissions level for the - stack, or an attached policy that explicitly grants - permissions. For more information on user permissions, see - `Managing User Permissions`_. - - :type stack_id: string - :param stack_id: The stack ID. - - :type layer_ids: list - :param layer_ids: An array of layer IDs that specify the layers to be - described. If you omit this parameter, `DescribeLayers` returns a - description of every layer in the specified stack. - - """ - params = {} - if stack_id is not None: - params['StackId'] = stack_id - if layer_ids is not None: - params['LayerIds'] = layer_ids - return self.make_request(action='DescribeLayers', - body=json.dumps(params)) - - def describe_load_based_auto_scaling(self, layer_ids): - """ - Describes load-based auto scaling configurations for specified - layers. - - - You must specify at least one of the parameters. - - - **Required Permissions**: To use this action, an IAM user must - have a Show, Deploy, or Manage permissions level for the - stack, or an attached policy that explicitly grants - permissions. For more information on user permissions, see - `Managing User Permissions`_. - - :type layer_ids: list - :param layer_ids: An array of layer IDs. - - """ - params = {'LayerIds': layer_ids, } - return self.make_request(action='DescribeLoadBasedAutoScaling', - body=json.dumps(params)) - - def describe_my_user_profile(self): - """ - Describes a user's SSH information. - - **Required Permissions**: To use this action, an IAM user must - have self-management enabled or an attached policy that - explicitly grants permissions. For more information on user - permissions, see `Managing User Permissions`_. - - - """ - params = {} - return self.make_request(action='DescribeMyUserProfile', - body=json.dumps(params)) - - def describe_permissions(self, iam_user_arn=None, stack_id=None): - """ - Describes the permissions for a specified stack. - - **Required Permissions**: To use this action, an IAM user must - have a Manage permissions level for the stack, or an attached - policy that explicitly grants permissions. For more - information on user permissions, see `Managing User - Permissions`_. - - :type iam_user_arn: string - :param iam_user_arn: The user's IAM ARN. For more information about IAM - ARNs, see `Using Identifiers`_. - - :type stack_id: string - :param stack_id: The stack ID. - - """ - params = {} - if iam_user_arn is not None: - params['IamUserArn'] = iam_user_arn - if stack_id is not None: - params['StackId'] = stack_id - return self.make_request(action='DescribePermissions', - body=json.dumps(params)) - - def describe_raid_arrays(self, instance_id=None, stack_id=None, - raid_array_ids=None): - """ - Describe an instance's RAID arrays. - - - You must specify at least one of the parameters. - - - **Required Permissions**: To use this action, an IAM user must - have a Show, Deploy, or Manage permissions level for the - stack, or an attached policy that explicitly grants - permissions. For more information on user permissions, see - `Managing User Permissions`_. - - :type instance_id: string - :param instance_id: The instance ID. If you use this parameter, - `DescribeRaidArrays` returns descriptions of the RAID arrays - associated with the specified instance. - - :type stack_id: string - :param stack_id: The stack ID. - - :type raid_array_ids: list - :param raid_array_ids: An array of RAID array IDs. If you use this - parameter, `DescribeRaidArrays` returns descriptions of the - specified arrays. Otherwise, it returns a description of every - array. - - """ - params = {} - if instance_id is not None: - params['InstanceId'] = instance_id - if stack_id is not None: - params['StackId'] = stack_id - if raid_array_ids is not None: - params['RaidArrayIds'] = raid_array_ids - return self.make_request(action='DescribeRaidArrays', - body=json.dumps(params)) - - def describe_rds_db_instances(self, stack_id, rds_db_instance_arns=None): - """ - Describes Amazon RDS instances. - - **Required Permissions**: To use this action, an IAM user must - have a Show, Deploy, or Manage permissions level for the - stack, or an attached policy that explicitly grants - permissions. For more information on user permissions, see - `Managing User Permissions`_. - - :type stack_id: string - :param stack_id: The stack ID that the instances are registered with. - The operation returns descriptions of all registered Amazon RDS - instances. - - :type rds_db_instance_arns: list - :param rds_db_instance_arns: An array containing the ARNs of the - instances to be described. - - """ - params = {'StackId': stack_id, } - if rds_db_instance_arns is not None: - params['RdsDbInstanceArns'] = rds_db_instance_arns - return self.make_request(action='DescribeRdsDbInstances', - body=json.dumps(params)) - - def describe_service_errors(self, stack_id=None, instance_id=None, - service_error_ids=None): - """ - Describes AWS OpsWorks service errors. - - **Required Permissions**: To use this action, an IAM user must - have a Show, Deploy, or Manage permissions level for the - stack, or an attached policy that explicitly grants - permissions. For more information on user permissions, see - `Managing User Permissions`_. - - :type stack_id: string - :param stack_id: The stack ID. If you use this parameter, - `DescribeServiceErrors` returns descriptions of the errors - associated with the specified stack. - - :type instance_id: string - :param instance_id: The instance ID. If you use this parameter, - `DescribeServiceErrors` returns descriptions of the errors - associated with the specified instance. - - :type service_error_ids: list - :param service_error_ids: An array of service error IDs. If you use - this parameter, `DescribeServiceErrors` returns descriptions of the - specified errors. Otherwise, it returns a description of every - error. - - """ - params = {} - if stack_id is not None: - params['StackId'] = stack_id - if instance_id is not None: - params['InstanceId'] = instance_id - if service_error_ids is not None: - params['ServiceErrorIds'] = service_error_ids - return self.make_request(action='DescribeServiceErrors', - body=json.dumps(params)) - - def describe_stack_provisioning_parameters(self, stack_id): - """ - Requests a description of a stack's provisioning parameters. - - **Required Permissions**: To use this action, an IAM user must - have a Show, Deploy, or Manage permissions level for the stack - or an attached policy that explicitly grants permissions. For - more information on user permissions, see `Managing User - Permissions`_. - - :type stack_id: string - :param stack_id: The stack ID - - """ - params = {'StackId': stack_id, } - return self.make_request(action='DescribeStackProvisioningParameters', - body=json.dumps(params)) - - def describe_stack_summary(self, stack_id): - """ - Describes the number of layers and apps in a specified stack, - and the number of instances in each state, such as - `running_setup` or `online`. - - **Required Permissions**: To use this action, an IAM user must - have a Show, Deploy, or Manage permissions level for the - stack, or an attached policy that explicitly grants - permissions. For more information on user permissions, see - `Managing User Permissions`_. - - :type stack_id: string - :param stack_id: The stack ID. - - """ - params = {'StackId': stack_id, } - return self.make_request(action='DescribeStackSummary', - body=json.dumps(params)) - - def describe_stacks(self, stack_ids=None): - """ - Requests a description of one or more stacks. - - **Required Permissions**: To use this action, an IAM user must - have a Show, Deploy, or Manage permissions level for the - stack, or an attached policy that explicitly grants - permissions. For more information on user permissions, see - `Managing User Permissions`_. - - :type stack_ids: list - :param stack_ids: An array of stack IDs that specify the stacks to be - described. If you omit this parameter, `DescribeStacks` returns a - description of every stack. - - """ - params = {} - if stack_ids is not None: - params['StackIds'] = stack_ids - return self.make_request(action='DescribeStacks', - body=json.dumps(params)) - - def describe_time_based_auto_scaling(self, instance_ids): - """ - Describes time-based auto scaling configurations for specified - instances. - - - You must specify at least one of the parameters. - - - **Required Permissions**: To use this action, an IAM user must - have a Show, Deploy, or Manage permissions level for the - stack, or an attached policy that explicitly grants - permissions. For more information on user permissions, see - `Managing User Permissions`_. - - :type instance_ids: list - :param instance_ids: An array of instance IDs. - - """ - params = {'InstanceIds': instance_ids, } - return self.make_request(action='DescribeTimeBasedAutoScaling', - body=json.dumps(params)) - - def describe_user_profiles(self, iam_user_arns=None): - """ - Describe specified users. - - **Required Permissions**: To use this action, an IAM user must - have an attached policy that explicitly grants permissions. - For more information on user permissions, see `Managing User - Permissions`_. - - :type iam_user_arns: list - :param iam_user_arns: An array of IAM user ARNs that identify the users - to be described. - - """ - params = {} - if iam_user_arns is not None: - params['IamUserArns'] = iam_user_arns - return self.make_request(action='DescribeUserProfiles', - body=json.dumps(params)) - - def describe_volumes(self, instance_id=None, stack_id=None, - raid_array_id=None, volume_ids=None): - """ - Describes an instance's Amazon EBS volumes. - - - You must specify at least one of the parameters. - - - **Required Permissions**: To use this action, an IAM user must - have a Show, Deploy, or Manage permissions level for the - stack, or an attached policy that explicitly grants - permissions. For more information on user permissions, see - `Managing User Permissions`_. - - :type instance_id: string - :param instance_id: The instance ID. If you use this parameter, - `DescribeVolumes` returns descriptions of the volumes associated - with the specified instance. - - :type stack_id: string - :param stack_id: A stack ID. The action describes the stack's - registered Amazon EBS volumes. - - :type raid_array_id: string - :param raid_array_id: The RAID array ID. If you use this parameter, - `DescribeVolumes` returns descriptions of the volumes associated - with the specified RAID array. - - :type volume_ids: list - :param volume_ids: Am array of volume IDs. If you use this parameter, - `DescribeVolumes` returns descriptions of the specified volumes. - Otherwise, it returns a description of every volume. - - """ - params = {} - if instance_id is not None: - params['InstanceId'] = instance_id - if stack_id is not None: - params['StackId'] = stack_id - if raid_array_id is not None: - params['RaidArrayId'] = raid_array_id - if volume_ids is not None: - params['VolumeIds'] = volume_ids - return self.make_request(action='DescribeVolumes', - body=json.dumps(params)) - - def detach_elastic_load_balancer(self, elastic_load_balancer_name, - layer_id): - """ - Detaches a specified Elastic Load Balancing instance from its - layer. - - **Required Permissions**: To use this action, an IAM user must - have a Manage permissions level for the stack, or an attached - policy that explicitly grants permissions. For more - information on user permissions, see `Managing User - Permissions`_. - - :type elastic_load_balancer_name: string - :param elastic_load_balancer_name: The Elastic Load Balancing - instance's name. - - :type layer_id: string - :param layer_id: The ID of the layer that the Elastic Load Balancing - instance is attached to. - - """ - params = { - 'ElasticLoadBalancerName': elastic_load_balancer_name, - 'LayerId': layer_id, - } - return self.make_request(action='DetachElasticLoadBalancer', - body=json.dumps(params)) - - def disassociate_elastic_ip(self, elastic_ip): - """ - Disassociates an Elastic IP address from its instance. The - address remains registered with the stack. For more - information, see `Resource Management`_. - - **Required Permissions**: To use this action, an IAM user must - have a Manage permissions level for the stack, or an attached - policy that explicitly grants permissions. For more - information on user permissions, see `Managing User - Permissions`_. - - :type elastic_ip: string - :param elastic_ip: The Elastic IP address. - - """ - params = {'ElasticIp': elastic_ip, } - return self.make_request(action='DisassociateElasticIp', - body=json.dumps(params)) - - def get_hostname_suggestion(self, layer_id): - """ - Gets a generated host name for the specified layer, based on - the current host name theme. - - **Required Permissions**: To use this action, an IAM user must - have a Manage permissions level for the stack, or an attached - policy that explicitly grants permissions. For more - information on user permissions, see `Managing User - Permissions`_. - - :type layer_id: string - :param layer_id: The layer ID. - - """ - params = {'LayerId': layer_id, } - return self.make_request(action='GetHostnameSuggestion', - body=json.dumps(params)) - - def reboot_instance(self, instance_id): - """ - Reboots a specified instance. For more information, see - `Starting, Stopping, and Rebooting Instances`_. - - **Required Permissions**: To use this action, an IAM user must - have a Manage permissions level for the stack, or an attached - policy that explicitly grants permissions. For more - information on user permissions, see `Managing User - Permissions`_. - - :type instance_id: string - :param instance_id: The instance ID. - - """ - params = {'InstanceId': instance_id, } - return self.make_request(action='RebootInstance', - body=json.dumps(params)) - - def register_elastic_ip(self, elastic_ip, stack_id): - """ - Registers an Elastic IP address with a specified stack. An - address can be registered with only one stack at a time. If - the address is already registered, you must first deregister - it by calling DeregisterElasticIp. For more information, see - `Resource Management`_. - - **Required Permissions**: To use this action, an IAM user must - have a Manage permissions level for the stack, or an attached - policy that explicitly grants permissions. For more - information on user permissions, see `Managing User - Permissions`_. - - :type elastic_ip: string - :param elastic_ip: The Elastic IP address. - - :type stack_id: string - :param stack_id: The stack ID. - - """ - params = {'ElasticIp': elastic_ip, 'StackId': stack_id, } - return self.make_request(action='RegisterElasticIp', - body=json.dumps(params)) - - def register_instance(self, stack_id, hostname=None, public_ip=None, - private_ip=None, rsa_public_key=None, - rsa_public_key_fingerprint=None, - instance_identity=None): - """ - Registers instances with a specified stack that were created - outside of AWS OpsWorks. - - We do not recommend using this action to register instances. - The complete registration operation has two primary steps, - installing the AWS OpsWorks agent on the instance and - registering the instance with the stack. `RegisterInstance` - handles only the second step. You should instead use the AWS - CLI `register` command, which performs the entire registration - operation. - - **Required Permissions**: To use this action, an IAM user must - have a Manage permissions level for the stack or an attached - policy that explicitly grants permissions. For more - information on user permissions, see `Managing User - Permissions`_. - - :type stack_id: string - :param stack_id: The ID of the stack that the instance is to be - registered with. - - :type hostname: string - :param hostname: The instance's hostname. - - :type public_ip: string - :param public_ip: The instance's public IP address. - - :type private_ip: string - :param private_ip: The instance's private IP address. - - :type rsa_public_key: string - :param rsa_public_key: The instances public RSA key. This key is used - to encrypt communication between the instance and the service. - - :type rsa_public_key_fingerprint: string - :param rsa_public_key_fingerprint: The instances public RSA key - fingerprint. - - :type instance_identity: dict - :param instance_identity: An InstanceIdentity object that contains the - instance's identity. - - """ - params = {'StackId': stack_id, } - if hostname is not None: - params['Hostname'] = hostname - if public_ip is not None: - params['PublicIp'] = public_ip - if private_ip is not None: - params['PrivateIp'] = private_ip - if rsa_public_key is not None: - params['RsaPublicKey'] = rsa_public_key - if rsa_public_key_fingerprint is not None: - params['RsaPublicKeyFingerprint'] = rsa_public_key_fingerprint - if instance_identity is not None: - params['InstanceIdentity'] = instance_identity - return self.make_request(action='RegisterInstance', - body=json.dumps(params)) - - def register_rds_db_instance(self, stack_id, rds_db_instance_arn, - db_user, db_password): - """ - Registers an Amazon RDS instance with a stack. - - **Required Permissions**: To use this action, an IAM user must - have a Manage permissions level for the stack, or an attached - policy that explicitly grants permissions. For more - information on user permissions, see `Managing User - Permissions`_. - - :type stack_id: string - :param stack_id: The stack ID. - - :type rds_db_instance_arn: string - :param rds_db_instance_arn: The Amazon RDS instance's ARN. - - :type db_user: string - :param db_user: The database's master user name. - - :type db_password: string - :param db_password: The database password. - - """ - params = { - 'StackId': stack_id, - 'RdsDbInstanceArn': rds_db_instance_arn, - 'DbUser': db_user, - 'DbPassword': db_password, - } - return self.make_request(action='RegisterRdsDbInstance', - body=json.dumps(params)) - - def register_volume(self, stack_id, ec_2_volume_id=None): - """ - Registers an Amazon EBS volume with a specified stack. A - volume can be registered with only one stack at a time. If the - volume is already registered, you must first deregister it by - calling DeregisterVolume. For more information, see `Resource - Management`_. - - **Required Permissions**: To use this action, an IAM user must - have a Manage permissions level for the stack, or an attached - policy that explicitly grants permissions. For more - information on user permissions, see `Managing User - Permissions`_. - - :type ec_2_volume_id: string - :param ec_2_volume_id: The Amazon EBS volume ID. - - :type stack_id: string - :param stack_id: The stack ID. - - """ - params = {'StackId': stack_id, } - if ec_2_volume_id is not None: - params['Ec2VolumeId'] = ec_2_volume_id - return self.make_request(action='RegisterVolume', - body=json.dumps(params)) - - def set_load_based_auto_scaling(self, layer_id, enable=None, - up_scaling=None, down_scaling=None): - """ - Specify the load-based auto scaling configuration for a - specified layer. For more information, see `Managing Load with - Time-based and Load-based Instances`_. - - - To use load-based auto scaling, you must create a set of load- - based auto scaling instances. Load-based auto scaling operates - only on the instances from that set, so you must ensure that - you have created enough instances to handle the maximum - anticipated load. - - - **Required Permissions**: To use this action, an IAM user must - have a Manage permissions level for the stack, or an attached - policy that explicitly grants permissions. For more - information on user permissions, see `Managing User - Permissions`_. - - :type layer_id: string - :param layer_id: The layer ID. - - :type enable: boolean - :param enable: Enables load-based auto scaling for the layer. - - :type up_scaling: dict - :param up_scaling: An `AutoScalingThresholds` object with the upscaling - threshold configuration. If the load exceeds these thresholds for a - specified amount of time, AWS OpsWorks starts a specified number of - instances. - - :type down_scaling: dict - :param down_scaling: An `AutoScalingThresholds` object with the - downscaling threshold configuration. If the load falls below these - thresholds for a specified amount of time, AWS OpsWorks stops a - specified number of instances. - - """ - params = {'LayerId': layer_id, } - if enable is not None: - params['Enable'] = enable - if up_scaling is not None: - params['UpScaling'] = up_scaling - if down_scaling is not None: - params['DownScaling'] = down_scaling - return self.make_request(action='SetLoadBasedAutoScaling', - body=json.dumps(params)) - - def set_permission(self, stack_id, iam_user_arn, allow_ssh=None, - allow_sudo=None, level=None): - """ - Specifies a user's permissions. For more information, see - `Security and Permissions`_. - - **Required Permissions**: To use this action, an IAM user must - have a Manage permissions level for the stack, or an attached - policy that explicitly grants permissions. For more - information on user permissions, see `Managing User - Permissions`_. - - :type stack_id: string - :param stack_id: The stack ID. - - :type iam_user_arn: string - :param iam_user_arn: The user's IAM ARN. - - :type allow_ssh: boolean - :param allow_ssh: The user is allowed to use SSH to communicate with - the instance. - - :type allow_sudo: boolean - :param allow_sudo: The user is allowed to use **sudo** to elevate - privileges. - - :type level: string - :param level: The user's permission level, which must be set to one of - the following strings. You cannot set your own permissions level. - - + `deny` - + `show` - + `deploy` - + `manage` - + `iam_only` - - - For more information on the permissions associated with these levels, - see `Managing User Permissions`_ - - """ - params = {'StackId': stack_id, 'IamUserArn': iam_user_arn, } - if allow_ssh is not None: - params['AllowSsh'] = allow_ssh - if allow_sudo is not None: - params['AllowSudo'] = allow_sudo - if level is not None: - params['Level'] = level - return self.make_request(action='SetPermission', - body=json.dumps(params)) - - def set_time_based_auto_scaling(self, instance_id, - auto_scaling_schedule=None): - """ - Specify the time-based auto scaling configuration for a - specified instance. For more information, see `Managing Load - with Time-based and Load-based Instances`_. - - **Required Permissions**: To use this action, an IAM user must - have a Manage permissions level for the stack, or an attached - policy that explicitly grants permissions. For more - information on user permissions, see `Managing User - Permissions`_. - - :type instance_id: string - :param instance_id: The instance ID. - - :type auto_scaling_schedule: dict - :param auto_scaling_schedule: An `AutoScalingSchedule` with the - instance schedule. - - """ - params = {'InstanceId': instance_id, } - if auto_scaling_schedule is not None: - params['AutoScalingSchedule'] = auto_scaling_schedule - return self.make_request(action='SetTimeBasedAutoScaling', - body=json.dumps(params)) - - def start_instance(self, instance_id): - """ - Starts a specified instance. For more information, see - `Starting, Stopping, and Rebooting Instances`_. - - **Required Permissions**: To use this action, an IAM user must - have a Manage permissions level for the stack, or an attached - policy that explicitly grants permissions. For more - information on user permissions, see `Managing User - Permissions`_. - - :type instance_id: string - :param instance_id: The instance ID. - - """ - params = {'InstanceId': instance_id, } - return self.make_request(action='StartInstance', - body=json.dumps(params)) - - def start_stack(self, stack_id): - """ - Starts a stack's instances. - - **Required Permissions**: To use this action, an IAM user must - have a Manage permissions level for the stack, or an attached - policy that explicitly grants permissions. For more - information on user permissions, see `Managing User - Permissions`_. - - :type stack_id: string - :param stack_id: The stack ID. - - """ - params = {'StackId': stack_id, } - return self.make_request(action='StartStack', - body=json.dumps(params)) - - def stop_instance(self, instance_id): - """ - Stops a specified instance. When you stop a standard instance, - the data disappears and must be reinstalled when you restart - the instance. You can stop an Amazon EBS-backed instance - without losing data. For more information, see `Starting, - Stopping, and Rebooting Instances`_. - - **Required Permissions**: To use this action, an IAM user must - have a Manage permissions level for the stack, or an attached - policy that explicitly grants permissions. For more - information on user permissions, see `Managing User - Permissions`_. - - :type instance_id: string - :param instance_id: The instance ID. - - """ - params = {'InstanceId': instance_id, } - return self.make_request(action='StopInstance', - body=json.dumps(params)) - - def stop_stack(self, stack_id): - """ - Stops a specified stack. - - **Required Permissions**: To use this action, an IAM user must - have a Manage permissions level for the stack, or an attached - policy that explicitly grants permissions. For more - information on user permissions, see `Managing User - Permissions`_. - - :type stack_id: string - :param stack_id: The stack ID. - - """ - params = {'StackId': stack_id, } - return self.make_request(action='StopStack', - body=json.dumps(params)) - - def unassign_instance(self, instance_id): - """ - Unassigns a registered instance from all of it's layers. The - instance remains in the stack as an unassigned instance and - can be assigned to another layer, as needed. You cannot use - this action with instances that were created with AWS - OpsWorks. - - **Required Permissions**: To use this action, an IAM user must - have a Manage permissions level for the stack or an attached - policy that explicitly grants permissions. For more - information on user permissions, see `Managing User - Permissions`_. - - :type instance_id: string - :param instance_id: The instance ID. - - """ - params = {'InstanceId': instance_id, } - return self.make_request(action='UnassignInstance', - body=json.dumps(params)) - - def unassign_volume(self, volume_id): - """ - Unassigns an assigned Amazon EBS volume. The volume remains - registered with the stack. For more information, see `Resource - Management`_. - - **Required Permissions**: To use this action, an IAM user must - have a Manage permissions level for the stack, or an attached - policy that explicitly grants permissions. For more - information on user permissions, see `Managing User - Permissions`_. - - :type volume_id: string - :param volume_id: The volume ID. - - """ - params = {'VolumeId': volume_id, } - return self.make_request(action='UnassignVolume', - body=json.dumps(params)) - - def update_app(self, app_id, name=None, description=None, - data_sources=None, type=None, app_source=None, - domains=None, enable_ssl=None, ssl_configuration=None, - attributes=None, environment=None): - """ - Updates a specified app. - - **Required Permissions**: To use this action, an IAM user must - have a Deploy or Manage permissions level for the stack, or an - attached policy that explicitly grants permissions. For more - information on user permissions, see `Managing User - Permissions`_. - - :type app_id: string - :param app_id: The app ID. - - :type name: string - :param name: The app name. - - :type description: string - :param description: A description of the app. - - :type data_sources: list - :param data_sources: The app's data sources. - - :type type: string - :param type: The app type. - - :type app_source: dict - :param app_source: A `Source` object that specifies the app repository. - - :type domains: list - :param domains: The app's virtual host settings, with multiple domains - separated by commas. For example: `'www.example.com, example.com'` - - :type enable_ssl: boolean - :param enable_ssl: Whether SSL is enabled for the app. - - :type ssl_configuration: dict - :param ssl_configuration: An `SslConfiguration` object with the SSL - configuration. - - :type attributes: map - :param attributes: One or more user-defined key/value pairs to be added - to the stack attributes. - - :type environment: list - :param environment: - An array of `EnvironmentVariable` objects that specify environment - variables to be associated with the app. You can specify up to ten - environment variables. After you deploy the app, these variables - are defined on the associated app server instances. - - This parameter is supported only by Chef 11.10 stacks. If you have - specified one or more environment variables, you cannot modify the - stack's Chef version. - - """ - params = {'AppId': app_id, } - if name is not None: - params['Name'] = name - if description is not None: - params['Description'] = description - if data_sources is not None: - params['DataSources'] = data_sources - if type is not None: - params['Type'] = type - if app_source is not None: - params['AppSource'] = app_source - if domains is not None: - params['Domains'] = domains - if enable_ssl is not None: - params['EnableSsl'] = enable_ssl - if ssl_configuration is not None: - params['SslConfiguration'] = ssl_configuration - if attributes is not None: - params['Attributes'] = attributes - if environment is not None: - params['Environment'] = environment - return self.make_request(action='UpdateApp', - body=json.dumps(params)) - - def update_elastic_ip(self, elastic_ip, name=None): - """ - Updates a registered Elastic IP address's name. For more - information, see `Resource Management`_. - - **Required Permissions**: To use this action, an IAM user must - have a Manage permissions level for the stack, or an attached - policy that explicitly grants permissions. For more - information on user permissions, see `Managing User - Permissions`_. - - :type elastic_ip: string - :param elastic_ip: The address. - - :type name: string - :param name: The new name. - - """ - params = {'ElasticIp': elastic_ip, } - if name is not None: - params['Name'] = name - return self.make_request(action='UpdateElasticIp', - body=json.dumps(params)) - - def update_instance(self, instance_id, layer_ids=None, - instance_type=None, auto_scaling_type=None, - hostname=None, os=None, ami_id=None, - ssh_key_name=None, architecture=None, - install_updates_on_boot=None, ebs_optimized=None): - """ - Updates a specified instance. - - **Required Permissions**: To use this action, an IAM user must - have a Manage permissions level for the stack, or an attached - policy that explicitly grants permissions. For more - information on user permissions, see `Managing User - Permissions`_. - - :type instance_id: string - :param instance_id: The instance ID. - - :type layer_ids: list - :param layer_ids: The instance's layer IDs. - - :type instance_type: string - :param instance_type: The instance type. AWS OpsWorks supports all - instance types except Cluster Compute, Cluster GPU, and High Memory - Cluster. For more information, see `Instance Families and Types`_. - The parameter values that you use to specify the various types are - in the API Name column of the Available Instance Types table. - - :type auto_scaling_type: string - :param auto_scaling_type: For load-based or time-based instances, the - type. - - :type hostname: string - :param hostname: The instance host name. - - :type os: string - :param os: The instance's operating system, which must be set to one of - the following. - - + Standard operating systems: An Amazon Linux version such as `Amazon - Linux 2014.09`, `Ubuntu 12.04 LTS`, or `Ubuntu 14.04 LTS`. - + Custom AMIs: `Custom` - - - The default option is the current Amazon Linux version, such as `Amazon - Linux 2014.09`. If you set this parameter to `Custom`, you must use - the CreateInstance action's AmiId parameter to specify the custom - AMI that you want to use. For more information on the standard - operating systems, see `Operating Systems`_For more information on - how to use custom AMIs with OpsWorks, see `Using Custom AMIs`_. - - :type ami_id: string - :param ami_id: - A custom AMI ID to be used to create the instance. The AMI should be - based on one of the standard AWS OpsWorks AMIs: Amazon Linux, - Ubuntu 12.04 LTS, or Ubuntu 14.04 LTS. For more information, see - `Instances`_ - - If you specify a custom AMI, you must set `Os` to `Custom`. - - :type ssh_key_name: string - :param ssh_key_name: The instance SSH key name. - - :type architecture: string - :param architecture: The instance architecture. Instance types do not - necessarily support both architectures. For a list of the - architectures that are supported by the different instance types, - see `Instance Families and Types`_. - - :type install_updates_on_boot: boolean - :param install_updates_on_boot: - Whether to install operating system and package updates when the - instance boots. The default value is `True`. To control when - updates are installed, set this value to `False`. You must then - update your instances manually by using CreateDeployment to run the - `update_dependencies` stack command or manually running `yum` - (Amazon Linux) or `apt-get` (Ubuntu) on the instances. - - - We strongly recommend using the default value of `True`, to ensure that - your instances have the latest security updates. - - :type ebs_optimized: boolean - :param ebs_optimized: Whether this is an Amazon EBS-optimized instance. - - """ - params = {'InstanceId': instance_id, } - if layer_ids is not None: - params['LayerIds'] = layer_ids - if instance_type is not None: - params['InstanceType'] = instance_type - if auto_scaling_type is not None: - params['AutoScalingType'] = auto_scaling_type - if hostname is not None: - params['Hostname'] = hostname - if os is not None: - params['Os'] = os - if ami_id is not None: - params['AmiId'] = ami_id - if ssh_key_name is not None: - params['SshKeyName'] = ssh_key_name - if architecture is not None: - params['Architecture'] = architecture - if install_updates_on_boot is not None: - params['InstallUpdatesOnBoot'] = install_updates_on_boot - if ebs_optimized is not None: - params['EbsOptimized'] = ebs_optimized - return self.make_request(action='UpdateInstance', - body=json.dumps(params)) - - def update_layer(self, layer_id, name=None, shortname=None, - attributes=None, custom_instance_profile_arn=None, - custom_security_group_ids=None, packages=None, - volume_configurations=None, enable_auto_healing=None, - auto_assign_elastic_ips=None, - auto_assign_public_ips=None, custom_recipes=None, - install_updates_on_boot=None, - use_ebs_optimized_instances=None, - lifecycle_event_configuration=None): - """ - Updates a specified layer. - - **Required Permissions**: To use this action, an IAM user must - have a Manage permissions level for the stack, or an attached - policy that explicitly grants permissions. For more - information on user permissions, see `Managing User - Permissions`_. - - :type layer_id: string - :param layer_id: The layer ID. - - :type name: string - :param name: The layer name, which is used by the console. - - :type shortname: string - :param shortname: The layer short name, which is used internally by AWS - OpsWorksand by Chef. The short name is also used as the name for - the directory where your app files are installed. It can have a - maximum of 200 characters and must be in the following format: - /\A[a-z0-9\-\_\.]+\Z/. - - :type attributes: map - :param attributes: One or more user-defined key/value pairs to be added - to the stack attributes. - - :type custom_instance_profile_arn: string - :param custom_instance_profile_arn: The ARN of an IAM profile to be - used for all of the layer's EC2 instances. For more information - about IAM ARNs, see `Using Identifiers`_. - - :type custom_security_group_ids: list - :param custom_security_group_ids: An array containing the layer's - custom security group IDs. - - :type packages: list - :param packages: An array of `Package` objects that describe the - layer's packages. - - :type volume_configurations: list - :param volume_configurations: A `VolumeConfigurations` object that - describes the layer's Amazon EBS volumes. - - :type enable_auto_healing: boolean - :param enable_auto_healing: Whether to disable auto healing for the - layer. - - :type auto_assign_elastic_ips: boolean - :param auto_assign_elastic_ips: Whether to automatically assign an - `Elastic IP address`_ to the layer's instances. For more - information, see `How to Edit a Layer`_. - - :type auto_assign_public_ips: boolean - :param auto_assign_public_ips: For stacks that are running in a VPC, - whether to automatically assign a public IP address to the layer's - instances. For more information, see `How to Edit a Layer`_. - - :type custom_recipes: dict - :param custom_recipes: A `LayerCustomRecipes` object that specifies the - layer's custom recipes. - - :type install_updates_on_boot: boolean - :param install_updates_on_boot: - Whether to install operating system and package updates when the - instance boots. The default value is `True`. To control when - updates are installed, set this value to `False`. You must then - update your instances manually by using CreateDeployment to run the - `update_dependencies` stack command or manually running `yum` - (Amazon Linux) or `apt-get` (Ubuntu) on the instances. - - - We strongly recommend using the default value of `True`, to ensure that - your instances have the latest security updates. - - :type use_ebs_optimized_instances: boolean - :param use_ebs_optimized_instances: Whether to use Amazon EBS-optimized - instances. - - :type lifecycle_event_configuration: dict - :param lifecycle_event_configuration: - - """ - params = {'LayerId': layer_id, } - if name is not None: - params['Name'] = name - if shortname is not None: - params['Shortname'] = shortname - if attributes is not None: - params['Attributes'] = attributes - if custom_instance_profile_arn is not None: - params['CustomInstanceProfileArn'] = custom_instance_profile_arn - if custom_security_group_ids is not None: - params['CustomSecurityGroupIds'] = custom_security_group_ids - if packages is not None: - params['Packages'] = packages - if volume_configurations is not None: - params['VolumeConfigurations'] = volume_configurations - if enable_auto_healing is not None: - params['EnableAutoHealing'] = enable_auto_healing - if auto_assign_elastic_ips is not None: - params['AutoAssignElasticIps'] = auto_assign_elastic_ips - if auto_assign_public_ips is not None: - params['AutoAssignPublicIps'] = auto_assign_public_ips - if custom_recipes is not None: - params['CustomRecipes'] = custom_recipes - if install_updates_on_boot is not None: - params['InstallUpdatesOnBoot'] = install_updates_on_boot - if use_ebs_optimized_instances is not None: - params['UseEbsOptimizedInstances'] = use_ebs_optimized_instances - if lifecycle_event_configuration is not None: - params['LifecycleEventConfiguration'] = lifecycle_event_configuration - return self.make_request(action='UpdateLayer', - body=json.dumps(params)) - - def update_my_user_profile(self, ssh_public_key=None): - """ - Updates a user's SSH public key. - - **Required Permissions**: To use this action, an IAM user must - have self-management enabled or an attached policy that - explicitly grants permissions. For more information on user - permissions, see `Managing User Permissions`_. - - :type ssh_public_key: string - :param ssh_public_key: The user's SSH public key. - - """ - params = {} - if ssh_public_key is not None: - params['SshPublicKey'] = ssh_public_key - return self.make_request(action='UpdateMyUserProfile', - body=json.dumps(params)) - - def update_rds_db_instance(self, rds_db_instance_arn, db_user=None, - db_password=None): - """ - Updates an Amazon RDS instance. - - **Required Permissions**: To use this action, an IAM user must - have a Manage permissions level for the stack, or an attached - policy that explicitly grants permissions. For more - information on user permissions, see `Managing User - Permissions`_. - - :type rds_db_instance_arn: string - :param rds_db_instance_arn: The Amazon RDS instance's ARN. - - :type db_user: string - :param db_user: The master user name. - - :type db_password: string - :param db_password: The database password. - - """ - params = {'RdsDbInstanceArn': rds_db_instance_arn, } - if db_user is not None: - params['DbUser'] = db_user - if db_password is not None: - params['DbPassword'] = db_password - return self.make_request(action='UpdateRdsDbInstance', - body=json.dumps(params)) - - def update_stack(self, stack_id, name=None, attributes=None, - service_role_arn=None, - default_instance_profile_arn=None, default_os=None, - hostname_theme=None, default_availability_zone=None, - default_subnet_id=None, custom_json=None, - configuration_manager=None, chef_configuration=None, - use_custom_cookbooks=None, custom_cookbooks_source=None, - default_ssh_key_name=None, - default_root_device_type=None, - use_opsworks_security_groups=None): - """ - Updates a specified stack. - - **Required Permissions**: To use this action, an IAM user must - have a Manage permissions level for the stack, or an attached - policy that explicitly grants permissions. For more - information on user permissions, see `Managing User - Permissions`_. - - :type stack_id: string - :param stack_id: The stack ID. - - :type name: string - :param name: The stack's new name. - - :type attributes: map - :param attributes: One or more user-defined key/value pairs to be added - to the stack attributes. - - :type service_role_arn: string - :param service_role_arn: - The stack AWS Identity and Access Management (IAM) role, which allows - AWS OpsWorks to work with AWS resources on your behalf. You must - set this parameter to the Amazon Resource Name (ARN) for an - existing IAM role. For more information about IAM ARNs, see `Using - Identifiers`_. - - - You must set this parameter to a valid service role ARN or the action - will fail; there is no default value. You can specify the stack's - current service role ARN, if you prefer, but you must do so - explicitly. - - :type default_instance_profile_arn: string - :param default_instance_profile_arn: The ARN of an IAM profile that is - the default profile for all of the stack's EC2 instances. For more - information about IAM ARNs, see `Using Identifiers`_. - - :type default_os: string - :param default_os: The stack's operating system, which must be set to - one of the following. - - + Standard operating systems: an Amazon Linux version such as `Amazon - Linux 2014.09`, `Ubuntu 12.04 LTS`, or `Ubuntu 14.04 LTS`. - + Custom AMIs: `Custom`. You specify the custom AMI you want to use - when you create instances. - - - The default option is the current Amazon Linux version. - - :type hostname_theme: string - :param hostname_theme: The stack's new host name theme, with spaces are - replaced by underscores. The theme is used to generate host names - for the stack's instances. By default, `HostnameTheme` is set to - `Layer_Dependent`, which creates host names by appending integers - to the layer's short name. The other themes are: - - + `Baked_Goods` - + `Clouds` - + `European_Cities` - + `Fruits` - + `Greek_Deities` - + `Legendary_Creatures_from_Japan` - + `Planets_and_Moons` - + `Roman_Deities` - + `Scottish_Islands` - + `US_Cities` - + `Wild_Cats` - - - To obtain a generated host name, call `GetHostNameSuggestion`, which - returns a host name based on the current theme. - - :type default_availability_zone: string - :param default_availability_zone: The stack's default Availability - Zone, which must be in the specified region. For more information, - see `Regions and Endpoints`_. If you also specify a value for - `DefaultSubnetId`, the subnet must be in the same zone. For more - information, see CreateStack. - - :type default_subnet_id: string - :param default_subnet_id: The stack's default VPC subnet ID. This - parameter is required if you specify a value for the `VpcId` - parameter. All instances are launched into this subnet unless you - specify otherwise when you create the instance. If you also specify - a value for `DefaultAvailabilityZone`, the subnet must be in that - zone. For information on default values and when this parameter is - required, see the `VpcId` parameter description. - - :type custom_json: string - :param custom_json: A string that contains user-defined, custom JSON. - It is used to override the corresponding default stack - configuration JSON values. The string should be in the following - format and must escape characters such as '"'.: - `"{\"key1\": \"value1\", \"key2\": \"value2\",...}"` - - For more information on custom JSON, see `Use Custom JSON to Modify the - Stack Configuration JSON`_. - - :type configuration_manager: dict - :param configuration_manager: The configuration manager. When you clone - a stack we recommend that you use the configuration manager to - specify the Chef version, 0.9, 11.4, or 11.10. The default value is - currently 11.4. - - :type chef_configuration: dict - :param chef_configuration: A `ChefConfiguration` object that specifies - whether to enable Berkshelf and the Berkshelf version on Chef 11.10 - stacks. For more information, see `Create a New Stack`_. - - :type use_custom_cookbooks: boolean - :param use_custom_cookbooks: Whether the stack uses custom cookbooks. - - :type custom_cookbooks_source: dict - :param custom_cookbooks_source: Contains the information required to - retrieve an app or cookbook from a repository. For more - information, see `Creating Apps`_ or `Custom Recipes and - Cookbooks`_. - - :type default_ssh_key_name: string - :param default_ssh_key_name: A default SSH key for the stack instances. - You can override this value when you create or update an instance. - - :type default_root_device_type: string - :param default_root_device_type: The default root device type. This - value is used by default for all instances in the stack, but you - can override it when you create an instance. For more information, - see `Storage for the Root Device`_. - - :type use_opsworks_security_groups: boolean - :param use_opsworks_security_groups: Whether to associate the AWS - OpsWorks built-in security groups with the stack's layers. - AWS OpsWorks provides a standard set of built-in security groups, one - for each layer, which are associated with layers by default. - `UseOpsworksSecurityGroups` allows you to instead provide your own - custom security groups. `UseOpsworksSecurityGroups` has the - following settings: - - - + True - AWS OpsWorks automatically associates the appropriate built-in - security group with each layer (default setting). You can associate - additional security groups with a layer after you create it but you - cannot delete the built-in security group. - + False - AWS OpsWorks does not associate built-in security groups with - layers. You must create appropriate EC2 security groups and - associate a security group with each layer that you create. - However, you can still manually associate a built-in security group - with a layer on creation; custom security groups are required only - for those layers that need custom settings. - - - For more information, see `Create a New Stack`_. - - """ - params = {'StackId': stack_id, } - if name is not None: - params['Name'] = name - if attributes is not None: - params['Attributes'] = attributes - if service_role_arn is not None: - params['ServiceRoleArn'] = service_role_arn - if default_instance_profile_arn is not None: - params['DefaultInstanceProfileArn'] = default_instance_profile_arn - if default_os is not None: - params['DefaultOs'] = default_os - if hostname_theme is not None: - params['HostnameTheme'] = hostname_theme - if default_availability_zone is not None: - params['DefaultAvailabilityZone'] = default_availability_zone - if default_subnet_id is not None: - params['DefaultSubnetId'] = default_subnet_id - if custom_json is not None: - params['CustomJson'] = custom_json - if configuration_manager is not None: - params['ConfigurationManager'] = configuration_manager - if chef_configuration is not None: - params['ChefConfiguration'] = chef_configuration - if use_custom_cookbooks is not None: - params['UseCustomCookbooks'] = use_custom_cookbooks - if custom_cookbooks_source is not None: - params['CustomCookbooksSource'] = custom_cookbooks_source - if default_ssh_key_name is not None: - params['DefaultSshKeyName'] = default_ssh_key_name - if default_root_device_type is not None: - params['DefaultRootDeviceType'] = default_root_device_type - if use_opsworks_security_groups is not None: - params['UseOpsworksSecurityGroups'] = use_opsworks_security_groups - return self.make_request(action='UpdateStack', - body=json.dumps(params)) - - def update_user_profile(self, iam_user_arn, ssh_username=None, - ssh_public_key=None, allow_self_management=None): - """ - Updates a specified user profile. - - **Required Permissions**: To use this action, an IAM user must - have an attached policy that explicitly grants permissions. - For more information on user permissions, see `Managing User - Permissions`_. - - :type iam_user_arn: string - :param iam_user_arn: The user IAM ARN. - - :type ssh_username: string - :param ssh_username: The user's SSH user name. The allowable characters - are [a-z], [A-Z], [0-9], '-', and '_'. If the specified name - includes other punctuation marks, AWS OpsWorks removes them. For - example, `my.name` will be changed to `myname`. If you do not - specify an SSH user name, AWS OpsWorks generates one from the IAM - user name. - - :type ssh_public_key: string - :param ssh_public_key: The user's new SSH public key. - - :type allow_self_management: boolean - :param allow_self_management: Whether users can specify their own SSH - public key through the My Settings page. For more information, see - `Managing User Permissions`_. - - """ - params = {'IamUserArn': iam_user_arn, } - if ssh_username is not None: - params['SshUsername'] = ssh_username - if ssh_public_key is not None: - params['SshPublicKey'] = ssh_public_key - if allow_self_management is not None: - params['AllowSelfManagement'] = allow_self_management - return self.make_request(action='UpdateUserProfile', - body=json.dumps(params)) - - def update_volume(self, volume_id, name=None, mount_point=None): - """ - Updates an Amazon EBS volume's name or mount point. For more - information, see `Resource Management`_. - - **Required Permissions**: To use this action, an IAM user must - have a Manage permissions level for the stack, or an attached - policy that explicitly grants permissions. For more - information on user permissions, see `Managing User - Permissions`_. - - :type volume_id: string - :param volume_id: The volume ID. - - :type name: string - :param name: The new name. - - :type mount_point: string - :param mount_point: The new mount point. - - """ - params = {'VolumeId': volume_id, } - if name is not None: - params['Name'] = name - if mount_point is not None: - params['MountPoint'] = mount_point - return self.make_request(action='UpdateVolume', - body=json.dumps(params)) - - def make_request(self, action, body): - headers = { - 'X-Amz-Target': '%s.%s' % (self.TargetPrefix, action), - 'Host': self.region.endpoint, - 'Content-Type': 'application/x-amz-json-1.1', - 'Content-Length': str(len(body)), - } - http_request = self.build_base_http_request( - method='POST', path='/', auth_path='/', params={}, - headers=headers, data=body) - response = self._mexe(http_request, sender=None, - override_num_retries=10) - response_body = response.read().decode('utf-8') - boto.log.debug(response_body) - if response.status == 200: - if response_body: - return json.loads(response_body) - else: - json_body = json.loads(response_body) - fault_name = json_body.get('__type', None) - exception_class = self._faults.get(fault_name, self.ResponseError) - raise exception_class(response.status, response.reason, - body=json_body) -
