comparison 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
comparison
equal deleted inserted replaced
4:79f47841a781 5:9b1c78e6ba9c
1 # Copyright (c) 2014 Amazon.com, Inc. or its affiliates. All Rights Reserved
2 #
3 # Permission is hereby granted, free of charge, to any person obtaining a
4 # copy of this software and associated documentation files (the
5 # "Software"), to deal in the Software without restriction, including
6 # without limitation the rights to use, copy, modify, merge, publish, dis-
7 # tribute, sublicense, and/or sell copies of the Software, and to permit
8 # persons to whom the Software is furnished to do so, subject to the fol-
9 # lowing conditions:
10 #
11 # The above copyright notice and this permission notice shall be included
12 # in all copies or substantial portions of the Software.
13 #
14 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15 # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
16 # ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
17 # SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
18 # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
20 # IN THE SOFTWARE.
21 #
22
23 import boto
24 from boto.compat import json
25 from boto.connection import AWSQueryConnection
26 from boto.regioninfo import RegionInfo
27 from boto.exception import JSONResponseError
28 from boto.opsworks import exceptions
29
30
31 class OpsWorksConnection(AWSQueryConnection):
32 """
33 AWS OpsWorks
34 Welcome to the AWS OpsWorks API Reference . This guide provides
35 descriptions, syntax, and usage examples about AWS OpsWorks
36 actions and data types, including common parameters and error
37 codes.
38
39 AWS OpsWorks is an application management service that provides an
40 integrated experience for overseeing the complete application
41 lifecycle. For information about this product, go to the `AWS
42 OpsWorks`_ details page.
43
44 **SDKs and CLI**
45
46 The most common way to use the AWS OpsWorks API is by using the
47 AWS Command Line Interface (CLI) or by using one of the AWS SDKs
48 to implement applications in your preferred language. For more
49 information, see:
50
51
52 + `AWS CLI`_
53 + `AWS SDK for Java`_
54 + `AWS SDK for .NET`_
55 + `AWS SDK for PHP 2`_
56 + `AWS SDK for Ruby`_
57 + `AWS SDK for Node.js`_
58 + `AWS SDK for Python(Boto)`_
59
60
61 **Endpoints**
62
63 AWS OpsWorks supports only one endpoint, opsworks.us-
64 east-1.amazonaws.com (HTTPS), so you must connect to that
65 endpoint. You can then use the API to direct AWS OpsWorks to
66 create stacks in any AWS Region.
67
68 **Chef Versions**
69
70 When you call CreateStack, CloneStack, or UpdateStack we recommend
71 you use the `ConfigurationManager` parameter to specify the Chef
72 version, 0.9, 11.4, or 11.10. The default value is currently
73 11.10. For more information, see `Chef Versions`_.
74
75 You can still specify Chef 0.9 for your stack, but new features
76 are not available for Chef 0.9 stacks, and support is scheduled to
77 end on July 24, 2014. We do not recommend using Chef 0.9 for new
78 stacks, and we recommend migrating your existing Chef 0.9 stacks
79 to Chef 11.10 as soon as possible.
80 """
81 APIVersion = "2013-02-18"
82 DefaultRegionName = "us-east-1"
83 DefaultRegionEndpoint = "opsworks.us-east-1.amazonaws.com"
84 ServiceName = "OpsWorks"
85 TargetPrefix = "OpsWorks_20130218"
86 ResponseError = JSONResponseError
87
88 _faults = {
89 "ResourceNotFoundException": exceptions.ResourceNotFoundException,
90 "ValidationException": exceptions.ValidationException,
91 }
92
93
94 def __init__(self, **kwargs):
95 region = kwargs.pop('region', None)
96 if not region:
97 region = RegionInfo(self, self.DefaultRegionName,
98 self.DefaultRegionEndpoint)
99
100 if 'host' not in kwargs or kwargs['host'] is None:
101 kwargs['host'] = region.endpoint
102
103 super(OpsWorksConnection, self).__init__(**kwargs)
104 self.region = region
105
106 def _required_auth_capability(self):
107 return ['hmac-v4']
108
109 def assign_instance(self, instance_id, layer_ids):
110 """
111 Assign a registered instance to a custom layer. You cannot use
112 this action with instances that were created with AWS
113 OpsWorks.
114
115 **Required Permissions**: To use this action, an IAM user must
116 have a Manage permissions level for the stack or an attached
117 policy that explicitly grants permissions. For more
118 information on user permissions, see `Managing User
119 Permissions`_.
120
121 :type instance_id: string
122 :param instance_id: The instance ID.
123
124 :type layer_ids: list
125 :param layer_ids: The layer ID, which must correspond to a custom
126 layer. You cannot assign a registered instance to a built-in layer.
127
128 """
129 params = {
130 'InstanceId': instance_id,
131 'LayerIds': layer_ids,
132 }
133 return self.make_request(action='AssignInstance',
134 body=json.dumps(params))
135
136 def assign_volume(self, volume_id, instance_id=None):
137 """
138 Assigns one of the stack's registered Amazon EBS volumes to a
139 specified instance. The volume must first be registered with
140 the stack by calling RegisterVolume. For more information, see
141 `Resource Management`_.
142
143 **Required Permissions**: To use this action, an IAM user must
144 have a Manage permissions level for the stack, or an attached
145 policy that explicitly grants permissions. For more
146 information on user permissions, see `Managing User
147 Permissions`_.
148
149 :type volume_id: string
150 :param volume_id: The volume ID.
151
152 :type instance_id: string
153 :param instance_id: The instance ID.
154
155 """
156 params = {'VolumeId': volume_id, }
157 if instance_id is not None:
158 params['InstanceId'] = instance_id
159 return self.make_request(action='AssignVolume',
160 body=json.dumps(params))
161
162 def associate_elastic_ip(self, elastic_ip, instance_id=None):
163 """
164 Associates one of the stack's registered Elastic IP addresses
165 with a specified instance. The address must first be
166 registered with the stack by calling RegisterElasticIp. For
167 more information, see `Resource Management`_.
168
169 **Required Permissions**: To use this action, an IAM user must
170 have a Manage permissions level for the stack, or an attached
171 policy that explicitly grants permissions. For more
172 information on user permissions, see `Managing User
173 Permissions`_.
174
175 :type elastic_ip: string
176 :param elastic_ip: The Elastic IP address.
177
178 :type instance_id: string
179 :param instance_id: The instance ID.
180
181 """
182 params = {'ElasticIp': elastic_ip, }
183 if instance_id is not None:
184 params['InstanceId'] = instance_id
185 return self.make_request(action='AssociateElasticIp',
186 body=json.dumps(params))
187
188 def attach_elastic_load_balancer(self, elastic_load_balancer_name,
189 layer_id):
190 """
191 Attaches an Elastic Load Balancing load balancer to a
192 specified layer. For more information, see `Elastic Load
193 Balancing`_.
194
195
196 You must create the Elastic Load Balancing instance
197 separately, by using the Elastic Load Balancing console, API,
198 or CLI. For more information, see ` Elastic Load Balancing
199 Developer Guide`_.
200
201
202 **Required Permissions**: To use this action, an IAM user must
203 have a Manage permissions level for the stack, or an attached
204 policy that explicitly grants permissions. For more
205 information on user permissions, see `Managing User
206 Permissions`_.
207
208 :type elastic_load_balancer_name: string
209 :param elastic_load_balancer_name: The Elastic Load Balancing
210 instance's name.
211
212 :type layer_id: string
213 :param layer_id: The ID of the layer that the Elastic Load Balancing
214 instance is to be attached to.
215
216 """
217 params = {
218 'ElasticLoadBalancerName': elastic_load_balancer_name,
219 'LayerId': layer_id,
220 }
221 return self.make_request(action='AttachElasticLoadBalancer',
222 body=json.dumps(params))
223
224 def clone_stack(self, source_stack_id, service_role_arn, name=None,
225 region=None, vpc_id=None, attributes=None,
226 default_instance_profile_arn=None, default_os=None,
227 hostname_theme=None, default_availability_zone=None,
228 default_subnet_id=None, custom_json=None,
229 configuration_manager=None, chef_configuration=None,
230 use_custom_cookbooks=None,
231 use_opsworks_security_groups=None,
232 custom_cookbooks_source=None, default_ssh_key_name=None,
233 clone_permissions=None, clone_app_ids=None,
234 default_root_device_type=None):
235 """
236 Creates a clone of a specified stack. For more information,
237 see `Clone a Stack`_.
238
239 **Required Permissions**: To use this action, an IAM user must
240 have an attached policy that explicitly grants permissions.
241 For more information on user permissions, see `Managing User
242 Permissions`_.
243
244 :type source_stack_id: string
245 :param source_stack_id: The source stack ID.
246
247 :type name: string
248 :param name: The cloned stack name.
249
250 :type region: string
251 :param region: The cloned stack AWS region, such as "us-east-1". For
252 more information about AWS regions, see `Regions and Endpoints`_.
253
254 :type vpc_id: string
255 :param vpc_id: The ID of the VPC that the cloned stack is to be
256 launched into. It must be in the specified region. All instances
257 are launched into this VPC, and you cannot change the ID later.
258
259 + If your account supports EC2 Classic, the default value is no VPC.
260 + If your account does not support EC2 Classic, the default value is
261 the default VPC for the specified region.
262
263
264 If the VPC ID corresponds to a default VPC and you have specified
265 either the `DefaultAvailabilityZone` or the `DefaultSubnetId`
266 parameter only, AWS OpsWorks infers the value of the other
267 parameter. If you specify neither parameter, AWS OpsWorks sets
268 these parameters to the first valid Availability Zone for the
269 specified region and the corresponding default VPC subnet ID,
270 respectively.
271
272 If you specify a nondefault VPC ID, note the following:
273
274
275 + It must belong to a VPC in your account that is in the specified
276 region.
277 + You must specify a value for `DefaultSubnetId`.
278
279
280 For more information on how to use AWS OpsWorks with a VPC, see
281 `Running a Stack in a VPC`_. For more information on default VPC
282 and EC2 Classic, see `Supported Platforms`_.
283
284 :type attributes: map
285 :param attributes: A list of stack attributes and values as key/value
286 pairs to be added to the cloned stack.
287
288 :type service_role_arn: string
289 :param service_role_arn:
290 The stack AWS Identity and Access Management (IAM) role, which allows
291 AWS OpsWorks to work with AWS resources on your behalf. You must
292 set this parameter to the Amazon Resource Name (ARN) for an
293 existing IAM role. If you create a stack by using the AWS OpsWorks
294 console, it creates the role for you. You can obtain an existing
295 stack's IAM ARN programmatically by calling DescribePermissions.
296 For more information about IAM ARNs, see `Using Identifiers`_.
297
298
299 You must set this parameter to a valid service role ARN or the action
300 will fail; there is no default value. You can specify the source
301 stack's service role ARN, if you prefer, but you must do so
302 explicitly.
303
304 :type default_instance_profile_arn: string
305 :param default_instance_profile_arn: The ARN of an IAM profile that is
306 the default profile for all of the stack's EC2 instances. For more
307 information about IAM ARNs, see `Using Identifiers`_.
308
309 :type default_os: string
310 :param default_os: The stacks's operating system, which must be set to
311 one of the following.
312
313 + Standard operating systems: an Amazon Linux version such as `Amazon
314 Linux 2014.09`, `Ubuntu 12.04 LTS`, or `Ubuntu 14.04 LTS`.
315 + Custom AMIs: `Custom`. You specify the custom AMI you want to use
316 when you create instances.
317
318
319 The default option is the current Amazon Linux version.
320
321 :type hostname_theme: string
322 :param hostname_theme: The stack's host name theme, with spaces are
323 replaced by underscores. The theme is used to generate host names
324 for the stack's instances. By default, `HostnameTheme` is set to
325 `Layer_Dependent`, which creates host names by appending integers
326 to the layer's short name. The other themes are:
327
328 + `Baked_Goods`
329 + `Clouds`
330 + `European_Cities`
331 + `Fruits`
332 + `Greek_Deities`
333 + `Legendary_Creatures_from_Japan`
334 + `Planets_and_Moons`
335 + `Roman_Deities`
336 + `Scottish_Islands`
337 + `US_Cities`
338 + `Wild_Cats`
339
340
341 To obtain a generated host name, call `GetHostNameSuggestion`, which
342 returns a host name based on the current theme.
343
344 :type default_availability_zone: string
345 :param default_availability_zone: The cloned stack's default
346 Availability Zone, which must be in the specified region. For more
347 information, see `Regions and Endpoints`_. If you also specify a
348 value for `DefaultSubnetId`, the subnet must be in the same zone.
349 For more information, see the `VpcId` parameter description.
350
351 :type default_subnet_id: string
352 :param default_subnet_id: The stack's default VPC subnet ID. This
353 parameter is required if you specify a value for the `VpcId`
354 parameter. All instances are launched into this subnet unless you
355 specify otherwise when you create the instance. If you also specify
356 a value for `DefaultAvailabilityZone`, the subnet must be in that
357 zone. For information on default values and when this parameter is
358 required, see the `VpcId` parameter description.
359
360 :type custom_json: string
361 :param custom_json: A string that contains user-defined, custom JSON.
362 It is used to override the corresponding default stack
363 configuration JSON values. The string should be in the following
364 format and must escape characters such as '"'.:
365 `"{\"key1\": \"value1\", \"key2\": \"value2\",...}"`
366
367 For more information on custom JSON, see `Use Custom JSON to Modify the
368 Stack Configuration JSON`_
369
370 :type configuration_manager: dict
371 :param configuration_manager: The configuration manager. When you clone
372 a stack we recommend that you use the configuration manager to
373 specify the Chef version, 0.9, 11.4, or 11.10. The default value is
374 currently 11.4.
375
376 :type chef_configuration: dict
377 :param chef_configuration: A `ChefConfiguration` object that specifies
378 whether to enable Berkshelf and the Berkshelf version on Chef 11.10
379 stacks. For more information, see `Create a New Stack`_.
380
381 :type use_custom_cookbooks: boolean
382 :param use_custom_cookbooks: Whether to use custom cookbooks.
383
384 :type use_opsworks_security_groups: boolean
385 :param use_opsworks_security_groups: Whether to associate the AWS
386 OpsWorks built-in security groups with the stack's layers.
387 AWS OpsWorks provides a standard set of built-in security groups, one
388 for each layer, which are associated with layers by default. With
389 `UseOpsworksSecurityGroups` you can instead provide your own custom
390 security groups. `UseOpsworksSecurityGroups` has the following
391 settings:
392
393
394 + True - AWS OpsWorks automatically associates the appropriate built-in
395 security group with each layer (default setting). You can associate
396 additional security groups with a layer after you create it but you
397 cannot delete the built-in security group.
398 + False - AWS OpsWorks does not associate built-in security groups with
399 layers. You must create appropriate EC2 security groups and
400 associate a security group with each layer that you create.
401 However, you can still manually associate a built-in security group
402 with a layer on creation; custom security groups are required only
403 for those layers that need custom settings.
404
405
406 For more information, see `Create a New Stack`_.
407
408 :type custom_cookbooks_source: dict
409 :param custom_cookbooks_source: Contains the information required to
410 retrieve an app or cookbook from a repository. For more
411 information, see `Creating Apps`_ or `Custom Recipes and
412 Cookbooks`_.
413
414 :type default_ssh_key_name: string
415 :param default_ssh_key_name: A default SSH key for the stack instances.
416 You can override this value when you create or update an instance.
417
418 :type clone_permissions: boolean
419 :param clone_permissions: Whether to clone the source stack's
420 permissions.
421
422 :type clone_app_ids: list
423 :param clone_app_ids: A list of source stack app IDs to be included in
424 the cloned stack.
425
426 :type default_root_device_type: string
427 :param default_root_device_type: The default root device type. This
428 value is used by default for all instances in the cloned stack, but
429 you can override it when you create an instance. For more
430 information, see `Storage for the Root Device`_.
431
432 """
433 params = {
434 'SourceStackId': source_stack_id,
435 'ServiceRoleArn': service_role_arn,
436 }
437 if name is not None:
438 params['Name'] = name
439 if region is not None:
440 params['Region'] = region
441 if vpc_id is not None:
442 params['VpcId'] = vpc_id
443 if attributes is not None:
444 params['Attributes'] = attributes
445 if default_instance_profile_arn is not None:
446 params['DefaultInstanceProfileArn'] = default_instance_profile_arn
447 if default_os is not None:
448 params['DefaultOs'] = default_os
449 if hostname_theme is not None:
450 params['HostnameTheme'] = hostname_theme
451 if default_availability_zone is not None:
452 params['DefaultAvailabilityZone'] = default_availability_zone
453 if default_subnet_id is not None:
454 params['DefaultSubnetId'] = default_subnet_id
455 if custom_json is not None:
456 params['CustomJson'] = custom_json
457 if configuration_manager is not None:
458 params['ConfigurationManager'] = configuration_manager
459 if chef_configuration is not None:
460 params['ChefConfiguration'] = chef_configuration
461 if use_custom_cookbooks is not None:
462 params['UseCustomCookbooks'] = use_custom_cookbooks
463 if use_opsworks_security_groups is not None:
464 params['UseOpsworksSecurityGroups'] = use_opsworks_security_groups
465 if custom_cookbooks_source is not None:
466 params['CustomCookbooksSource'] = custom_cookbooks_source
467 if default_ssh_key_name is not None:
468 params['DefaultSshKeyName'] = default_ssh_key_name
469 if clone_permissions is not None:
470 params['ClonePermissions'] = clone_permissions
471 if clone_app_ids is not None:
472 params['CloneAppIds'] = clone_app_ids
473 if default_root_device_type is not None:
474 params['DefaultRootDeviceType'] = default_root_device_type
475 return self.make_request(action='CloneStack',
476 body=json.dumps(params))
477
478 def create_app(self, stack_id, name, type, shortname=None,
479 description=None, data_sources=None, app_source=None,
480 domains=None, enable_ssl=None, ssl_configuration=None,
481 attributes=None, environment=None):
482 """
483 Creates an app for a specified stack. For more information,
484 see `Creating Apps`_.
485
486 **Required Permissions**: To use this action, an IAM user must
487 have a Manage permissions level for the stack, or an attached
488 policy that explicitly grants permissions. For more
489 information on user permissions, see `Managing User
490 Permissions`_.
491
492 :type stack_id: string
493 :param stack_id: The stack ID.
494
495 :type shortname: string
496 :param shortname: The app's short name.
497
498 :type name: string
499 :param name: The app name.
500
501 :type description: string
502 :param description: A description of the app.
503
504 :type data_sources: list
505 :param data_sources: The app's data source.
506
507 :type type: string
508 :param type: The app type. Each supported type is associated with a
509 particular layer. For example, PHP applications are associated with
510 a PHP layer. AWS OpsWorks deploys an application to those instances
511 that are members of the corresponding layer.
512
513 :type app_source: dict
514 :param app_source: A `Source` object that specifies the app repository.
515
516 :type domains: list
517 :param domains: The app virtual host settings, with multiple domains
518 separated by commas. For example: `'www.example.com, example.com'`
519
520 :type enable_ssl: boolean
521 :param enable_ssl: Whether to enable SSL for the app.
522
523 :type ssl_configuration: dict
524 :param ssl_configuration: An `SslConfiguration` object with the SSL
525 configuration.
526
527 :type attributes: map
528 :param attributes: One or more user-defined key/value pairs to be added
529 to the stack attributes.
530
531 :type environment: list
532 :param environment:
533 An array of `EnvironmentVariable` objects that specify environment
534 variables to be associated with the app. You can specify up to ten
535 environment variables. After you deploy the app, these variables
536 are defined on the associated app server instance.
537
538 This parameter is supported only by Chef 11.10 stacks. If you have
539 specified one or more environment variables, you cannot modify the
540 stack's Chef version.
541
542 """
543 params = {'StackId': stack_id, 'Name': name, 'Type': type, }
544 if shortname is not None:
545 params['Shortname'] = shortname
546 if description is not None:
547 params['Description'] = description
548 if data_sources is not None:
549 params['DataSources'] = data_sources
550 if app_source is not None:
551 params['AppSource'] = app_source
552 if domains is not None:
553 params['Domains'] = domains
554 if enable_ssl is not None:
555 params['EnableSsl'] = enable_ssl
556 if ssl_configuration is not None:
557 params['SslConfiguration'] = ssl_configuration
558 if attributes is not None:
559 params['Attributes'] = attributes
560 if environment is not None:
561 params['Environment'] = environment
562 return self.make_request(action='CreateApp',
563 body=json.dumps(params))
564
565 def create_deployment(self, stack_id, command, app_id=None,
566 instance_ids=None, comment=None, custom_json=None):
567 """
568 Runs deployment or stack commands. For more information, see
569 `Deploying Apps`_ and `Run Stack Commands`_.
570
571 **Required Permissions**: To use this action, an IAM user must
572 have a Deploy or Manage permissions level for the stack, or an
573 attached policy that explicitly grants permissions. For more
574 information on user permissions, see `Managing User
575 Permissions`_.
576
577 :type stack_id: string
578 :param stack_id: The stack ID.
579
580 :type app_id: string
581 :param app_id: The app ID. This parameter is required for app
582 deployments, but not for other deployment commands.
583
584 :type instance_ids: list
585 :param instance_ids: The instance IDs for the deployment targets.
586
587 :type command: dict
588 :param command: A `DeploymentCommand` object that specifies the
589 deployment command and any associated arguments.
590
591 :type comment: string
592 :param comment: A user-defined comment.
593
594 :type custom_json: string
595 :param custom_json: A string that contains user-defined, custom JSON.
596 It is used to override the corresponding default stack
597 configuration JSON values. The string should be in the following
598 format and must escape characters such as '"'.:
599 `"{\"key1\": \"value1\", \"key2\": \"value2\",...}"`
600
601 For more information on custom JSON, see `Use Custom JSON to Modify the
602 Stack Configuration JSON`_.
603
604 """
605 params = {'StackId': stack_id, 'Command': command, }
606 if app_id is not None:
607 params['AppId'] = app_id
608 if instance_ids is not None:
609 params['InstanceIds'] = instance_ids
610 if comment is not None:
611 params['Comment'] = comment
612 if custom_json is not None:
613 params['CustomJson'] = custom_json
614 return self.make_request(action='CreateDeployment',
615 body=json.dumps(params))
616
617 def create_instance(self, stack_id, layer_ids, instance_type,
618 auto_scaling_type=None, hostname=None, os=None,
619 ami_id=None, ssh_key_name=None,
620 availability_zone=None, virtualization_type=None,
621 subnet_id=None, architecture=None,
622 root_device_type=None, install_updates_on_boot=None,
623 ebs_optimized=None):
624 """
625 Creates an instance in a specified stack. For more
626 information, see `Adding an Instance to a Layer`_.
627
628 **Required Permissions**: To use this action, an IAM user must
629 have a Manage permissions level for the stack, or an attached
630 policy that explicitly grants permissions. For more
631 information on user permissions, see `Managing User
632 Permissions`_.
633
634 :type stack_id: string
635 :param stack_id: The stack ID.
636
637 :type layer_ids: list
638 :param layer_ids: An array that contains the instance layer IDs.
639
640 :type instance_type: string
641 :param instance_type: The instance type. AWS OpsWorks supports all
642 instance types except Cluster Compute, Cluster GPU, and High Memory
643 Cluster. For more information, see `Instance Families and Types`_.
644 The parameter values that you use to specify the various types are
645 in the API Name column of the Available Instance Types table.
646
647 :type auto_scaling_type: string
648 :param auto_scaling_type: For load-based or time-based instances, the
649 type.
650
651 :type hostname: string
652 :param hostname: The instance host name.
653
654 :type os: string
655 :param os: The instance's operating system, which must be set to one of
656 the following.
657
658 + Standard operating systems: an Amazon Linux version such as `Amazon
659 Linux 2014.09`, `Ubuntu 12.04 LTS`, or `Ubuntu 14.04 LTS`.
660 + Custom AMIs: `Custom`
661
662
663 The default option is the current Amazon Linux version. If you set this
664 parameter to `Custom`, you must use the CreateInstance action's
665 AmiId parameter to specify the custom AMI that you want to use. For
666 more information on the standard operating systems, see `Operating
667 Systems`_For more information on how to use custom AMIs with
668 OpsWorks, see `Using Custom AMIs`_.
669
670 :type ami_id: string
671 :param ami_id:
672 A custom AMI ID to be used to create the instance. The AMI should be
673 based on one of the standard AWS OpsWorks AMIs: Amazon Linux,
674 Ubuntu 12.04 LTS, or Ubuntu 14.04 LTS. For more information, see
675 `Instances`_.
676
677 If you specify a custom AMI, you must set `Os` to `Custom`.
678
679 :type ssh_key_name: string
680 :param ssh_key_name: The instance SSH key name.
681
682 :type availability_zone: string
683 :param availability_zone: The instance Availability Zone. For more
684 information, see `Regions and Endpoints`_.
685
686 :type virtualization_type: string
687 :param virtualization_type: The instance's virtualization type,
688 `paravirtual` or `hvm`.
689
690 :type subnet_id: string
691 :param subnet_id: The ID of the instance's subnet. If the stack is
692 running in a VPC, you can use this parameter to override the
693 stack's default subnet ID value and direct AWS OpsWorks to launch
694 the instance in a different subnet.
695
696 :type architecture: string
697 :param architecture: The instance architecture. The default option is
698 `x86_64`. Instance types do not necessarily support both
699 architectures. For a list of the architectures that are supported
700 by the different instance types, see `Instance Families and
701 Types`_.
702
703 :type root_device_type: string
704 :param root_device_type: The instance root device type. For more
705 information, see `Storage for the Root Device`_.
706
707 :type install_updates_on_boot: boolean
708 :param install_updates_on_boot:
709 Whether to install operating system and package updates when the
710 instance boots. The default value is `True`. To control when
711 updates are installed, set this value to `False`. You must then
712 update your instances manually by using CreateDeployment to run the
713 `update_dependencies` stack command or manually running `yum`
714 (Amazon Linux) or `apt-get` (Ubuntu) on the instances.
715
716
717 We strongly recommend using the default value of `True` to ensure that
718 your instances have the latest security updates.
719
720 :type ebs_optimized: boolean
721 :param ebs_optimized: Whether to create an Amazon EBS-optimized
722 instance.
723
724 """
725 params = {
726 'StackId': stack_id,
727 'LayerIds': layer_ids,
728 'InstanceType': instance_type,
729 }
730 if auto_scaling_type is not None:
731 params['AutoScalingType'] = auto_scaling_type
732 if hostname is not None:
733 params['Hostname'] = hostname
734 if os is not None:
735 params['Os'] = os
736 if ami_id is not None:
737 params['AmiId'] = ami_id
738 if ssh_key_name is not None:
739 params['SshKeyName'] = ssh_key_name
740 if availability_zone is not None:
741 params['AvailabilityZone'] = availability_zone
742 if virtualization_type is not None:
743 params['VirtualizationType'] = virtualization_type
744 if subnet_id is not None:
745 params['SubnetId'] = subnet_id
746 if architecture is not None:
747 params['Architecture'] = architecture
748 if root_device_type is not None:
749 params['RootDeviceType'] = root_device_type
750 if install_updates_on_boot is not None:
751 params['InstallUpdatesOnBoot'] = install_updates_on_boot
752 if ebs_optimized is not None:
753 params['EbsOptimized'] = ebs_optimized
754 return self.make_request(action='CreateInstance',
755 body=json.dumps(params))
756
757 def create_layer(self, stack_id, type, name, shortname, attributes=None,
758 custom_instance_profile_arn=None,
759 custom_security_group_ids=None, packages=None,
760 volume_configurations=None, enable_auto_healing=None,
761 auto_assign_elastic_ips=None,
762 auto_assign_public_ips=None, custom_recipes=None,
763 install_updates_on_boot=None,
764 use_ebs_optimized_instances=None,
765 lifecycle_event_configuration=None):
766 """
767 Creates a layer. For more information, see `How to Create a
768 Layer`_.
769
770
771 You should use **CreateLayer** for noncustom layer types such
772 as PHP App Server only if the stack does not have an existing
773 layer of that type. A stack can have at most one instance of
774 each noncustom layer; if you attempt to create a second
775 instance, **CreateLayer** fails. A stack can have an arbitrary
776 number of custom layers, so you can call **CreateLayer** as
777 many times as you like for that layer type.
778
779
780 **Required Permissions**: To use this action, an IAM user must
781 have a Manage permissions level for the stack, or an attached
782 policy that explicitly grants permissions. For more
783 information on user permissions, see `Managing User
784 Permissions`_.
785
786 :type stack_id: string
787 :param stack_id: The layer stack ID.
788
789 :type type: string
790 :param type: The layer type. A stack cannot have more than one built-in
791 layer of the same type. It can have any number of custom layers.
792
793 :type name: string
794 :param name: The layer name, which is used by the console.
795
796 :type shortname: string
797 :param shortname: The layer short name, which is used internally by AWS
798 OpsWorks and by Chef recipes. The short name is also used as the
799 name for the directory where your app files are installed. It can
800 have a maximum of 200 characters, which are limited to the
801 alphanumeric characters, '-', '_', and '.'.
802
803 :type attributes: map
804 :param attributes: One or more user-defined key/value pairs to be added
805 to the stack attributes.
806
807 :type custom_instance_profile_arn: string
808 :param custom_instance_profile_arn: The ARN of an IAM profile that to
809 be used for the layer's EC2 instances. For more information about
810 IAM ARNs, see `Using Identifiers`_.
811
812 :type custom_security_group_ids: list
813 :param custom_security_group_ids: An array containing the layer custom
814 security group IDs.
815
816 :type packages: list
817 :param packages: An array of `Package` objects that describe the layer
818 packages.
819
820 :type volume_configurations: list
821 :param volume_configurations: A `VolumeConfigurations` object that
822 describes the layer's Amazon EBS volumes.
823
824 :type enable_auto_healing: boolean
825 :param enable_auto_healing: Whether to disable auto healing for the
826 layer.
827
828 :type auto_assign_elastic_ips: boolean
829 :param auto_assign_elastic_ips: Whether to automatically assign an
830 `Elastic IP address`_ to the layer's instances. For more
831 information, see `How to Edit a Layer`_.
832
833 :type auto_assign_public_ips: boolean
834 :param auto_assign_public_ips: For stacks that are running in a VPC,
835 whether to automatically assign a public IP address to the layer's
836 instances. For more information, see `How to Edit a Layer`_.
837
838 :type custom_recipes: dict
839 :param custom_recipes: A `LayerCustomRecipes` object that specifies the
840 layer custom recipes.
841
842 :type install_updates_on_boot: boolean
843 :param install_updates_on_boot:
844 Whether to install operating system and package updates when the
845 instance boots. The default value is `True`. To control when
846 updates are installed, set this value to `False`. You must then
847 update your instances manually by using CreateDeployment to run the
848 `update_dependencies` stack command or manually running `yum`
849 (Amazon Linux) or `apt-get` (Ubuntu) on the instances.
850
851
852 We strongly recommend using the default value of `True`, to ensure that
853 your instances have the latest security updates.
854
855 :type use_ebs_optimized_instances: boolean
856 :param use_ebs_optimized_instances: Whether to use Amazon EBS-optimized
857 instances.
858
859 :type lifecycle_event_configuration: dict
860 :param lifecycle_event_configuration: A LifeCycleEventConfiguration
861 object that you can use to configure the Shutdown event to specify
862 an execution timeout and enable or disable Elastic Load Balancer
863 connection draining.
864
865 """
866 params = {
867 'StackId': stack_id,
868 'Type': type,
869 'Name': name,
870 'Shortname': shortname,
871 }
872 if attributes is not None:
873 params['Attributes'] = attributes
874 if custom_instance_profile_arn is not None:
875 params['CustomInstanceProfileArn'] = custom_instance_profile_arn
876 if custom_security_group_ids is not None:
877 params['CustomSecurityGroupIds'] = custom_security_group_ids
878 if packages is not None:
879 params['Packages'] = packages
880 if volume_configurations is not None:
881 params['VolumeConfigurations'] = volume_configurations
882 if enable_auto_healing is not None:
883 params['EnableAutoHealing'] = enable_auto_healing
884 if auto_assign_elastic_ips is not None:
885 params['AutoAssignElasticIps'] = auto_assign_elastic_ips
886 if auto_assign_public_ips is not None:
887 params['AutoAssignPublicIps'] = auto_assign_public_ips
888 if custom_recipes is not None:
889 params['CustomRecipes'] = custom_recipes
890 if install_updates_on_boot is not None:
891 params['InstallUpdatesOnBoot'] = install_updates_on_boot
892 if use_ebs_optimized_instances is not None:
893 params['UseEbsOptimizedInstances'] = use_ebs_optimized_instances
894 if lifecycle_event_configuration is not None:
895 params['LifecycleEventConfiguration'] = lifecycle_event_configuration
896 return self.make_request(action='CreateLayer',
897 body=json.dumps(params))
898
899 def create_stack(self, name, region, service_role_arn,
900 default_instance_profile_arn, vpc_id=None,
901 attributes=None, default_os=None, hostname_theme=None,
902 default_availability_zone=None, default_subnet_id=None,
903 custom_json=None, configuration_manager=None,
904 chef_configuration=None, use_custom_cookbooks=None,
905 use_opsworks_security_groups=None,
906 custom_cookbooks_source=None, default_ssh_key_name=None,
907 default_root_device_type=None):
908 """
909 Creates a new stack. For more information, see `Create a New
910 Stack`_.
911
912 **Required Permissions**: To use this action, an IAM user must
913 have an attached policy that explicitly grants permissions.
914 For more information on user permissions, see `Managing User
915 Permissions`_.
916
917 :type name: string
918 :param name: The stack name.
919
920 :type region: string
921 :param region: The stack AWS region, such as "us-east-1". For more
922 information about Amazon regions, see `Regions and Endpoints`_.
923
924 :type vpc_id: string
925 :param vpc_id: The ID of the VPC that the stack is to be launched into.
926 It must be in the specified region. All instances are launched into
927 this VPC, and you cannot change the ID later.
928
929 + If your account supports EC2 Classic, the default value is no VPC.
930 + If your account does not support EC2 Classic, the default value is
931 the default VPC for the specified region.
932
933
934 If the VPC ID corresponds to a default VPC and you have specified
935 either the `DefaultAvailabilityZone` or the `DefaultSubnetId`
936 parameter only, AWS OpsWorks infers the value of the other
937 parameter. If you specify neither parameter, AWS OpsWorks sets
938 these parameters to the first valid Availability Zone for the
939 specified region and the corresponding default VPC subnet ID,
940 respectively.
941
942 If you specify a nondefault VPC ID, note the following:
943
944
945 + It must belong to a VPC in your account that is in the specified
946 region.
947 + You must specify a value for `DefaultSubnetId`.
948
949
950 For more information on how to use AWS OpsWorks with a VPC, see
951 `Running a Stack in a VPC`_. For more information on default VPC
952 and EC2 Classic, see `Supported Platforms`_.
953
954 :type attributes: map
955 :param attributes: One or more user-defined key/value pairs to be added
956 to the stack attributes.
957
958 :type service_role_arn: string
959 :param service_role_arn: The stack AWS Identity and Access Management
960 (IAM) role, which allows AWS OpsWorks to work with AWS resources on
961 your behalf. You must set this parameter to the Amazon Resource
962 Name (ARN) for an existing IAM role. For more information about IAM
963 ARNs, see `Using Identifiers`_.
964
965 :type default_instance_profile_arn: string
966 :param default_instance_profile_arn: The ARN of an IAM profile that is
967 the default profile for all of the stack's EC2 instances. For more
968 information about IAM ARNs, see `Using Identifiers`_.
969
970 :type default_os: string
971 :param default_os: The stack's operating system, which must be set to
972 one of the following.
973
974 + Standard operating systems: an Amazon Linux version such as `Amazon
975 Linux 2014.09`, `Ubuntu 12.04 LTS`, or `Ubuntu 14.04 LTS`.
976 + Custom AMIs: `Custom`. You specify the custom AMI you want to use
977 when you create instances.
978
979
980 The default option is the current Amazon Linux version.
981
982 :type hostname_theme: string
983 :param hostname_theme: The stack's host name theme, with spaces are
984 replaced by underscores. The theme is used to generate host names
985 for the stack's instances. By default, `HostnameTheme` is set to
986 `Layer_Dependent`, which creates host names by appending integers
987 to the layer's short name. The other themes are:
988
989 + `Baked_Goods`
990 + `Clouds`
991 + `European_Cities`
992 + `Fruits`
993 + `Greek_Deities`
994 + `Legendary_Creatures_from_Japan`
995 + `Planets_and_Moons`
996 + `Roman_Deities`
997 + `Scottish_Islands`
998 + `US_Cities`
999 + `Wild_Cats`
1000
1001
1002 To obtain a generated host name, call `GetHostNameSuggestion`, which
1003 returns a host name based on the current theme.
1004
1005 :type default_availability_zone: string
1006 :param default_availability_zone: The stack's default Availability
1007 Zone, which must be in the specified region. For more information,
1008 see `Regions and Endpoints`_. If you also specify a value for
1009 `DefaultSubnetId`, the subnet must be in the same zone. For more
1010 information, see the `VpcId` parameter description.
1011
1012 :type default_subnet_id: string
1013 :param default_subnet_id: The stack's default VPC subnet ID. This
1014 parameter is required if you specify a value for the `VpcId`
1015 parameter. All instances are launched into this subnet unless you
1016 specify otherwise when you create the instance. If you also specify
1017 a value for `DefaultAvailabilityZone`, the subnet must be in that
1018 zone. For information on default values and when this parameter is
1019 required, see the `VpcId` parameter description.
1020
1021 :type custom_json: string
1022 :param custom_json: A string that contains user-defined, custom JSON.
1023 It is used to override the corresponding default stack
1024 configuration JSON values. The string should be in the following
1025 format and must escape characters such as '"'.:
1026 `"{\"key1\": \"value1\", \"key2\": \"value2\",...}"`
1027
1028 For more information on custom JSON, see `Use Custom JSON to Modify the
1029 Stack Configuration JSON`_.
1030
1031 :type configuration_manager: dict
1032 :param configuration_manager: The configuration manager. When you clone
1033 a stack we recommend that you use the configuration manager to
1034 specify the Chef version, 0.9, 11.4, or 11.10. The default value is
1035 currently 11.4.
1036
1037 :type chef_configuration: dict
1038 :param chef_configuration: A `ChefConfiguration` object that specifies
1039 whether to enable Berkshelf and the Berkshelf version on Chef 11.10
1040 stacks. For more information, see `Create a New Stack`_.
1041
1042 :type use_custom_cookbooks: boolean
1043 :param use_custom_cookbooks: Whether the stack uses custom cookbooks.
1044
1045 :type use_opsworks_security_groups: boolean
1046 :param use_opsworks_security_groups: Whether to associate the AWS
1047 OpsWorks built-in security groups with the stack's layers.
1048 AWS OpsWorks provides a standard set of built-in security groups, one
1049 for each layer, which are associated with layers by default. With
1050 `UseOpsworksSecurityGroups` you can instead provide your own custom
1051 security groups. `UseOpsworksSecurityGroups` has the following
1052 settings:
1053
1054
1055 + True - AWS OpsWorks automatically associates the appropriate built-in
1056 security group with each layer (default setting). You can associate
1057 additional security groups with a layer after you create it but you
1058 cannot delete the built-in security group.
1059 + False - AWS OpsWorks does not associate built-in security groups with
1060 layers. You must create appropriate EC2 security groups and
1061 associate a security group with each layer that you create.
1062 However, you can still manually associate a built-in security group
1063 with a layer on creation; custom security groups are required only
1064 for those layers that need custom settings.
1065
1066
1067 For more information, see `Create a New Stack`_.
1068
1069 :type custom_cookbooks_source: dict
1070 :param custom_cookbooks_source: Contains the information required to
1071 retrieve an app or cookbook from a repository. For more
1072 information, see `Creating Apps`_ or `Custom Recipes and
1073 Cookbooks`_.
1074
1075 :type default_ssh_key_name: string
1076 :param default_ssh_key_name: A default SSH key for the stack instances.
1077 You can override this value when you create or update an instance.
1078
1079 :type default_root_device_type: string
1080 :param default_root_device_type: The default root device type. This
1081 value is used by default for all instances in the stack, but you
1082 can override it when you create an instance. The default option is
1083 `instance-store`. For more information, see `Storage for the Root
1084 Device`_.
1085
1086 """
1087 params = {
1088 'Name': name,
1089 'Region': region,
1090 'ServiceRoleArn': service_role_arn,
1091 'DefaultInstanceProfileArn': default_instance_profile_arn,
1092 }
1093 if vpc_id is not None:
1094 params['VpcId'] = vpc_id
1095 if attributes is not None:
1096 params['Attributes'] = attributes
1097 if default_os is not None:
1098 params['DefaultOs'] = default_os
1099 if hostname_theme is not None:
1100 params['HostnameTheme'] = hostname_theme
1101 if default_availability_zone is not None:
1102 params['DefaultAvailabilityZone'] = default_availability_zone
1103 if default_subnet_id is not None:
1104 params['DefaultSubnetId'] = default_subnet_id
1105 if custom_json is not None:
1106 params['CustomJson'] = custom_json
1107 if configuration_manager is not None:
1108 params['ConfigurationManager'] = configuration_manager
1109 if chef_configuration is not None:
1110 params['ChefConfiguration'] = chef_configuration
1111 if use_custom_cookbooks is not None:
1112 params['UseCustomCookbooks'] = use_custom_cookbooks
1113 if use_opsworks_security_groups is not None:
1114 params['UseOpsworksSecurityGroups'] = use_opsworks_security_groups
1115 if custom_cookbooks_source is not None:
1116 params['CustomCookbooksSource'] = custom_cookbooks_source
1117 if default_ssh_key_name is not None:
1118 params['DefaultSshKeyName'] = default_ssh_key_name
1119 if default_root_device_type is not None:
1120 params['DefaultRootDeviceType'] = default_root_device_type
1121 return self.make_request(action='CreateStack',
1122 body=json.dumps(params))
1123
1124 def create_user_profile(self, iam_user_arn, ssh_username=None,
1125 ssh_public_key=None, allow_self_management=None):
1126 """
1127 Creates a new user profile.
1128
1129 **Required Permissions**: To use this action, an IAM user must
1130 have an attached policy that explicitly grants permissions.
1131 For more information on user permissions, see `Managing User
1132 Permissions`_.
1133
1134 :type iam_user_arn: string
1135 :param iam_user_arn: The user's IAM ARN.
1136
1137 :type ssh_username: string
1138 :param ssh_username: The user's SSH user name. The allowable characters
1139 are [a-z], [A-Z], [0-9], '-', and '_'. If the specified name
1140 includes other punctuation marks, AWS OpsWorks removes them. For
1141 example, `my.name` will be changed to `myname`. If you do not
1142 specify an SSH user name, AWS OpsWorks generates one from the IAM
1143 user name.
1144
1145 :type ssh_public_key: string
1146 :param ssh_public_key: The user's public SSH key.
1147
1148 :type allow_self_management: boolean
1149 :param allow_self_management: Whether users can specify their own SSH
1150 public key through the My Settings page. For more information, see
1151 `Setting an IAM User's Public SSH Key`_.
1152
1153 """
1154 params = {'IamUserArn': iam_user_arn, }
1155 if ssh_username is not None:
1156 params['SshUsername'] = ssh_username
1157 if ssh_public_key is not None:
1158 params['SshPublicKey'] = ssh_public_key
1159 if allow_self_management is not None:
1160 params['AllowSelfManagement'] = allow_self_management
1161 return self.make_request(action='CreateUserProfile',
1162 body=json.dumps(params))
1163
1164 def delete_app(self, app_id):
1165 """
1166 Deletes a specified app.
1167
1168 **Required Permissions**: To use this action, an IAM user must
1169 have a Manage permissions level for the stack, or an attached
1170 policy that explicitly grants permissions. For more
1171 information on user permissions, see `Managing User
1172 Permissions`_.
1173
1174 :type app_id: string
1175 :param app_id: The app ID.
1176
1177 """
1178 params = {'AppId': app_id, }
1179 return self.make_request(action='DeleteApp',
1180 body=json.dumps(params))
1181
1182 def delete_instance(self, instance_id, delete_elastic_ip=None,
1183 delete_volumes=None):
1184 """
1185 Deletes a specified instance, which terminates the associated
1186 Amazon EC2 instance. You must stop an instance before you can
1187 delete it.
1188
1189 For more information, see `Deleting Instances`_.
1190
1191 **Required Permissions**: To use this action, an IAM user must
1192 have a Manage permissions level for the stack, or an attached
1193 policy that explicitly grants permissions. For more
1194 information on user permissions, see `Managing User
1195 Permissions`_.
1196
1197 :type instance_id: string
1198 :param instance_id: The instance ID.
1199
1200 :type delete_elastic_ip: boolean
1201 :param delete_elastic_ip: Whether to delete the instance Elastic IP
1202 address.
1203
1204 :type delete_volumes: boolean
1205 :param delete_volumes: Whether to delete the instance's Amazon EBS
1206 volumes.
1207
1208 """
1209 params = {'InstanceId': instance_id, }
1210 if delete_elastic_ip is not None:
1211 params['DeleteElasticIp'] = delete_elastic_ip
1212 if delete_volumes is not None:
1213 params['DeleteVolumes'] = delete_volumes
1214 return self.make_request(action='DeleteInstance',
1215 body=json.dumps(params))
1216
1217 def delete_layer(self, layer_id):
1218 """
1219 Deletes a specified layer. You must first stop and then delete
1220 all associated instances or unassign registered instances. For
1221 more information, see `How to Delete a Layer`_.
1222
1223 **Required Permissions**: To use this action, an IAM user must
1224 have a Manage permissions level for the stack, or an attached
1225 policy that explicitly grants permissions. For more
1226 information on user permissions, see `Managing User
1227 Permissions`_.
1228
1229 :type layer_id: string
1230 :param layer_id: The layer ID.
1231
1232 """
1233 params = {'LayerId': layer_id, }
1234 return self.make_request(action='DeleteLayer',
1235 body=json.dumps(params))
1236
1237 def delete_stack(self, stack_id):
1238 """
1239 Deletes a specified stack. You must first delete all
1240 instances, layers, and apps or deregister registered
1241 instances. For more information, see `Shut Down a Stack`_.
1242
1243 **Required Permissions**: To use this action, an IAM user must
1244 have a Manage permissions level for the stack, or an attached
1245 policy that explicitly grants permissions. For more
1246 information on user permissions, see `Managing User
1247 Permissions`_.
1248
1249 :type stack_id: string
1250 :param stack_id: The stack ID.
1251
1252 """
1253 params = {'StackId': stack_id, }
1254 return self.make_request(action='DeleteStack',
1255 body=json.dumps(params))
1256
1257 def delete_user_profile(self, iam_user_arn):
1258 """
1259 Deletes a user profile.
1260
1261 **Required Permissions**: To use this action, an IAM user must
1262 have an attached policy that explicitly grants permissions.
1263 For more information on user permissions, see `Managing User
1264 Permissions`_.
1265
1266 :type iam_user_arn: string
1267 :param iam_user_arn: The user's IAM ARN.
1268
1269 """
1270 params = {'IamUserArn': iam_user_arn, }
1271 return self.make_request(action='DeleteUserProfile',
1272 body=json.dumps(params))
1273
1274 def deregister_elastic_ip(self, elastic_ip):
1275 """
1276 Deregisters a specified Elastic IP address. The address can
1277 then be registered by another stack. For more information, see
1278 `Resource Management`_.
1279
1280 **Required Permissions**: To use this action, an IAM user must
1281 have a Manage permissions level for the stack, or an attached
1282 policy that explicitly grants permissions. For more
1283 information on user permissions, see `Managing User
1284 Permissions`_.
1285
1286 :type elastic_ip: string
1287 :param elastic_ip: The Elastic IP address.
1288
1289 """
1290 params = {'ElasticIp': elastic_ip, }
1291 return self.make_request(action='DeregisterElasticIp',
1292 body=json.dumps(params))
1293
1294 def deregister_instance(self, instance_id):
1295 """
1296 Deregister a registered Amazon EC2 or on-premises instance.
1297 This action removes the instance from the stack and returns it
1298 to your control. This action can not be used with instances
1299 that were created with AWS OpsWorks.
1300
1301 **Required Permissions**: To use this action, an IAM user must
1302 have a Manage permissions level for the stack or an attached
1303 policy that explicitly grants permissions. For more
1304 information on user permissions, see `Managing User
1305 Permissions`_.
1306
1307 :type instance_id: string
1308 :param instance_id: The instance ID.
1309
1310 """
1311 params = {'InstanceId': instance_id, }
1312 return self.make_request(action='DeregisterInstance',
1313 body=json.dumps(params))
1314
1315 def deregister_rds_db_instance(self, rds_db_instance_arn):
1316 """
1317 Deregisters an Amazon RDS instance.
1318
1319 **Required Permissions**: To use this action, an IAM user must
1320 have a Manage permissions level for the stack, or an attached
1321 policy that explicitly grants permissions. For more
1322 information on user permissions, see `Managing User
1323 Permissions`_.
1324
1325 :type rds_db_instance_arn: string
1326 :param rds_db_instance_arn: The Amazon RDS instance's ARN.
1327
1328 """
1329 params = {'RdsDbInstanceArn': rds_db_instance_arn, }
1330 return self.make_request(action='DeregisterRdsDbInstance',
1331 body=json.dumps(params))
1332
1333 def deregister_volume(self, volume_id):
1334 """
1335 Deregisters an Amazon EBS volume. The volume can then be
1336 registered by another stack. For more information, see
1337 `Resource Management`_.
1338
1339 **Required Permissions**: To use this action, an IAM user must
1340 have a Manage permissions level for the stack, or an attached
1341 policy that explicitly grants permissions. For more
1342 information on user permissions, see `Managing User
1343 Permissions`_.
1344
1345 :type volume_id: string
1346 :param volume_id: The volume ID.
1347
1348 """
1349 params = {'VolumeId': volume_id, }
1350 return self.make_request(action='DeregisterVolume',
1351 body=json.dumps(params))
1352
1353 def describe_apps(self, stack_id=None, app_ids=None):
1354 """
1355 Requests a description of a specified set of apps.
1356
1357
1358 You must specify at least one of the parameters.
1359
1360
1361 **Required Permissions**: To use this action, an IAM user must
1362 have a Show, Deploy, or Manage permissions level for the
1363 stack, or an attached policy that explicitly grants
1364 permissions. For more information on user permissions, see
1365 `Managing User Permissions`_.
1366
1367 :type stack_id: string
1368 :param stack_id: The app stack ID. If you use this parameter,
1369 `DescribeApps` returns a description of the apps in the specified
1370 stack.
1371
1372 :type app_ids: list
1373 :param app_ids: An array of app IDs for the apps to be described. If
1374 you use this parameter, `DescribeApps` returns a description of the
1375 specified apps. Otherwise, it returns a description of every app.
1376
1377 """
1378 params = {}
1379 if stack_id is not None:
1380 params['StackId'] = stack_id
1381 if app_ids is not None:
1382 params['AppIds'] = app_ids
1383 return self.make_request(action='DescribeApps',
1384 body=json.dumps(params))
1385
1386 def describe_commands(self, deployment_id=None, instance_id=None,
1387 command_ids=None):
1388 """
1389 Describes the results of specified commands.
1390
1391
1392 You must specify at least one of the parameters.
1393
1394
1395 **Required Permissions**: To use this action, an IAM user must
1396 have a Show, Deploy, or Manage permissions level for the
1397 stack, or an attached policy that explicitly grants
1398 permissions. For more information on user permissions, see
1399 `Managing User Permissions`_.
1400
1401 :type deployment_id: string
1402 :param deployment_id: The deployment ID. If you include this parameter,
1403 `DescribeCommands` returns a description of the commands associated
1404 with the specified deployment.
1405
1406 :type instance_id: string
1407 :param instance_id: The instance ID. If you include this parameter,
1408 `DescribeCommands` returns a description of the commands associated
1409 with the specified instance.
1410
1411 :type command_ids: list
1412 :param command_ids: An array of command IDs. If you include this
1413 parameter, `DescribeCommands` returns a description of the
1414 specified commands. Otherwise, it returns a description of every
1415 command.
1416
1417 """
1418 params = {}
1419 if deployment_id is not None:
1420 params['DeploymentId'] = deployment_id
1421 if instance_id is not None:
1422 params['InstanceId'] = instance_id
1423 if command_ids is not None:
1424 params['CommandIds'] = command_ids
1425 return self.make_request(action='DescribeCommands',
1426 body=json.dumps(params))
1427
1428 def describe_deployments(self, stack_id=None, app_id=None,
1429 deployment_ids=None):
1430 """
1431 Requests a description of a specified set of deployments.
1432
1433
1434 You must specify at least one of the parameters.
1435
1436
1437 **Required Permissions**: To use this action, an IAM user must
1438 have a Show, Deploy, or Manage permissions level for the
1439 stack, or an attached policy that explicitly grants
1440 permissions. For more information on user permissions, see
1441 `Managing User Permissions`_.
1442
1443 :type stack_id: string
1444 :param stack_id: The stack ID. If you include this parameter,
1445 `DescribeDeployments` returns a description of the commands
1446 associated with the specified stack.
1447
1448 :type app_id: string
1449 :param app_id: The app ID. If you include this parameter,
1450 `DescribeDeployments` returns a description of the commands
1451 associated with the specified app.
1452
1453 :type deployment_ids: list
1454 :param deployment_ids: An array of deployment IDs to be described. If
1455 you include this parameter, `DescribeDeployments` returns a
1456 description of the specified deployments. Otherwise, it returns a
1457 description of every deployment.
1458
1459 """
1460 params = {}
1461 if stack_id is not None:
1462 params['StackId'] = stack_id
1463 if app_id is not None:
1464 params['AppId'] = app_id
1465 if deployment_ids is not None:
1466 params['DeploymentIds'] = deployment_ids
1467 return self.make_request(action='DescribeDeployments',
1468 body=json.dumps(params))
1469
1470 def describe_elastic_ips(self, instance_id=None, stack_id=None, ips=None):
1471 """
1472 Describes `Elastic IP addresses`_.
1473
1474
1475 You must specify at least one of the parameters.
1476
1477
1478 **Required Permissions**: To use this action, an IAM user must
1479 have a Show, Deploy, or Manage permissions level for the
1480 stack, or an attached policy that explicitly grants
1481 permissions. For more information on user permissions, see
1482 `Managing User Permissions`_.
1483
1484 :type instance_id: string
1485 :param instance_id: The instance ID. If you include this parameter,
1486 `DescribeElasticIps` returns a description of the Elastic IP
1487 addresses associated with the specified instance.
1488
1489 :type stack_id: string
1490 :param stack_id: A stack ID. If you include this parameter,
1491 `DescribeElasticIps` returns a description of the Elastic IP
1492 addresses that are registered with the specified stack.
1493
1494 :type ips: list
1495 :param ips: An array of Elastic IP addresses to be described. If you
1496 include this parameter, `DescribeElasticIps` returns a description
1497 of the specified Elastic IP addresses. Otherwise, it returns a
1498 description of every Elastic IP address.
1499
1500 """
1501 params = {}
1502 if instance_id is not None:
1503 params['InstanceId'] = instance_id
1504 if stack_id is not None:
1505 params['StackId'] = stack_id
1506 if ips is not None:
1507 params['Ips'] = ips
1508 return self.make_request(action='DescribeElasticIps',
1509 body=json.dumps(params))
1510
1511 def describe_elastic_load_balancers(self, stack_id=None, layer_ids=None):
1512 """
1513 Describes a stack's Elastic Load Balancing instances.
1514
1515
1516 You must specify at least one of the parameters.
1517
1518
1519 **Required Permissions**: To use this action, an IAM user must
1520 have a Show, Deploy, or Manage permissions level for the
1521 stack, or an attached policy that explicitly grants
1522 permissions. For more information on user permissions, see
1523 `Managing User Permissions`_.
1524
1525 :type stack_id: string
1526 :param stack_id: A stack ID. The action describes the stack's Elastic
1527 Load Balancing instances.
1528
1529 :type layer_ids: list
1530 :param layer_ids: A list of layer IDs. The action describes the Elastic
1531 Load Balancing instances for the specified layers.
1532
1533 """
1534 params = {}
1535 if stack_id is not None:
1536 params['StackId'] = stack_id
1537 if layer_ids is not None:
1538 params['LayerIds'] = layer_ids
1539 return self.make_request(action='DescribeElasticLoadBalancers',
1540 body=json.dumps(params))
1541
1542 def describe_instances(self, stack_id=None, layer_id=None,
1543 instance_ids=None):
1544 """
1545 Requests a description of a set of instances.
1546
1547
1548 You must specify at least one of the parameters.
1549
1550
1551 **Required Permissions**: To use this action, an IAM user must
1552 have a Show, Deploy, or Manage permissions level for the
1553 stack, or an attached policy that explicitly grants
1554 permissions. For more information on user permissions, see
1555 `Managing User Permissions`_.
1556
1557 :type stack_id: string
1558 :param stack_id: A stack ID. If you use this parameter,
1559 `DescribeInstances` returns descriptions of the instances
1560 associated with the specified stack.
1561
1562 :type layer_id: string
1563 :param layer_id: A layer ID. If you use this parameter,
1564 `DescribeInstances` returns descriptions of the instances
1565 associated with the specified layer.
1566
1567 :type instance_ids: list
1568 :param instance_ids: An array of instance IDs to be described. If you
1569 use this parameter, `DescribeInstances` returns a description of
1570 the specified instances. Otherwise, it returns a description of
1571 every instance.
1572
1573 """
1574 params = {}
1575 if stack_id is not None:
1576 params['StackId'] = stack_id
1577 if layer_id is not None:
1578 params['LayerId'] = layer_id
1579 if instance_ids is not None:
1580 params['InstanceIds'] = instance_ids
1581 return self.make_request(action='DescribeInstances',
1582 body=json.dumps(params))
1583
1584 def describe_layers(self, stack_id=None, layer_ids=None):
1585 """
1586 Requests a description of one or more layers in a specified
1587 stack.
1588
1589
1590 You must specify at least one of the parameters.
1591
1592
1593 **Required Permissions**: To use this action, an IAM user must
1594 have a Show, Deploy, or Manage permissions level for the
1595 stack, or an attached policy that explicitly grants
1596 permissions. For more information on user permissions, see
1597 `Managing User Permissions`_.
1598
1599 :type stack_id: string
1600 :param stack_id: The stack ID.
1601
1602 :type layer_ids: list
1603 :param layer_ids: An array of layer IDs that specify the layers to be
1604 described. If you omit this parameter, `DescribeLayers` returns a
1605 description of every layer in the specified stack.
1606
1607 """
1608 params = {}
1609 if stack_id is not None:
1610 params['StackId'] = stack_id
1611 if layer_ids is not None:
1612 params['LayerIds'] = layer_ids
1613 return self.make_request(action='DescribeLayers',
1614 body=json.dumps(params))
1615
1616 def describe_load_based_auto_scaling(self, layer_ids):
1617 """
1618 Describes load-based auto scaling configurations for specified
1619 layers.
1620
1621
1622 You must specify at least one of the parameters.
1623
1624
1625 **Required Permissions**: To use this action, an IAM user must
1626 have a Show, Deploy, or Manage permissions level for the
1627 stack, or an attached policy that explicitly grants
1628 permissions. For more information on user permissions, see
1629 `Managing User Permissions`_.
1630
1631 :type layer_ids: list
1632 :param layer_ids: An array of layer IDs.
1633
1634 """
1635 params = {'LayerIds': layer_ids, }
1636 return self.make_request(action='DescribeLoadBasedAutoScaling',
1637 body=json.dumps(params))
1638
1639 def describe_my_user_profile(self):
1640 """
1641 Describes a user's SSH information.
1642
1643 **Required Permissions**: To use this action, an IAM user must
1644 have self-management enabled or an attached policy that
1645 explicitly grants permissions. For more information on user
1646 permissions, see `Managing User Permissions`_.
1647
1648
1649 """
1650 params = {}
1651 return self.make_request(action='DescribeMyUserProfile',
1652 body=json.dumps(params))
1653
1654 def describe_permissions(self, iam_user_arn=None, stack_id=None):
1655 """
1656 Describes the permissions for a specified stack.
1657
1658 **Required Permissions**: To use this action, an IAM user must
1659 have a Manage permissions level for the stack, or an attached
1660 policy that explicitly grants permissions. For more
1661 information on user permissions, see `Managing User
1662 Permissions`_.
1663
1664 :type iam_user_arn: string
1665 :param iam_user_arn: The user's IAM ARN. For more information about IAM
1666 ARNs, see `Using Identifiers`_.
1667
1668 :type stack_id: string
1669 :param stack_id: The stack ID.
1670
1671 """
1672 params = {}
1673 if iam_user_arn is not None:
1674 params['IamUserArn'] = iam_user_arn
1675 if stack_id is not None:
1676 params['StackId'] = stack_id
1677 return self.make_request(action='DescribePermissions',
1678 body=json.dumps(params))
1679
1680 def describe_raid_arrays(self, instance_id=None, stack_id=None,
1681 raid_array_ids=None):
1682 """
1683 Describe an instance's RAID arrays.
1684
1685
1686 You must specify at least one of the parameters.
1687
1688
1689 **Required Permissions**: To use this action, an IAM user must
1690 have a Show, Deploy, or Manage permissions level for the
1691 stack, or an attached policy that explicitly grants
1692 permissions. For more information on user permissions, see
1693 `Managing User Permissions`_.
1694
1695 :type instance_id: string
1696 :param instance_id: The instance ID. If you use this parameter,
1697 `DescribeRaidArrays` returns descriptions of the RAID arrays
1698 associated with the specified instance.
1699
1700 :type stack_id: string
1701 :param stack_id: The stack ID.
1702
1703 :type raid_array_ids: list
1704 :param raid_array_ids: An array of RAID array IDs. If you use this
1705 parameter, `DescribeRaidArrays` returns descriptions of the
1706 specified arrays. Otherwise, it returns a description of every
1707 array.
1708
1709 """
1710 params = {}
1711 if instance_id is not None:
1712 params['InstanceId'] = instance_id
1713 if stack_id is not None:
1714 params['StackId'] = stack_id
1715 if raid_array_ids is not None:
1716 params['RaidArrayIds'] = raid_array_ids
1717 return self.make_request(action='DescribeRaidArrays',
1718 body=json.dumps(params))
1719
1720 def describe_rds_db_instances(self, stack_id, rds_db_instance_arns=None):
1721 """
1722 Describes Amazon RDS instances.
1723
1724 **Required Permissions**: To use this action, an IAM user must
1725 have a Show, Deploy, or Manage permissions level for the
1726 stack, or an attached policy that explicitly grants
1727 permissions. For more information on user permissions, see
1728 `Managing User Permissions`_.
1729
1730 :type stack_id: string
1731 :param stack_id: The stack ID that the instances are registered with.
1732 The operation returns descriptions of all registered Amazon RDS
1733 instances.
1734
1735 :type rds_db_instance_arns: list
1736 :param rds_db_instance_arns: An array containing the ARNs of the
1737 instances to be described.
1738
1739 """
1740 params = {'StackId': stack_id, }
1741 if rds_db_instance_arns is not None:
1742 params['RdsDbInstanceArns'] = rds_db_instance_arns
1743 return self.make_request(action='DescribeRdsDbInstances',
1744 body=json.dumps(params))
1745
1746 def describe_service_errors(self, stack_id=None, instance_id=None,
1747 service_error_ids=None):
1748 """
1749 Describes AWS OpsWorks service errors.
1750
1751 **Required Permissions**: To use this action, an IAM user must
1752 have a Show, Deploy, or Manage permissions level for the
1753 stack, or an attached policy that explicitly grants
1754 permissions. For more information on user permissions, see
1755 `Managing User Permissions`_.
1756
1757 :type stack_id: string
1758 :param stack_id: The stack ID. If you use this parameter,
1759 `DescribeServiceErrors` returns descriptions of the errors
1760 associated with the specified stack.
1761
1762 :type instance_id: string
1763 :param instance_id: The instance ID. If you use this parameter,
1764 `DescribeServiceErrors` returns descriptions of the errors
1765 associated with the specified instance.
1766
1767 :type service_error_ids: list
1768 :param service_error_ids: An array of service error IDs. If you use
1769 this parameter, `DescribeServiceErrors` returns descriptions of the
1770 specified errors. Otherwise, it returns a description of every
1771 error.
1772
1773 """
1774 params = {}
1775 if stack_id is not None:
1776 params['StackId'] = stack_id
1777 if instance_id is not None:
1778 params['InstanceId'] = instance_id
1779 if service_error_ids is not None:
1780 params['ServiceErrorIds'] = service_error_ids
1781 return self.make_request(action='DescribeServiceErrors',
1782 body=json.dumps(params))
1783
1784 def describe_stack_provisioning_parameters(self, stack_id):
1785 """
1786 Requests a description of a stack's provisioning parameters.
1787
1788 **Required Permissions**: To use this action, an IAM user must
1789 have a Show, Deploy, or Manage permissions level for the stack
1790 or an attached policy that explicitly grants permissions. For
1791 more information on user permissions, see `Managing User
1792 Permissions`_.
1793
1794 :type stack_id: string
1795 :param stack_id: The stack ID
1796
1797 """
1798 params = {'StackId': stack_id, }
1799 return self.make_request(action='DescribeStackProvisioningParameters',
1800 body=json.dumps(params))
1801
1802 def describe_stack_summary(self, stack_id):
1803 """
1804 Describes the number of layers and apps in a specified stack,
1805 and the number of instances in each state, such as
1806 `running_setup` or `online`.
1807
1808 **Required Permissions**: To use this action, an IAM user must
1809 have a Show, Deploy, or Manage permissions level for the
1810 stack, or an attached policy that explicitly grants
1811 permissions. For more information on user permissions, see
1812 `Managing User Permissions`_.
1813
1814 :type stack_id: string
1815 :param stack_id: The stack ID.
1816
1817 """
1818 params = {'StackId': stack_id, }
1819 return self.make_request(action='DescribeStackSummary',
1820 body=json.dumps(params))
1821
1822 def describe_stacks(self, stack_ids=None):
1823 """
1824 Requests a description of one or more stacks.
1825
1826 **Required Permissions**: To use this action, an IAM user must
1827 have a Show, Deploy, or Manage permissions level for the
1828 stack, or an attached policy that explicitly grants
1829 permissions. For more information on user permissions, see
1830 `Managing User Permissions`_.
1831
1832 :type stack_ids: list
1833 :param stack_ids: An array of stack IDs that specify the stacks to be
1834 described. If you omit this parameter, `DescribeStacks` returns a
1835 description of every stack.
1836
1837 """
1838 params = {}
1839 if stack_ids is not None:
1840 params['StackIds'] = stack_ids
1841 return self.make_request(action='DescribeStacks',
1842 body=json.dumps(params))
1843
1844 def describe_time_based_auto_scaling(self, instance_ids):
1845 """
1846 Describes time-based auto scaling configurations for specified
1847 instances.
1848
1849
1850 You must specify at least one of the parameters.
1851
1852
1853 **Required Permissions**: To use this action, an IAM user must
1854 have a Show, Deploy, or Manage permissions level for the
1855 stack, or an attached policy that explicitly grants
1856 permissions. For more information on user permissions, see
1857 `Managing User Permissions`_.
1858
1859 :type instance_ids: list
1860 :param instance_ids: An array of instance IDs.
1861
1862 """
1863 params = {'InstanceIds': instance_ids, }
1864 return self.make_request(action='DescribeTimeBasedAutoScaling',
1865 body=json.dumps(params))
1866
1867 def describe_user_profiles(self, iam_user_arns=None):
1868 """
1869 Describe specified users.
1870
1871 **Required Permissions**: To use this action, an IAM user must
1872 have an attached policy that explicitly grants permissions.
1873 For more information on user permissions, see `Managing User
1874 Permissions`_.
1875
1876 :type iam_user_arns: list
1877 :param iam_user_arns: An array of IAM user ARNs that identify the users
1878 to be described.
1879
1880 """
1881 params = {}
1882 if iam_user_arns is not None:
1883 params['IamUserArns'] = iam_user_arns
1884 return self.make_request(action='DescribeUserProfiles',
1885 body=json.dumps(params))
1886
1887 def describe_volumes(self, instance_id=None, stack_id=None,
1888 raid_array_id=None, volume_ids=None):
1889 """
1890 Describes an instance's Amazon EBS volumes.
1891
1892
1893 You must specify at least one of the parameters.
1894
1895
1896 **Required Permissions**: To use this action, an IAM user must
1897 have a Show, Deploy, or Manage permissions level for the
1898 stack, or an attached policy that explicitly grants
1899 permissions. For more information on user permissions, see
1900 `Managing User Permissions`_.
1901
1902 :type instance_id: string
1903 :param instance_id: The instance ID. If you use this parameter,
1904 `DescribeVolumes` returns descriptions of the volumes associated
1905 with the specified instance.
1906
1907 :type stack_id: string
1908 :param stack_id: A stack ID. The action describes the stack's
1909 registered Amazon EBS volumes.
1910
1911 :type raid_array_id: string
1912 :param raid_array_id: The RAID array ID. If you use this parameter,
1913 `DescribeVolumes` returns descriptions of the volumes associated
1914 with the specified RAID array.
1915
1916 :type volume_ids: list
1917 :param volume_ids: Am array of volume IDs. If you use this parameter,
1918 `DescribeVolumes` returns descriptions of the specified volumes.
1919 Otherwise, it returns a description of every volume.
1920
1921 """
1922 params = {}
1923 if instance_id is not None:
1924 params['InstanceId'] = instance_id
1925 if stack_id is not None:
1926 params['StackId'] = stack_id
1927 if raid_array_id is not None:
1928 params['RaidArrayId'] = raid_array_id
1929 if volume_ids is not None:
1930 params['VolumeIds'] = volume_ids
1931 return self.make_request(action='DescribeVolumes',
1932 body=json.dumps(params))
1933
1934 def detach_elastic_load_balancer(self, elastic_load_balancer_name,
1935 layer_id):
1936 """
1937 Detaches a specified Elastic Load Balancing instance from its
1938 layer.
1939
1940 **Required Permissions**: To use this action, an IAM user must
1941 have a Manage permissions level for the stack, or an attached
1942 policy that explicitly grants permissions. For more
1943 information on user permissions, see `Managing User
1944 Permissions`_.
1945
1946 :type elastic_load_balancer_name: string
1947 :param elastic_load_balancer_name: The Elastic Load Balancing
1948 instance's name.
1949
1950 :type layer_id: string
1951 :param layer_id: The ID of the layer that the Elastic Load Balancing
1952 instance is attached to.
1953
1954 """
1955 params = {
1956 'ElasticLoadBalancerName': elastic_load_balancer_name,
1957 'LayerId': layer_id,
1958 }
1959 return self.make_request(action='DetachElasticLoadBalancer',
1960 body=json.dumps(params))
1961
1962 def disassociate_elastic_ip(self, elastic_ip):
1963 """
1964 Disassociates an Elastic IP address from its instance. The
1965 address remains registered with the stack. For more
1966 information, see `Resource Management`_.
1967
1968 **Required Permissions**: To use this action, an IAM user must
1969 have a Manage permissions level for the stack, or an attached
1970 policy that explicitly grants permissions. For more
1971 information on user permissions, see `Managing User
1972 Permissions`_.
1973
1974 :type elastic_ip: string
1975 :param elastic_ip: The Elastic IP address.
1976
1977 """
1978 params = {'ElasticIp': elastic_ip, }
1979 return self.make_request(action='DisassociateElasticIp',
1980 body=json.dumps(params))
1981
1982 def get_hostname_suggestion(self, layer_id):
1983 """
1984 Gets a generated host name for the specified layer, based on
1985 the current host name theme.
1986
1987 **Required Permissions**: To use this action, an IAM user must
1988 have a Manage permissions level for the stack, or an attached
1989 policy that explicitly grants permissions. For more
1990 information on user permissions, see `Managing User
1991 Permissions`_.
1992
1993 :type layer_id: string
1994 :param layer_id: The layer ID.
1995
1996 """
1997 params = {'LayerId': layer_id, }
1998 return self.make_request(action='GetHostnameSuggestion',
1999 body=json.dumps(params))
2000
2001 def reboot_instance(self, instance_id):
2002 """
2003 Reboots a specified instance. For more information, see
2004 `Starting, Stopping, and Rebooting Instances`_.
2005
2006 **Required Permissions**: To use this action, an IAM user must
2007 have a Manage permissions level for the stack, or an attached
2008 policy that explicitly grants permissions. For more
2009 information on user permissions, see `Managing User
2010 Permissions`_.
2011
2012 :type instance_id: string
2013 :param instance_id: The instance ID.
2014
2015 """
2016 params = {'InstanceId': instance_id, }
2017 return self.make_request(action='RebootInstance',
2018 body=json.dumps(params))
2019
2020 def register_elastic_ip(self, elastic_ip, stack_id):
2021 """
2022 Registers an Elastic IP address with a specified stack. An
2023 address can be registered with only one stack at a time. If
2024 the address is already registered, you must first deregister
2025 it by calling DeregisterElasticIp. For more information, see
2026 `Resource Management`_.
2027
2028 **Required Permissions**: To use this action, an IAM user must
2029 have a Manage permissions level for the stack, or an attached
2030 policy that explicitly grants permissions. For more
2031 information on user permissions, see `Managing User
2032 Permissions`_.
2033
2034 :type elastic_ip: string
2035 :param elastic_ip: The Elastic IP address.
2036
2037 :type stack_id: string
2038 :param stack_id: The stack ID.
2039
2040 """
2041 params = {'ElasticIp': elastic_ip, 'StackId': stack_id, }
2042 return self.make_request(action='RegisterElasticIp',
2043 body=json.dumps(params))
2044
2045 def register_instance(self, stack_id, hostname=None, public_ip=None,
2046 private_ip=None, rsa_public_key=None,
2047 rsa_public_key_fingerprint=None,
2048 instance_identity=None):
2049 """
2050 Registers instances with a specified stack that were created
2051 outside of AWS OpsWorks.
2052
2053 We do not recommend using this action to register instances.
2054 The complete registration operation has two primary steps,
2055 installing the AWS OpsWorks agent on the instance and
2056 registering the instance with the stack. `RegisterInstance`
2057 handles only the second step. You should instead use the AWS
2058 CLI `register` command, which performs the entire registration
2059 operation.
2060
2061 **Required Permissions**: To use this action, an IAM user must
2062 have a Manage permissions level for the stack or an attached
2063 policy that explicitly grants permissions. For more
2064 information on user permissions, see `Managing User
2065 Permissions`_.
2066
2067 :type stack_id: string
2068 :param stack_id: The ID of the stack that the instance is to be
2069 registered with.
2070
2071 :type hostname: string
2072 :param hostname: The instance's hostname.
2073
2074 :type public_ip: string
2075 :param public_ip: The instance's public IP address.
2076
2077 :type private_ip: string
2078 :param private_ip: The instance's private IP address.
2079
2080 :type rsa_public_key: string
2081 :param rsa_public_key: The instances public RSA key. This key is used
2082 to encrypt communication between the instance and the service.
2083
2084 :type rsa_public_key_fingerprint: string
2085 :param rsa_public_key_fingerprint: The instances public RSA key
2086 fingerprint.
2087
2088 :type instance_identity: dict
2089 :param instance_identity: An InstanceIdentity object that contains the
2090 instance's identity.
2091
2092 """
2093 params = {'StackId': stack_id, }
2094 if hostname is not None:
2095 params['Hostname'] = hostname
2096 if public_ip is not None:
2097 params['PublicIp'] = public_ip
2098 if private_ip is not None:
2099 params['PrivateIp'] = private_ip
2100 if rsa_public_key is not None:
2101 params['RsaPublicKey'] = rsa_public_key
2102 if rsa_public_key_fingerprint is not None:
2103 params['RsaPublicKeyFingerprint'] = rsa_public_key_fingerprint
2104 if instance_identity is not None:
2105 params['InstanceIdentity'] = instance_identity
2106 return self.make_request(action='RegisterInstance',
2107 body=json.dumps(params))
2108
2109 def register_rds_db_instance(self, stack_id, rds_db_instance_arn,
2110 db_user, db_password):
2111 """
2112 Registers an Amazon RDS instance with a stack.
2113
2114 **Required Permissions**: To use this action, an IAM user must
2115 have a Manage permissions level for the stack, or an attached
2116 policy that explicitly grants permissions. For more
2117 information on user permissions, see `Managing User
2118 Permissions`_.
2119
2120 :type stack_id: string
2121 :param stack_id: The stack ID.
2122
2123 :type rds_db_instance_arn: string
2124 :param rds_db_instance_arn: The Amazon RDS instance's ARN.
2125
2126 :type db_user: string
2127 :param db_user: The database's master user name.
2128
2129 :type db_password: string
2130 :param db_password: The database password.
2131
2132 """
2133 params = {
2134 'StackId': stack_id,
2135 'RdsDbInstanceArn': rds_db_instance_arn,
2136 'DbUser': db_user,
2137 'DbPassword': db_password,
2138 }
2139 return self.make_request(action='RegisterRdsDbInstance',
2140 body=json.dumps(params))
2141
2142 def register_volume(self, stack_id, ec_2_volume_id=None):
2143 """
2144 Registers an Amazon EBS volume with a specified stack. A
2145 volume can be registered with only one stack at a time. If the
2146 volume is already registered, you must first deregister it by
2147 calling DeregisterVolume. For more information, see `Resource
2148 Management`_.
2149
2150 **Required Permissions**: To use this action, an IAM user must
2151 have a Manage permissions level for the stack, or an attached
2152 policy that explicitly grants permissions. For more
2153 information on user permissions, see `Managing User
2154 Permissions`_.
2155
2156 :type ec_2_volume_id: string
2157 :param ec_2_volume_id: The Amazon EBS volume ID.
2158
2159 :type stack_id: string
2160 :param stack_id: The stack ID.
2161
2162 """
2163 params = {'StackId': stack_id, }
2164 if ec_2_volume_id is not None:
2165 params['Ec2VolumeId'] = ec_2_volume_id
2166 return self.make_request(action='RegisterVolume',
2167 body=json.dumps(params))
2168
2169 def set_load_based_auto_scaling(self, layer_id, enable=None,
2170 up_scaling=None, down_scaling=None):
2171 """
2172 Specify the load-based auto scaling configuration for a
2173 specified layer. For more information, see `Managing Load with
2174 Time-based and Load-based Instances`_.
2175
2176
2177 To use load-based auto scaling, you must create a set of load-
2178 based auto scaling instances. Load-based auto scaling operates
2179 only on the instances from that set, so you must ensure that
2180 you have created enough instances to handle the maximum
2181 anticipated load.
2182
2183
2184 **Required Permissions**: To use this action, an IAM user must
2185 have a Manage permissions level for the stack, or an attached
2186 policy that explicitly grants permissions. For more
2187 information on user permissions, see `Managing User
2188 Permissions`_.
2189
2190 :type layer_id: string
2191 :param layer_id: The layer ID.
2192
2193 :type enable: boolean
2194 :param enable: Enables load-based auto scaling for the layer.
2195
2196 :type up_scaling: dict
2197 :param up_scaling: An `AutoScalingThresholds` object with the upscaling
2198 threshold configuration. If the load exceeds these thresholds for a
2199 specified amount of time, AWS OpsWorks starts a specified number of
2200 instances.
2201
2202 :type down_scaling: dict
2203 :param down_scaling: An `AutoScalingThresholds` object with the
2204 downscaling threshold configuration. If the load falls below these
2205 thresholds for a specified amount of time, AWS OpsWorks stops a
2206 specified number of instances.
2207
2208 """
2209 params = {'LayerId': layer_id, }
2210 if enable is not None:
2211 params['Enable'] = enable
2212 if up_scaling is not None:
2213 params['UpScaling'] = up_scaling
2214 if down_scaling is not None:
2215 params['DownScaling'] = down_scaling
2216 return self.make_request(action='SetLoadBasedAutoScaling',
2217 body=json.dumps(params))
2218
2219 def set_permission(self, stack_id, iam_user_arn, allow_ssh=None,
2220 allow_sudo=None, level=None):
2221 """
2222 Specifies a user's permissions. For more information, see
2223 `Security and Permissions`_.
2224
2225 **Required Permissions**: To use this action, an IAM user must
2226 have a Manage permissions level for the stack, or an attached
2227 policy that explicitly grants permissions. For more
2228 information on user permissions, see `Managing User
2229 Permissions`_.
2230
2231 :type stack_id: string
2232 :param stack_id: The stack ID.
2233
2234 :type iam_user_arn: string
2235 :param iam_user_arn: The user's IAM ARN.
2236
2237 :type allow_ssh: boolean
2238 :param allow_ssh: The user is allowed to use SSH to communicate with
2239 the instance.
2240
2241 :type allow_sudo: boolean
2242 :param allow_sudo: The user is allowed to use **sudo** to elevate
2243 privileges.
2244
2245 :type level: string
2246 :param level: The user's permission level, which must be set to one of
2247 the following strings. You cannot set your own permissions level.
2248
2249 + `deny`
2250 + `show`
2251 + `deploy`
2252 + `manage`
2253 + `iam_only`
2254
2255
2256 For more information on the permissions associated with these levels,
2257 see `Managing User Permissions`_
2258
2259 """
2260 params = {'StackId': stack_id, 'IamUserArn': iam_user_arn, }
2261 if allow_ssh is not None:
2262 params['AllowSsh'] = allow_ssh
2263 if allow_sudo is not None:
2264 params['AllowSudo'] = allow_sudo
2265 if level is not None:
2266 params['Level'] = level
2267 return self.make_request(action='SetPermission',
2268 body=json.dumps(params))
2269
2270 def set_time_based_auto_scaling(self, instance_id,
2271 auto_scaling_schedule=None):
2272 """
2273 Specify the time-based auto scaling configuration for a
2274 specified instance. For more information, see `Managing Load
2275 with Time-based and Load-based Instances`_.
2276
2277 **Required Permissions**: To use this action, an IAM user must
2278 have a Manage permissions level for the stack, or an attached
2279 policy that explicitly grants permissions. For more
2280 information on user permissions, see `Managing User
2281 Permissions`_.
2282
2283 :type instance_id: string
2284 :param instance_id: The instance ID.
2285
2286 :type auto_scaling_schedule: dict
2287 :param auto_scaling_schedule: An `AutoScalingSchedule` with the
2288 instance schedule.
2289
2290 """
2291 params = {'InstanceId': instance_id, }
2292 if auto_scaling_schedule is not None:
2293 params['AutoScalingSchedule'] = auto_scaling_schedule
2294 return self.make_request(action='SetTimeBasedAutoScaling',
2295 body=json.dumps(params))
2296
2297 def start_instance(self, instance_id):
2298 """
2299 Starts a specified instance. For more information, see
2300 `Starting, Stopping, and Rebooting Instances`_.
2301
2302 **Required Permissions**: To use this action, an IAM user must
2303 have a Manage permissions level for the stack, or an attached
2304 policy that explicitly grants permissions. For more
2305 information on user permissions, see `Managing User
2306 Permissions`_.
2307
2308 :type instance_id: string
2309 :param instance_id: The instance ID.
2310
2311 """
2312 params = {'InstanceId': instance_id, }
2313 return self.make_request(action='StartInstance',
2314 body=json.dumps(params))
2315
2316 def start_stack(self, stack_id):
2317 """
2318 Starts a stack's instances.
2319
2320 **Required Permissions**: To use this action, an IAM user must
2321 have a Manage permissions level for the stack, or an attached
2322 policy that explicitly grants permissions. For more
2323 information on user permissions, see `Managing User
2324 Permissions`_.
2325
2326 :type stack_id: string
2327 :param stack_id: The stack ID.
2328
2329 """
2330 params = {'StackId': stack_id, }
2331 return self.make_request(action='StartStack',
2332 body=json.dumps(params))
2333
2334 def stop_instance(self, instance_id):
2335 """
2336 Stops a specified instance. When you stop a standard instance,
2337 the data disappears and must be reinstalled when you restart
2338 the instance. You can stop an Amazon EBS-backed instance
2339 without losing data. For more information, see `Starting,
2340 Stopping, and Rebooting Instances`_.
2341
2342 **Required Permissions**: To use this action, an IAM user must
2343 have a Manage permissions level for the stack, or an attached
2344 policy that explicitly grants permissions. For more
2345 information on user permissions, see `Managing User
2346 Permissions`_.
2347
2348 :type instance_id: string
2349 :param instance_id: The instance ID.
2350
2351 """
2352 params = {'InstanceId': instance_id, }
2353 return self.make_request(action='StopInstance',
2354 body=json.dumps(params))
2355
2356 def stop_stack(self, stack_id):
2357 """
2358 Stops a specified stack.
2359
2360 **Required Permissions**: To use this action, an IAM user must
2361 have a Manage permissions level for the stack, or an attached
2362 policy that explicitly grants permissions. For more
2363 information on user permissions, see `Managing User
2364 Permissions`_.
2365
2366 :type stack_id: string
2367 :param stack_id: The stack ID.
2368
2369 """
2370 params = {'StackId': stack_id, }
2371 return self.make_request(action='StopStack',
2372 body=json.dumps(params))
2373
2374 def unassign_instance(self, instance_id):
2375 """
2376 Unassigns a registered instance from all of it's layers. The
2377 instance remains in the stack as an unassigned instance and
2378 can be assigned to another layer, as needed. You cannot use
2379 this action with instances that were created with AWS
2380 OpsWorks.
2381
2382 **Required Permissions**: To use this action, an IAM user must
2383 have a Manage permissions level for the stack or an attached
2384 policy that explicitly grants permissions. For more
2385 information on user permissions, see `Managing User
2386 Permissions`_.
2387
2388 :type instance_id: string
2389 :param instance_id: The instance ID.
2390
2391 """
2392 params = {'InstanceId': instance_id, }
2393 return self.make_request(action='UnassignInstance',
2394 body=json.dumps(params))
2395
2396 def unassign_volume(self, volume_id):
2397 """
2398 Unassigns an assigned Amazon EBS volume. The volume remains
2399 registered with the stack. For more information, see `Resource
2400 Management`_.
2401
2402 **Required Permissions**: To use this action, an IAM user must
2403 have a Manage permissions level for the stack, or an attached
2404 policy that explicitly grants permissions. For more
2405 information on user permissions, see `Managing User
2406 Permissions`_.
2407
2408 :type volume_id: string
2409 :param volume_id: The volume ID.
2410
2411 """
2412 params = {'VolumeId': volume_id, }
2413 return self.make_request(action='UnassignVolume',
2414 body=json.dumps(params))
2415
2416 def update_app(self, app_id, name=None, description=None,
2417 data_sources=None, type=None, app_source=None,
2418 domains=None, enable_ssl=None, ssl_configuration=None,
2419 attributes=None, environment=None):
2420 """
2421 Updates a specified app.
2422
2423 **Required Permissions**: To use this action, an IAM user must
2424 have a Deploy or Manage permissions level for the stack, or an
2425 attached policy that explicitly grants permissions. For more
2426 information on user permissions, see `Managing User
2427 Permissions`_.
2428
2429 :type app_id: string
2430 :param app_id: The app ID.
2431
2432 :type name: string
2433 :param name: The app name.
2434
2435 :type description: string
2436 :param description: A description of the app.
2437
2438 :type data_sources: list
2439 :param data_sources: The app's data sources.
2440
2441 :type type: string
2442 :param type: The app type.
2443
2444 :type app_source: dict
2445 :param app_source: A `Source` object that specifies the app repository.
2446
2447 :type domains: list
2448 :param domains: The app's virtual host settings, with multiple domains
2449 separated by commas. For example: `'www.example.com, example.com'`
2450
2451 :type enable_ssl: boolean
2452 :param enable_ssl: Whether SSL is enabled for the app.
2453
2454 :type ssl_configuration: dict
2455 :param ssl_configuration: An `SslConfiguration` object with the SSL
2456 configuration.
2457
2458 :type attributes: map
2459 :param attributes: One or more user-defined key/value pairs to be added
2460 to the stack attributes.
2461
2462 :type environment: list
2463 :param environment:
2464 An array of `EnvironmentVariable` objects that specify environment
2465 variables to be associated with the app. You can specify up to ten
2466 environment variables. After you deploy the app, these variables
2467 are defined on the associated app server instances.
2468
2469 This parameter is supported only by Chef 11.10 stacks. If you have
2470 specified one or more environment variables, you cannot modify the
2471 stack's Chef version.
2472
2473 """
2474 params = {'AppId': app_id, }
2475 if name is not None:
2476 params['Name'] = name
2477 if description is not None:
2478 params['Description'] = description
2479 if data_sources is not None:
2480 params['DataSources'] = data_sources
2481 if type is not None:
2482 params['Type'] = type
2483 if app_source is not None:
2484 params['AppSource'] = app_source
2485 if domains is not None:
2486 params['Domains'] = domains
2487 if enable_ssl is not None:
2488 params['EnableSsl'] = enable_ssl
2489 if ssl_configuration is not None:
2490 params['SslConfiguration'] = ssl_configuration
2491 if attributes is not None:
2492 params['Attributes'] = attributes
2493 if environment is not None:
2494 params['Environment'] = environment
2495 return self.make_request(action='UpdateApp',
2496 body=json.dumps(params))
2497
2498 def update_elastic_ip(self, elastic_ip, name=None):
2499 """
2500 Updates a registered Elastic IP address's name. For more
2501 information, see `Resource Management`_.
2502
2503 **Required Permissions**: To use this action, an IAM user must
2504 have a Manage permissions level for the stack, or an attached
2505 policy that explicitly grants permissions. For more
2506 information on user permissions, see `Managing User
2507 Permissions`_.
2508
2509 :type elastic_ip: string
2510 :param elastic_ip: The address.
2511
2512 :type name: string
2513 :param name: The new name.
2514
2515 """
2516 params = {'ElasticIp': elastic_ip, }
2517 if name is not None:
2518 params['Name'] = name
2519 return self.make_request(action='UpdateElasticIp',
2520 body=json.dumps(params))
2521
2522 def update_instance(self, instance_id, layer_ids=None,
2523 instance_type=None, auto_scaling_type=None,
2524 hostname=None, os=None, ami_id=None,
2525 ssh_key_name=None, architecture=None,
2526 install_updates_on_boot=None, ebs_optimized=None):
2527 """
2528 Updates a specified instance.
2529
2530 **Required Permissions**: To use this action, an IAM user must
2531 have a Manage permissions level for the stack, or an attached
2532 policy that explicitly grants permissions. For more
2533 information on user permissions, see `Managing User
2534 Permissions`_.
2535
2536 :type instance_id: string
2537 :param instance_id: The instance ID.
2538
2539 :type layer_ids: list
2540 :param layer_ids: The instance's layer IDs.
2541
2542 :type instance_type: string
2543 :param instance_type: The instance type. AWS OpsWorks supports all
2544 instance types except Cluster Compute, Cluster GPU, and High Memory
2545 Cluster. For more information, see `Instance Families and Types`_.
2546 The parameter values that you use to specify the various types are
2547 in the API Name column of the Available Instance Types table.
2548
2549 :type auto_scaling_type: string
2550 :param auto_scaling_type: For load-based or time-based instances, the
2551 type.
2552
2553 :type hostname: string
2554 :param hostname: The instance host name.
2555
2556 :type os: string
2557 :param os: The instance's operating system, which must be set to one of
2558 the following.
2559
2560 + Standard operating systems: An Amazon Linux version such as `Amazon
2561 Linux 2014.09`, `Ubuntu 12.04 LTS`, or `Ubuntu 14.04 LTS`.
2562 + Custom AMIs: `Custom`
2563
2564
2565 The default option is the current Amazon Linux version, such as `Amazon
2566 Linux 2014.09`. If you set this parameter to `Custom`, you must use
2567 the CreateInstance action's AmiId parameter to specify the custom
2568 AMI that you want to use. For more information on the standard
2569 operating systems, see `Operating Systems`_For more information on
2570 how to use custom AMIs with OpsWorks, see `Using Custom AMIs`_.
2571
2572 :type ami_id: string
2573 :param ami_id:
2574 A custom AMI ID to be used to create the instance. The AMI should be
2575 based on one of the standard AWS OpsWorks AMIs: Amazon Linux,
2576 Ubuntu 12.04 LTS, or Ubuntu 14.04 LTS. For more information, see
2577 `Instances`_
2578
2579 If you specify a custom AMI, you must set `Os` to `Custom`.
2580
2581 :type ssh_key_name: string
2582 :param ssh_key_name: The instance SSH key name.
2583
2584 :type architecture: string
2585 :param architecture: The instance architecture. Instance types do not
2586 necessarily support both architectures. For a list of the
2587 architectures that are supported by the different instance types,
2588 see `Instance Families and Types`_.
2589
2590 :type install_updates_on_boot: boolean
2591 :param install_updates_on_boot:
2592 Whether to install operating system and package updates when the
2593 instance boots. The default value is `True`. To control when
2594 updates are installed, set this value to `False`. You must then
2595 update your instances manually by using CreateDeployment to run the
2596 `update_dependencies` stack command or manually running `yum`
2597 (Amazon Linux) or `apt-get` (Ubuntu) on the instances.
2598
2599
2600 We strongly recommend using the default value of `True`, to ensure that
2601 your instances have the latest security updates.
2602
2603 :type ebs_optimized: boolean
2604 :param ebs_optimized: Whether this is an Amazon EBS-optimized instance.
2605
2606 """
2607 params = {'InstanceId': instance_id, }
2608 if layer_ids is not None:
2609 params['LayerIds'] = layer_ids
2610 if instance_type is not None:
2611 params['InstanceType'] = instance_type
2612 if auto_scaling_type is not None:
2613 params['AutoScalingType'] = auto_scaling_type
2614 if hostname is not None:
2615 params['Hostname'] = hostname
2616 if os is not None:
2617 params['Os'] = os
2618 if ami_id is not None:
2619 params['AmiId'] = ami_id
2620 if ssh_key_name is not None:
2621 params['SshKeyName'] = ssh_key_name
2622 if architecture is not None:
2623 params['Architecture'] = architecture
2624 if install_updates_on_boot is not None:
2625 params['InstallUpdatesOnBoot'] = install_updates_on_boot
2626 if ebs_optimized is not None:
2627 params['EbsOptimized'] = ebs_optimized
2628 return self.make_request(action='UpdateInstance',
2629 body=json.dumps(params))
2630
2631 def update_layer(self, layer_id, name=None, shortname=None,
2632 attributes=None, custom_instance_profile_arn=None,
2633 custom_security_group_ids=None, packages=None,
2634 volume_configurations=None, enable_auto_healing=None,
2635 auto_assign_elastic_ips=None,
2636 auto_assign_public_ips=None, custom_recipes=None,
2637 install_updates_on_boot=None,
2638 use_ebs_optimized_instances=None,
2639 lifecycle_event_configuration=None):
2640 """
2641 Updates a specified layer.
2642
2643 **Required Permissions**: To use this action, an IAM user must
2644 have a Manage permissions level for the stack, or an attached
2645 policy that explicitly grants permissions. For more
2646 information on user permissions, see `Managing User
2647 Permissions`_.
2648
2649 :type layer_id: string
2650 :param layer_id: The layer ID.
2651
2652 :type name: string
2653 :param name: The layer name, which is used by the console.
2654
2655 :type shortname: string
2656 :param shortname: The layer short name, which is used internally by AWS
2657 OpsWorksand by Chef. The short name is also used as the name for
2658 the directory where your app files are installed. It can have a
2659 maximum of 200 characters and must be in the following format:
2660 /\A[a-z0-9\-\_\.]+\Z/.
2661
2662 :type attributes: map
2663 :param attributes: One or more user-defined key/value pairs to be added
2664 to the stack attributes.
2665
2666 :type custom_instance_profile_arn: string
2667 :param custom_instance_profile_arn: The ARN of an IAM profile to be
2668 used for all of the layer's EC2 instances. For more information
2669 about IAM ARNs, see `Using Identifiers`_.
2670
2671 :type custom_security_group_ids: list
2672 :param custom_security_group_ids: An array containing the layer's
2673 custom security group IDs.
2674
2675 :type packages: list
2676 :param packages: An array of `Package` objects that describe the
2677 layer's packages.
2678
2679 :type volume_configurations: list
2680 :param volume_configurations: A `VolumeConfigurations` object that
2681 describes the layer's Amazon EBS volumes.
2682
2683 :type enable_auto_healing: boolean
2684 :param enable_auto_healing: Whether to disable auto healing for the
2685 layer.
2686
2687 :type auto_assign_elastic_ips: boolean
2688 :param auto_assign_elastic_ips: Whether to automatically assign an
2689 `Elastic IP address`_ to the layer's instances. For more
2690 information, see `How to Edit a Layer`_.
2691
2692 :type auto_assign_public_ips: boolean
2693 :param auto_assign_public_ips: For stacks that are running in a VPC,
2694 whether to automatically assign a public IP address to the layer's
2695 instances. For more information, see `How to Edit a Layer`_.
2696
2697 :type custom_recipes: dict
2698 :param custom_recipes: A `LayerCustomRecipes` object that specifies the
2699 layer's custom recipes.
2700
2701 :type install_updates_on_boot: boolean
2702 :param install_updates_on_boot:
2703 Whether to install operating system and package updates when the
2704 instance boots. The default value is `True`. To control when
2705 updates are installed, set this value to `False`. You must then
2706 update your instances manually by using CreateDeployment to run the
2707 `update_dependencies` stack command or manually running `yum`
2708 (Amazon Linux) or `apt-get` (Ubuntu) on the instances.
2709
2710
2711 We strongly recommend using the default value of `True`, to ensure that
2712 your instances have the latest security updates.
2713
2714 :type use_ebs_optimized_instances: boolean
2715 :param use_ebs_optimized_instances: Whether to use Amazon EBS-optimized
2716 instances.
2717
2718 :type lifecycle_event_configuration: dict
2719 :param lifecycle_event_configuration:
2720
2721 """
2722 params = {'LayerId': layer_id, }
2723 if name is not None:
2724 params['Name'] = name
2725 if shortname is not None:
2726 params['Shortname'] = shortname
2727 if attributes is not None:
2728 params['Attributes'] = attributes
2729 if custom_instance_profile_arn is not None:
2730 params['CustomInstanceProfileArn'] = custom_instance_profile_arn
2731 if custom_security_group_ids is not None:
2732 params['CustomSecurityGroupIds'] = custom_security_group_ids
2733 if packages is not None:
2734 params['Packages'] = packages
2735 if volume_configurations is not None:
2736 params['VolumeConfigurations'] = volume_configurations
2737 if enable_auto_healing is not None:
2738 params['EnableAutoHealing'] = enable_auto_healing
2739 if auto_assign_elastic_ips is not None:
2740 params['AutoAssignElasticIps'] = auto_assign_elastic_ips
2741 if auto_assign_public_ips is not None:
2742 params['AutoAssignPublicIps'] = auto_assign_public_ips
2743 if custom_recipes is not None:
2744 params['CustomRecipes'] = custom_recipes
2745 if install_updates_on_boot is not None:
2746 params['InstallUpdatesOnBoot'] = install_updates_on_boot
2747 if use_ebs_optimized_instances is not None:
2748 params['UseEbsOptimizedInstances'] = use_ebs_optimized_instances
2749 if lifecycle_event_configuration is not None:
2750 params['LifecycleEventConfiguration'] = lifecycle_event_configuration
2751 return self.make_request(action='UpdateLayer',
2752 body=json.dumps(params))
2753
2754 def update_my_user_profile(self, ssh_public_key=None):
2755 """
2756 Updates a user's SSH public key.
2757
2758 **Required Permissions**: To use this action, an IAM user must
2759 have self-management enabled or an attached policy that
2760 explicitly grants permissions. For more information on user
2761 permissions, see `Managing User Permissions`_.
2762
2763 :type ssh_public_key: string
2764 :param ssh_public_key: The user's SSH public key.
2765
2766 """
2767 params = {}
2768 if ssh_public_key is not None:
2769 params['SshPublicKey'] = ssh_public_key
2770 return self.make_request(action='UpdateMyUserProfile',
2771 body=json.dumps(params))
2772
2773 def update_rds_db_instance(self, rds_db_instance_arn, db_user=None,
2774 db_password=None):
2775 """
2776 Updates an Amazon RDS instance.
2777
2778 **Required Permissions**: To use this action, an IAM user must
2779 have a Manage permissions level for the stack, or an attached
2780 policy that explicitly grants permissions. For more
2781 information on user permissions, see `Managing User
2782 Permissions`_.
2783
2784 :type rds_db_instance_arn: string
2785 :param rds_db_instance_arn: The Amazon RDS instance's ARN.
2786
2787 :type db_user: string
2788 :param db_user: The master user name.
2789
2790 :type db_password: string
2791 :param db_password: The database password.
2792
2793 """
2794 params = {'RdsDbInstanceArn': rds_db_instance_arn, }
2795 if db_user is not None:
2796 params['DbUser'] = db_user
2797 if db_password is not None:
2798 params['DbPassword'] = db_password
2799 return self.make_request(action='UpdateRdsDbInstance',
2800 body=json.dumps(params))
2801
2802 def update_stack(self, stack_id, name=None, attributes=None,
2803 service_role_arn=None,
2804 default_instance_profile_arn=None, default_os=None,
2805 hostname_theme=None, default_availability_zone=None,
2806 default_subnet_id=None, custom_json=None,
2807 configuration_manager=None, chef_configuration=None,
2808 use_custom_cookbooks=None, custom_cookbooks_source=None,
2809 default_ssh_key_name=None,
2810 default_root_device_type=None,
2811 use_opsworks_security_groups=None):
2812 """
2813 Updates a specified stack.
2814
2815 **Required Permissions**: To use this action, an IAM user must
2816 have a Manage permissions level for the stack, or an attached
2817 policy that explicitly grants permissions. For more
2818 information on user permissions, see `Managing User
2819 Permissions`_.
2820
2821 :type stack_id: string
2822 :param stack_id: The stack ID.
2823
2824 :type name: string
2825 :param name: The stack's new name.
2826
2827 :type attributes: map
2828 :param attributes: One or more user-defined key/value pairs to be added
2829 to the stack attributes.
2830
2831 :type service_role_arn: string
2832 :param service_role_arn:
2833 The stack AWS Identity and Access Management (IAM) role, which allows
2834 AWS OpsWorks to work with AWS resources on your behalf. You must
2835 set this parameter to the Amazon Resource Name (ARN) for an
2836 existing IAM role. For more information about IAM ARNs, see `Using
2837 Identifiers`_.
2838
2839
2840 You must set this parameter to a valid service role ARN or the action
2841 will fail; there is no default value. You can specify the stack's
2842 current service role ARN, if you prefer, but you must do so
2843 explicitly.
2844
2845 :type default_instance_profile_arn: string
2846 :param default_instance_profile_arn: The ARN of an IAM profile that is
2847 the default profile for all of the stack's EC2 instances. For more
2848 information about IAM ARNs, see `Using Identifiers`_.
2849
2850 :type default_os: string
2851 :param default_os: The stack's operating system, which must be set to
2852 one of the following.
2853
2854 + Standard operating systems: an Amazon Linux version such as `Amazon
2855 Linux 2014.09`, `Ubuntu 12.04 LTS`, or `Ubuntu 14.04 LTS`.
2856 + Custom AMIs: `Custom`. You specify the custom AMI you want to use
2857 when you create instances.
2858
2859
2860 The default option is the current Amazon Linux version.
2861
2862 :type hostname_theme: string
2863 :param hostname_theme: The stack's new host name theme, with spaces are
2864 replaced by underscores. The theme is used to generate host names
2865 for the stack's instances. By default, `HostnameTheme` is set to
2866 `Layer_Dependent`, which creates host names by appending integers
2867 to the layer's short name. The other themes are:
2868
2869 + `Baked_Goods`
2870 + `Clouds`
2871 + `European_Cities`
2872 + `Fruits`
2873 + `Greek_Deities`
2874 + `Legendary_Creatures_from_Japan`
2875 + `Planets_and_Moons`
2876 + `Roman_Deities`
2877 + `Scottish_Islands`
2878 + `US_Cities`
2879 + `Wild_Cats`
2880
2881
2882 To obtain a generated host name, call `GetHostNameSuggestion`, which
2883 returns a host name based on the current theme.
2884
2885 :type default_availability_zone: string
2886 :param default_availability_zone: The stack's default Availability
2887 Zone, which must be in the specified region. For more information,
2888 see `Regions and Endpoints`_. If you also specify a value for
2889 `DefaultSubnetId`, the subnet must be in the same zone. For more
2890 information, see CreateStack.
2891
2892 :type default_subnet_id: string
2893 :param default_subnet_id: The stack's default VPC subnet ID. This
2894 parameter is required if you specify a value for the `VpcId`
2895 parameter. All instances are launched into this subnet unless you
2896 specify otherwise when you create the instance. If you also specify
2897 a value for `DefaultAvailabilityZone`, the subnet must be in that
2898 zone. For information on default values and when this parameter is
2899 required, see the `VpcId` parameter description.
2900
2901 :type custom_json: string
2902 :param custom_json: A string that contains user-defined, custom JSON.
2903 It is used to override the corresponding default stack
2904 configuration JSON values. The string should be in the following
2905 format and must escape characters such as '"'.:
2906 `"{\"key1\": \"value1\", \"key2\": \"value2\",...}"`
2907
2908 For more information on custom JSON, see `Use Custom JSON to Modify the
2909 Stack Configuration JSON`_.
2910
2911 :type configuration_manager: dict
2912 :param configuration_manager: The configuration manager. When you clone
2913 a stack we recommend that you use the configuration manager to
2914 specify the Chef version, 0.9, 11.4, or 11.10. The default value is
2915 currently 11.4.
2916
2917 :type chef_configuration: dict
2918 :param chef_configuration: A `ChefConfiguration` object that specifies
2919 whether to enable Berkshelf and the Berkshelf version on Chef 11.10
2920 stacks. For more information, see `Create a New Stack`_.
2921
2922 :type use_custom_cookbooks: boolean
2923 :param use_custom_cookbooks: Whether the stack uses custom cookbooks.
2924
2925 :type custom_cookbooks_source: dict
2926 :param custom_cookbooks_source: Contains the information required to
2927 retrieve an app or cookbook from a repository. For more
2928 information, see `Creating Apps`_ or `Custom Recipes and
2929 Cookbooks`_.
2930
2931 :type default_ssh_key_name: string
2932 :param default_ssh_key_name: A default SSH key for the stack instances.
2933 You can override this value when you create or update an instance.
2934
2935 :type default_root_device_type: string
2936 :param default_root_device_type: The default root device type. This
2937 value is used by default for all instances in the stack, but you
2938 can override it when you create an instance. For more information,
2939 see `Storage for the Root Device`_.
2940
2941 :type use_opsworks_security_groups: boolean
2942 :param use_opsworks_security_groups: Whether to associate the AWS
2943 OpsWorks built-in security groups with the stack's layers.
2944 AWS OpsWorks provides a standard set of built-in security groups, one
2945 for each layer, which are associated with layers by default.
2946 `UseOpsworksSecurityGroups` allows you to instead provide your own
2947 custom security groups. `UseOpsworksSecurityGroups` has the
2948 following settings:
2949
2950
2951 + True - AWS OpsWorks automatically associates the appropriate built-in
2952 security group with each layer (default setting). You can associate
2953 additional security groups with a layer after you create it but you
2954 cannot delete the built-in security group.
2955 + False - AWS OpsWorks does not associate built-in security groups with
2956 layers. You must create appropriate EC2 security groups and
2957 associate a security group with each layer that you create.
2958 However, you can still manually associate a built-in security group
2959 with a layer on creation; custom security groups are required only
2960 for those layers that need custom settings.
2961
2962
2963 For more information, see `Create a New Stack`_.
2964
2965 """
2966 params = {'StackId': stack_id, }
2967 if name is not None:
2968 params['Name'] = name
2969 if attributes is not None:
2970 params['Attributes'] = attributes
2971 if service_role_arn is not None:
2972 params['ServiceRoleArn'] = service_role_arn
2973 if default_instance_profile_arn is not None:
2974 params['DefaultInstanceProfileArn'] = default_instance_profile_arn
2975 if default_os is not None:
2976 params['DefaultOs'] = default_os
2977 if hostname_theme is not None:
2978 params['HostnameTheme'] = hostname_theme
2979 if default_availability_zone is not None:
2980 params['DefaultAvailabilityZone'] = default_availability_zone
2981 if default_subnet_id is not None:
2982 params['DefaultSubnetId'] = default_subnet_id
2983 if custom_json is not None:
2984 params['CustomJson'] = custom_json
2985 if configuration_manager is not None:
2986 params['ConfigurationManager'] = configuration_manager
2987 if chef_configuration is not None:
2988 params['ChefConfiguration'] = chef_configuration
2989 if use_custom_cookbooks is not None:
2990 params['UseCustomCookbooks'] = use_custom_cookbooks
2991 if custom_cookbooks_source is not None:
2992 params['CustomCookbooksSource'] = custom_cookbooks_source
2993 if default_ssh_key_name is not None:
2994 params['DefaultSshKeyName'] = default_ssh_key_name
2995 if default_root_device_type is not None:
2996 params['DefaultRootDeviceType'] = default_root_device_type
2997 if use_opsworks_security_groups is not None:
2998 params['UseOpsworksSecurityGroups'] = use_opsworks_security_groups
2999 return self.make_request(action='UpdateStack',
3000 body=json.dumps(params))
3001
3002 def update_user_profile(self, iam_user_arn, ssh_username=None,
3003 ssh_public_key=None, allow_self_management=None):
3004 """
3005 Updates a specified user profile.
3006
3007 **Required Permissions**: To use this action, an IAM user must
3008 have an attached policy that explicitly grants permissions.
3009 For more information on user permissions, see `Managing User
3010 Permissions`_.
3011
3012 :type iam_user_arn: string
3013 :param iam_user_arn: The user IAM ARN.
3014
3015 :type ssh_username: string
3016 :param ssh_username: The user's SSH user name. The allowable characters
3017 are [a-z], [A-Z], [0-9], '-', and '_'. If the specified name
3018 includes other punctuation marks, AWS OpsWorks removes them. For
3019 example, `my.name` will be changed to `myname`. If you do not
3020 specify an SSH user name, AWS OpsWorks generates one from the IAM
3021 user name.
3022
3023 :type ssh_public_key: string
3024 :param ssh_public_key: The user's new SSH public key.
3025
3026 :type allow_self_management: boolean
3027 :param allow_self_management: Whether users can specify their own SSH
3028 public key through the My Settings page. For more information, see
3029 `Managing User Permissions`_.
3030
3031 """
3032 params = {'IamUserArn': iam_user_arn, }
3033 if ssh_username is not None:
3034 params['SshUsername'] = ssh_username
3035 if ssh_public_key is not None:
3036 params['SshPublicKey'] = ssh_public_key
3037 if allow_self_management is not None:
3038 params['AllowSelfManagement'] = allow_self_management
3039 return self.make_request(action='UpdateUserProfile',
3040 body=json.dumps(params))
3041
3042 def update_volume(self, volume_id, name=None, mount_point=None):
3043 """
3044 Updates an Amazon EBS volume's name or mount point. For more
3045 information, see `Resource Management`_.
3046
3047 **Required Permissions**: To use this action, an IAM user must
3048 have a Manage permissions level for the stack, or an attached
3049 policy that explicitly grants permissions. For more
3050 information on user permissions, see `Managing User
3051 Permissions`_.
3052
3053 :type volume_id: string
3054 :param volume_id: The volume ID.
3055
3056 :type name: string
3057 :param name: The new name.
3058
3059 :type mount_point: string
3060 :param mount_point: The new mount point.
3061
3062 """
3063 params = {'VolumeId': volume_id, }
3064 if name is not None:
3065 params['Name'] = name
3066 if mount_point is not None:
3067 params['MountPoint'] = mount_point
3068 return self.make_request(action='UpdateVolume',
3069 body=json.dumps(params))
3070
3071 def make_request(self, action, body):
3072 headers = {
3073 'X-Amz-Target': '%s.%s' % (self.TargetPrefix, action),
3074 'Host': self.region.endpoint,
3075 'Content-Type': 'application/x-amz-json-1.1',
3076 'Content-Length': str(len(body)),
3077 }
3078 http_request = self.build_base_http_request(
3079 method='POST', path='/', auth_path='/', params={},
3080 headers=headers, data=body)
3081 response = self._mexe(http_request, sender=None,
3082 override_num_retries=10)
3083 response_body = response.read().decode('utf-8')
3084 boto.log.debug(response_body)
3085 if response.status == 200:
3086 if response_body:
3087 return json.loads(response_body)
3088 else:
3089 json_body = json.loads(response_body)
3090 fault_name = json_body.get('__type', None)
3091 exception_class = self._faults.get(fault_name, self.ResponseError)
3092 raise exception_class(response.status, response.reason,
3093 body=json_body)
3094