# frozen_string_literal: true # WARNING ABOUT GENERATED CODE # # This file is generated. See the contributing guide for more information: # https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md # # WARNING ABOUT GENERATED CODE module Aws::AutoScaling # This class provides a resource oriented interface for AutoScaling. # To create a resource object: # # resource = Aws::AutoScaling::Resource.new(region: 'us-west-2') # # You can supply a client object with custom configuration that will be used for all resource operations. # If you do not pass `:client`, a default client will be constructed. # # client = Aws::AutoScaling::Client.new(region: 'us-west-2') # resource = Aws::AutoScaling::Resource.new(client: client) # class Resource # @param options ({}) # @option options [Client] :client def initialize(options = {}) @client = options[:client] || Client.new(options) end # @return [Client] def client @client end # @!group Actions # @example Request syntax with placeholder values # # autoscalinggroup = auto_scaling.create_group({ # auto_scaling_group_name: "XmlStringMaxLen255", # required # launch_configuration_name: "XmlStringMaxLen255", # launch_template: { # launch_template_id: "XmlStringMaxLen255", # launch_template_name: "LaunchTemplateName", # version: "XmlStringMaxLen255", # }, # mixed_instances_policy: { # launch_template: { # launch_template_specification: { # launch_template_id: "XmlStringMaxLen255", # launch_template_name: "LaunchTemplateName", # version: "XmlStringMaxLen255", # }, # overrides: [ # { # instance_type: "XmlStringMaxLen255", # weighted_capacity: "XmlStringMaxLen32", # launch_template_specification: { # launch_template_id: "XmlStringMaxLen255", # launch_template_name: "LaunchTemplateName", # version: "XmlStringMaxLen255", # }, # instance_requirements: { # v_cpu_count: { # required # min: 1, # required # max: 1, # }, # memory_mi_b: { # required # min: 1, # required # max: 1, # }, # cpu_manufacturers: ["intel"], # accepts intel, amd, amazon-web-services # memory_gi_b_per_v_cpu: { # min: 1.0, # max: 1.0, # }, # excluded_instance_types: ["ExcludedInstance"], # instance_generations: ["current"], # accepts current, previous # spot_max_price_percentage_over_lowest_price: 1, # on_demand_max_price_percentage_over_lowest_price: 1, # bare_metal: "included", # accepts included, excluded, required # burstable_performance: "included", # accepts included, excluded, required # require_hibernate_support: false, # network_interface_count: { # min: 1, # max: 1, # }, # local_storage: "included", # accepts included, excluded, required # local_storage_types: ["hdd"], # accepts hdd, ssd # total_local_storage_gb: { # min: 1.0, # max: 1.0, # }, # baseline_ebs_bandwidth_mbps: { # min: 1, # max: 1, # }, # accelerator_types: ["gpu"], # accepts gpu, fpga, inference # accelerator_count: { # min: 1, # max: 1, # }, # accelerator_manufacturers: ["nvidia"], # accepts nvidia, amd, amazon-web-services, xilinx # accelerator_names: ["a100"], # accepts a100, v100, k80, t4, m60, radeon-pro-v520, vu9p # accelerator_total_memory_mi_b: { # min: 1, # max: 1, # }, # }, # }, # ], # }, # instances_distribution: { # on_demand_allocation_strategy: "XmlString", # on_demand_base_capacity: 1, # on_demand_percentage_above_base_capacity: 1, # spot_allocation_strategy: "XmlString", # spot_instance_pools: 1, # spot_max_price: "MixedInstanceSpotPrice", # }, # }, # instance_id: "XmlStringMaxLen19", # min_size: 1, # required # max_size: 1, # required # desired_capacity: 1, # default_cooldown: 1, # availability_zones: ["XmlStringMaxLen255"], # load_balancer_names: ["XmlStringMaxLen255"], # target_group_arns: ["XmlStringMaxLen511"], # health_check_type: "XmlStringMaxLen32", # health_check_grace_period: 1, # placement_group: "XmlStringMaxLen255", # vpc_zone_identifier: "XmlStringMaxLen2047", # termination_policies: ["XmlStringMaxLen1600"], # new_instances_protected_from_scale_in: false, # capacity_rebalance: false, # lifecycle_hook_specification_list: [ # { # lifecycle_hook_name: "AsciiStringMaxLen255", # required # lifecycle_transition: "LifecycleTransition", # required # notification_metadata: "XmlStringMaxLen1023", # heartbeat_timeout: 1, # default_result: "LifecycleActionResult", # notification_target_arn: "NotificationTargetResourceName", # role_arn: "XmlStringMaxLen255", # }, # ], # tags: [ # { # resource_id: "XmlString", # resource_type: "XmlString", # key: "TagKey", # required # value: "TagValue", # propagate_at_launch: false, # }, # ], # service_linked_role_arn: "ResourceName", # max_instance_lifetime: 1, # context: "Context", # desired_capacity_type: "XmlStringMaxLen255", # default_instance_warmup: 1, # }) # @param [Hash] options ({}) # @option options [required, String] :auto_scaling_group_name # The name of the Auto Scaling group. This name must be unique per # Region per account. # @option options [String] :launch_configuration_name # The name of the launch configuration to use to launch instances. # # Conditional: You must specify either a launch template # (`LaunchTemplate` or `MixedInstancesPolicy`) or a launch configuration # (`LaunchConfigurationName` or `InstanceId`). # @option options [Types::LaunchTemplateSpecification] :launch_template # Parameters used to specify the launch template and version to use to # launch instances. # # Conditional: You must specify either a launch template # (`LaunchTemplate` or `MixedInstancesPolicy`) or a launch configuration # (`LaunchConfigurationName` or `InstanceId`). # # The launch template that is specified must be configured for use with # an Auto Scaling group. For more information, see [Creating a launch # template for an Auto Scaling group][1] in the *Amazon EC2 Auto Scaling # User Guide*. # # # # # # [1]: https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-launch-template.html # @option options [Types::MixedInstancesPolicy] :mixed_instances_policy # An embedded object that specifies a mixed instances policy. # # For more information, see [Auto Scaling groups with multiple instance # types and purchase options][1] in the *Amazon EC2 Auto Scaling User # Guide*. # # # # [1]: https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-mixed-instances-groups.html # @option options [String] :instance_id # The ID of the instance used to base the launch configuration on. If # specified, Amazon EC2 Auto Scaling uses the configuration values from # the specified instance to create a new launch configuration. To get # the instance ID, use the Amazon EC2 [DescribeInstances][1] API # operation. For more information, see [Creating an Auto Scaling group # using an EC2 instance][2] in the *Amazon EC2 Auto Scaling User Guide*. # # # # [1]: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances.html # [2]: https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-asg-from-instance.html # @option options [required, Integer] :min_size # The minimum size of the group. # @option options [required, Integer] :max_size # The maximum size of the group. # # With a mixed instances policy that uses instance weighting, Amazon EC2 # Auto Scaling may need to go above `MaxSize` to meet your capacity # requirements. In this event, Amazon EC2 Auto Scaling will never go # above `MaxSize` by more than your largest instance weight (weights # that define how many units each instance contributes to the desired # capacity of the group). # # # @option options [Integer] :desired_capacity # The desired capacity is the initial capacity of the Auto Scaling group # at the time of its creation and the capacity it attempts to maintain. # It can scale beyond this capacity if you configure auto scaling. This # number must be greater than or equal to the minimum size of the group # and less than or equal to the maximum size of the group. If you do not # specify a desired capacity, the default is the minimum size of the # group. # @option options [Integer] :default_cooldown # *Only needed if you use simple scaling policies.* # # The amount of time, in seconds, between one scaling activity ending # and another one starting due to simple scaling policies. For more # information, see [Scaling cooldowns for Amazon EC2 Auto Scaling][1] in # the *Amazon EC2 Auto Scaling User Guide*. # # Default: `300` seconds # # # # [1]: https://docs.aws.amazon.com/autoscaling/ec2/userguide/Cooldown.html # @option options [Array] :availability_zones # A list of Availability Zones where instances in the Auto Scaling group # can be created. This parameter is optional if you specify one or more # subnets for `VPCZoneIdentifier`. # # Conditional: If your account supports EC2-Classic and VPC, this # parameter is required to launch instances into EC2-Classic. # @option options [Array] :load_balancer_names # A list of Classic Load Balancers associated with this Auto Scaling # group. For Application Load Balancers, Network Load Balancers, and # Gateway Load Balancers, specify the `TargetGroupARNs` property # instead. # @option options [Array] :target_group_arns # The Amazon Resource Names (ARN) of the target groups to associate with # the Auto Scaling group. Instances are registered as targets in a # target group, and traffic is routed to the target group. For more # information, see [Elastic Load Balancing and Amazon EC2 Auto # Scaling][1] in the *Amazon EC2 Auto Scaling User Guide*. # # # # [1]: https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-load-balancer.html # @option options [String] :health_check_type # The service to use for the health checks. The valid values are `EC2` # (default) and `ELB`. If you configure an Auto Scaling group to use # load balancer (ELB) health checks, it considers the instance unhealthy # if it fails either the EC2 status checks or the load balancer health # checks. For more information, see [Health checks for Auto Scaling # instances][1] in the *Amazon EC2 Auto Scaling User Guide*. # # # # [1]: https://docs.aws.amazon.com/autoscaling/ec2/userguide/healthcheck.html # @option options [Integer] :health_check_grace_period # ** # # The amount of time, in seconds, that Amazon EC2 Auto Scaling waits # before checking the health status of an EC2 instance that has come # into service and marking it unhealthy due to a failed Elastic Load # Balancing or custom health check. This is useful if your instances do # not immediately pass these health checks after they enter the # `InService` state. For more information, see [Health check grace # period][1] in the *Amazon EC2 Auto Scaling User Guide*. # # Default: `0` seconds # # # # [1]: https://docs.aws.amazon.com/autoscaling/ec2/userguide/healthcheck.html#health-check-grace-period # @option options [String] :placement_group # The name of an existing placement group into which to launch your # instances. For more information, see [Placement groups][1] in the # *Amazon EC2 User Guide for Linux Instances*. # # A *cluster* placement group is a logical grouping of instances within # a single Availability Zone. You cannot specify multiple Availability # Zones and a cluster placement group. # # # # # # [1]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html # @option options [String] :vpc_zone_identifier # A comma-separated list of subnet IDs for a virtual private cloud (VPC) # where instances in the Auto Scaling group can be created. If you # specify `VPCZoneIdentifier` with `AvailabilityZones`, the subnets that # you specify for this parameter must reside in those Availability # Zones. # # Conditional: If your account supports EC2-Classic and VPC, this # parameter is required to launch instances into a VPC. # @option options [Array] :termination_policies # A policy or a list of policies that are used to select the instance to # terminate. These policies are executed in the order that you list # them. For more information, see [Controlling which Auto Scaling # instances terminate during scale in][1] in the *Amazon EC2 Auto # Scaling User Guide*. # # # # [1]: https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-instance-termination.html # @option options [Boolean] :new_instances_protected_from_scale_in # Indicates whether newly launched instances are protected from # termination by Amazon EC2 Auto Scaling when scaling in. For more # information about preventing instances from terminating on scale in, # see [Using instance scale-in protection][1] in the *Amazon EC2 Auto # Scaling User Guide*. # # # # [1]: https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-instance-protection.html # @option options [Boolean] :capacity_rebalance # Indicates whether Capacity Rebalancing is enabled. Otherwise, Capacity # Rebalancing is disabled. When you turn on Capacity Rebalancing, Amazon # EC2 Auto Scaling attempts to launch a Spot Instance whenever Amazon # EC2 notifies that a Spot Instance is at an elevated risk of # interruption. After launching a new instance, it then terminates an # old instance. For more information, see [Amazon EC2 Auto Scaling # Capacity Rebalancing][1] in the *Amazon EC2 Auto Scaling User Guide*. # # # # [1]: https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-capacity-rebalancing.html # @option options [Array] :lifecycle_hook_specification_list # One or more lifecycle hooks for the group, which specify actions to # perform when Amazon EC2 Auto Scaling launches or terminates instances. # @option options [Array] :tags # One or more tags. You can tag your Auto Scaling group and propagate # the tags to the Amazon EC2 instances it launches. Tags are not # propagated to Amazon EBS volumes. To add tags to Amazon EBS volumes, # specify the tags in a launch template but use caution. If the launch # template specifies an instance tag with a key that is also specified # for the Auto Scaling group, Amazon EC2 Auto Scaling overrides the # value of that instance tag with the value specified by the Auto # Scaling group. For more information, see [Tagging Auto Scaling groups # and instances][1] in the *Amazon EC2 Auto Scaling User Guide*. # # # # [1]: https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-tagging.html # @option options [String] :service_linked_role_arn # The Amazon Resource Name (ARN) of the service-linked role that the # Auto Scaling group uses to call other Amazon Web Services on your # behalf. By default, Amazon EC2 Auto Scaling uses a service-linked role # named `AWSServiceRoleForAutoScaling`, which it creates if it does not # exist. For more information, see [Service-linked roles][1] in the # *Amazon EC2 Auto Scaling User Guide*. # # # # [1]: https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-service-linked-role.html # @option options [Integer] :max_instance_lifetime # The maximum amount of time, in seconds, that an instance can be in # service. The default is null. If specified, the value must be either 0 # or a number equal to or greater than 86,400 seconds (1 day). For more # information, see [Replacing Auto Scaling instances based on maximum # instance lifetime][1] in the *Amazon EC2 Auto Scaling User Guide*. # # # # [1]: https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-max-instance-lifetime.html # @option options [String] :context # Reserved. # @option options [String] :desired_capacity_type # The unit of measurement for the value specified for desired capacity. # Amazon EC2 Auto Scaling supports `DesiredCapacityType` for # attribute-based instance type selection only. For more information, # see [Creating an Auto Scaling group using attribute-based instance # type selection][1] in the *Amazon EC2 Auto Scaling User Guide*. # # By default, Amazon EC2 Auto Scaling specifies `units`, which # translates into number of instances. # # Valid values: `units` \| `vcpu` \| `memory-mib` # # # # [1]: https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-asg-instance-type-requirements.html # @option options [Integer] :default_instance_warmup # The amount of time, in seconds, until a newly launched instance can # contribute to the Amazon CloudWatch metrics. This delay lets an # instance finish initializing before Amazon EC2 Auto Scaling aggregates # instance metrics, resulting in more reliable usage data. Set this # value equal to the amount of time that it takes for resource # consumption to become stable after an instance reaches the `InService` # state. For more information, see [Set the default instance warmup for # an Auto Scaling group][1] in the *Amazon EC2 Auto Scaling User Guide*. # # To manage your warm-up settings at the group level, we recommend that # you set the default instance warmup, *even if its value is set to 0 # seconds*. This also optimizes the performance of scaling policies that # scale continuously, such as target tracking and step scaling policies. # # If you need to remove a value that you previously set, include the # property but specify `-1` for the value. However, we strongly # recommend keeping the default instance warmup enabled by specifying a # minimum value of `0`. # # Default: None # # # # [1]: https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-default-instance-warmup.html # @return [AutoScalingGroup] def create_group(options = {}) @client.create_auto_scaling_group(options) AutoScalingGroup.new( name: options[:auto_scaling_group_name], client: @client ) end # @example Request syntax with placeholder values # # launchconfiguration = auto_scaling.create_launch_configuration({ # launch_configuration_name: "XmlStringMaxLen255", # required # image_id: "XmlStringMaxLen255", # key_name: "XmlStringMaxLen255", # security_groups: ["XmlString"], # classic_link_vpc_id: "XmlStringMaxLen255", # classic_link_vpc_security_groups: ["XmlStringMaxLen255"], # user_data: "XmlStringUserData", # instance_id: "XmlStringMaxLen19", # instance_type: "XmlStringMaxLen255", # kernel_id: "XmlStringMaxLen255", # ramdisk_id: "XmlStringMaxLen255", # block_device_mappings: [ # { # virtual_name: "XmlStringMaxLen255", # device_name: "XmlStringMaxLen255", # required # ebs: { # snapshot_id: "XmlStringMaxLen255", # volume_size: 1, # volume_type: "BlockDeviceEbsVolumeType", # delete_on_termination: false, # iops: 1, # encrypted: false, # throughput: 1, # }, # no_device: false, # }, # ], # instance_monitoring: { # enabled: false, # }, # spot_price: "SpotPrice", # iam_instance_profile: "XmlStringMaxLen1600", # ebs_optimized: false, # associate_public_ip_address: false, # placement_tenancy: "XmlStringMaxLen64", # metadata_options: { # http_tokens: "optional", # accepts optional, required # http_put_response_hop_limit: 1, # http_endpoint: "disabled", # accepts disabled, enabled # }, # }) # @param [Hash] options ({}) # @option options [required, String] :launch_configuration_name # The name of the launch configuration. This name must be unique per # Region per account. # @option options [String] :image_id # The ID of the Amazon Machine Image (AMI) that was assigned during # registration. For more information, see [Finding an AMI][1] in the # *Amazon EC2 User Guide for Linux Instances*. # # If you do not specify `InstanceId`, you must specify `ImageId`. # # # # [1]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/finding-an-ami.html # @option options [String] :key_name # The name of the key pair. For more information, see [Amazon EC2 Key # Pairs][1] in the *Amazon EC2 User Guide for Linux Instances*. # # # # [1]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html # @option options [Array] :security_groups # A list that contains the security groups to assign to the instances in # the Auto Scaling group. # # \[EC2-VPC\] Specify the security group IDs. For more information, see # [Security Groups for Your VPC][1] in the *Amazon Virtual Private Cloud # User Guide*. # # \[EC2-Classic\] Specify either the security group names or the # security group IDs. For more information, see [Amazon EC2 Security # Groups][2] in the *Amazon EC2 User Guide for Linux Instances*. # # # # [1]: https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_SecurityGroups.html # [2]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html # @option options [String] :classic_link_vpc_id # *EC2-Classic retires on August 15, 2022. This parameter is not # supported after that date.* # # The ID of a ClassicLink-enabled VPC to link your EC2-Classic instances # to. For more information, see [ClassicLink][1] in the *Amazon EC2 User # Guide for Linux Instances*. # # # # [1]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-classiclink.html # @option options [Array] :classic_link_vpc_security_groups # *EC2-Classic retires on August 15, 2022. This parameter is not # supported after that date.* # # The IDs of one or more security groups for the specified # ClassicLink-enabled VPC. For more information, see [ClassicLink][1] in # the *Amazon EC2 User Guide for Linux Instances*. # # If you specify the `ClassicLinkVPCId` parameter, you must specify this # parameter. # # # # [1]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-classiclink.html # @option options [String] :user_data # The user data to make available to the launched EC2 instances. For # more information, see [Instance metadata and user data][1] (Linux) and # [Instance metadata and user data][2] (Windows). If you are using a # command line tool, base64-encoding is performed for you, and you can # load the text from a file. Otherwise, you must provide base64-encoded # text. User data is limited to 16 KB. # # # # [1]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html # [2]: https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-instance-metadata.html # @option options [String] :instance_id # The ID of the instance to use to create the launch configuration. The # new launch configuration derives attributes from the instance, except # for the block device mapping. # # To create a launch configuration with a block device mapping or # override any other instance attributes, specify them as part of the # same request. # # For more information, see [Creating a launch configuration using an # EC2 instance][1] in the *Amazon EC2 Auto Scaling User Guide*. # # If you do not specify `InstanceId`, you must specify both `ImageId` # and `InstanceType`. # # # # [1]: https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-lc-with-instanceID.html # @option options [String] :instance_type # Specifies the instance type of the EC2 instance. # # For information about available instance types, see [Available # Instance Types][1] in the *Amazon EC2 User Guide for Linux Instances*. # # If you do not specify `InstanceId`, you must specify `InstanceType`. # # # # [1]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#AvailableInstanceTypes # @option options [String] :kernel_id # The ID of the kernel associated with the AMI. # @option options [String] :ramdisk_id # The ID of the RAM disk to select. # @option options [Array] :block_device_mappings # A block device mapping, which specifies the block devices for the # instance. You can specify virtual devices and EBS volumes. For more # information, see [Block Device Mapping][1] in the *Amazon EC2 User # Guide for Linux Instances*. # # # # [1]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/block-device-mapping-concepts.html # @option options [Types::InstanceMonitoring] :instance_monitoring # Controls whether instances in this group are launched with detailed # (`true`) or basic (`false`) monitoring. # # The default value is `true` (enabled). # # When detailed monitoring is enabled, Amazon CloudWatch generates # metrics every minute and your account is charged a fee. When you # disable detailed monitoring, CloudWatch generates metrics every 5 # minutes. For more information, see [Configure Monitoring for Auto # Scaling Instances][1] in the *Amazon EC2 Auto Scaling User Guide*. # # # # [1]: https://docs.aws.amazon.com/autoscaling/latest/userguide/enable-as-instance-metrics.html # @option options [String] :spot_price # The maximum hourly price to be paid for any Spot Instance launched to # fulfill the request. Spot Instances are launched when the price you # specify exceeds the current Spot price. For more information, see # [Requesting Spot Instances][1] in the *Amazon EC2 Auto Scaling User # Guide*. # # When you change your maximum price by creating a new launch # configuration, running instances will continue to run as long as the # maximum price for those running instances is higher than the current # Spot price. # # # # # # [1]: https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-launch-spot-instances.html # @option options [String] :iam_instance_profile # The name or the Amazon Resource Name (ARN) of the instance profile # associated with the IAM role for the instance. The instance profile # contains the IAM role. # # For more information, see [IAM role for applications that run on # Amazon EC2 instances][1] in the *Amazon EC2 Auto Scaling User Guide*. # # # # [1]: https://docs.aws.amazon.com/autoscaling/ec2/userguide/us-iam-role.html # @option options [Boolean] :ebs_optimized # Specifies whether the launch configuration is optimized for EBS I/O # (`true`) or not (`false`). The optimization provides dedicated # throughput to Amazon EBS and an optimized configuration stack to # provide optimal I/O performance. This optimization is not available # with all instance types. Additional fees are incurred when you enable # EBS optimization for an instance type that is not EBS-optimized by # default. For more information, see [Amazon EBS-optimized instances][1] # in the *Amazon EC2 User Guide for Linux Instances*. # # The default value is `false`. # # # # [1]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSOptimized.html # @option options [Boolean] :associate_public_ip_address # For Auto Scaling groups that are running in a virtual private cloud # (VPC), specifies whether to assign a public IP address to the group's # instances. If you specify `true`, each instance in the Auto Scaling # group receives a unique public IP address. For more information, see # [Launching Auto Scaling instances in a VPC][1] in the *Amazon EC2 Auto # Scaling User Guide*. # # If you specify this parameter, you must specify at least one subnet # for `VPCZoneIdentifier` when you create your group. # # If the instance is launched into a default subnet, the default is to # assign a public IP address, unless you disabled the option to assign a # public IP address on the subnet. If the instance is launched into a # nondefault subnet, the default is not to assign a public IP address, # unless you enabled the option to assign a public IP address on the # subnet. # # # # # # [1]: https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-in-vpc.html # @option options [String] :placement_tenancy # The tenancy of the instance. An instance with `dedicated` tenancy runs # on isolated, single-tenant hardware and can only be launched into a # VPC. # # To launch dedicated instances into a shared tenancy VPC (a VPC with # the instance placement tenancy attribute set to `default`), you must # set the value of this parameter to `dedicated`. # # If you specify `PlacementTenancy`, you must specify at least one # subnet for `VPCZoneIdentifier` when you create your group. # # For more information, see [Configuring instance tenancy with Amazon # EC2 Auto Scaling][1] in the *Amazon EC2 Auto Scaling User Guide*. # # Valid Values: `default` \| `dedicated` # # # # [1]: https://docs.aws.amazon.com/autoscaling/ec2/userguide/auto-scaling-dedicated-instances.html # @option options [Types::InstanceMetadataOptions] :metadata_options # The metadata options for the instances. For more information, see # [Configuring the Instance Metadata Options][1] in the *Amazon EC2 Auto # Scaling User Guide*. # # # # [1]: https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-launch-config.html#launch-configurations-imds # @return [LaunchConfiguration] def create_launch_configuration(options = {}) @client.create_launch_configuration(options) LaunchConfiguration.new( name: options[:launch_configuration_name], client: @client ) end # @!group Associations # @example Request syntax with placeholder values # # activities = auto_scaling.activities({ # activity_ids: ["XmlString"], # auto_scaling_group_name: "XmlStringMaxLen255", # include_deleted_groups: false, # }) # @param [Hash] options ({}) # @option options [Array] :activity_ids # The activity IDs of the desired scaling activities. If you omit this # parameter, all activities for the past six weeks are described. If # unknown activities are requested, they are ignored with no error. If # you specify an Auto Scaling group, the results are limited to that # group. # # Array Members: Maximum number of 50 IDs. # @option options [String] :auto_scaling_group_name # The name of the Auto Scaling group. # @option options [Boolean] :include_deleted_groups # Indicates whether to include scaling activity from deleted Auto # Scaling groups. # @return [Activity::Collection] def activities(options = {}) batches = Enumerator.new do |y| resp = @client.describe_scaling_activities(options) resp.each_page do |page| batch = [] page.data.activities.each do |a| batch << Activity.new( id: a.activity_id, data: a, client: @client ) end y.yield(batch) end end Activity::Collection.new(batches) end # @param [String] id # @return [Activity] def activity(id) Activity.new( id: id, client: @client ) end # @param [String] name # @return [AutoScalingGroup] def group(name) AutoScalingGroup.new( name: name, client: @client ) end # @example Request syntax with placeholder values # # groups = auto_scaling.groups({ # auto_scaling_group_names: ["XmlStringMaxLen255"], # filters: [ # { # name: "XmlString", # values: ["XmlString"], # }, # ], # }) # @param [Hash] options ({}) # @option options [Array] :auto_scaling_group_names # The names of the Auto Scaling groups. By default, you can only specify # up to 50 names. You can optionally increase this limit using the # `MaxRecords` parameter. # # If you omit this parameter, all Auto Scaling groups are described. # @option options [Array] :filters # One or more filters to limit the results based on specific tags. # @return [AutoScalingGroup::Collection] def groups(options = {}) batches = Enumerator.new do |y| resp = @client.describe_auto_scaling_groups(options) resp.each_page do |page| batch = [] page.data.auto_scaling_groups.each do |a| batch << AutoScalingGroup.new( name: a.auto_scaling_group_name, data: a, client: @client ) end y.yield(batch) end end AutoScalingGroup::Collection.new(batches) end # @example Request syntax with placeholder values # # instances = auto_scaling.instances({ # instance_ids: ["XmlStringMaxLen19"], # }) # @param [Hash] options ({}) # @option options [Array] :instance_ids # The IDs of the instances. If you omit this parameter, all Auto Scaling # instances are described. If you specify an ID that does not exist, it # is ignored with no error. # # Array Members: Maximum number of 50 items. # @return [Instance::Collection] def instances(options = {}) batches = Enumerator.new do |y| resp = @client.describe_auto_scaling_instances(options) resp.each_page do |page| batch = [] page.data.auto_scaling_instances.each do |a| batch << Instance.new( group_name: a.auto_scaling_group_name, id: a.instance_id, data: a, client: @client ) end y.yield(batch) end end Instance::Collection.new(batches) end # @param [String] name # @return [LaunchConfiguration] def launch_configuration(name) LaunchConfiguration.new( name: name, client: @client ) end # @example Request syntax with placeholder values # # launch_configurations = auto_scaling.launch_configurations({ # launch_configuration_names: ["XmlStringMaxLen255"], # }) # @param [Hash] options ({}) # @option options [Array] :launch_configuration_names # The launch configuration names. If you omit this parameter, all launch # configurations are described. # # Array Members: Maximum number of 50 items. # @return [LaunchConfiguration::Collection] def launch_configurations(options = {}) batches = Enumerator.new do |y| resp = @client.describe_launch_configurations(options) resp.each_page do |page| batch = [] page.data.launch_configurations.each do |l| batch << LaunchConfiguration.new( name: l.launch_configuration_name, data: l, client: @client ) end y.yield(batch) end end LaunchConfiguration::Collection.new(batches) end # @example Request syntax with placeholder values # # policies = auto_scaling.policies({ # auto_scaling_group_name: "XmlStringMaxLen255", # policy_names: ["ResourceName"], # policy_types: ["XmlStringMaxLen64"], # }) # @param [Hash] options ({}) # @option options [String] :auto_scaling_group_name # The name of the Auto Scaling group. # @option options [Array] :policy_names # The names of one or more policies. If you omit this parameter, all # policies are described. If a group name is provided, the results are # limited to that group. If you specify an unknown policy name, it is # ignored with no error. # # Array Members: Maximum number of 50 items. # @option options [Array] :policy_types # One or more policy types. The valid values are `SimpleScaling`, # `StepScaling`, `TargetTrackingScaling`, and `PredictiveScaling`. # @return [ScalingPolicy::Collection] def policies(options = {}) batches = Enumerator.new do |y| resp = @client.describe_policies(options) resp.each_page do |page| batch = [] page.data.scaling_policies.each do |s| batch << ScalingPolicy.new( name: s.policy_name, data: s, client: @client ) end y.yield(batch) end end ScalingPolicy::Collection.new(batches) end # @param [String] name # @return [ScalingPolicy] def policy(name) ScalingPolicy.new( name: name, client: @client ) end # @param [String] name # @return [ScheduledAction] def scheduled_action(name) ScheduledAction.new( name: name, client: @client ) end # @example Request syntax with placeholder values # # scheduled_actions = auto_scaling.scheduled_actions({ # auto_scaling_group_name: "XmlStringMaxLen255", # scheduled_action_names: ["XmlStringMaxLen255"], # start_time: Time.now, # end_time: Time.now, # }) # @param [Hash] options ({}) # @option options [String] :auto_scaling_group_name # The name of the Auto Scaling group. # @option options [Array] :scheduled_action_names # The names of one or more scheduled actions. If you omit this # parameter, all scheduled actions are described. If you specify an # unknown scheduled action, it is ignored with no error. # # Array Members: Maximum number of 50 actions. # @option options [Time,DateTime,Date,Integer,String] :start_time # The earliest scheduled start time to return. If scheduled action names # are provided, this parameter is ignored. # @option options [Time,DateTime,Date,Integer,String] :end_time # The latest scheduled start time to return. If scheduled action names # are provided, this parameter is ignored. # @return [ScheduledAction::Collection] def scheduled_actions(options = {}) batches = Enumerator.new do |y| resp = @client.describe_scheduled_actions(options) resp.each_page do |page| batch = [] page.data.scheduled_update_group_actions.each do |s| batch << ScheduledAction.new( name: s.scheduled_action_name, data: s, client: @client ) end y.yield(batch) end end ScheduledAction::Collection.new(batches) end # @example Request syntax with placeholder values # # tags = auto_scaling.tags({ # filters: [ # { # name: "XmlString", # values: ["XmlString"], # }, # ], # }) # @param [Hash] options ({}) # @option options [Array] :filters # One or more filters to scope the tags to return. The maximum number of # filters per filter type (for example, `auto-scaling-group`) is 1000. # @return [Tag::Collection] def tags(options = {}) batches = Enumerator.new do |y| resp = @client.describe_tags(options) resp.each_page do |page| batch = [] page.data.tags.each do |t| batch << Tag.new( key: t.key, resource_id: t.resource_id, resource_type: t.resource_type, data: t, client: @client ) end y.yield(batch) end end Tag::Collection.new(batches) end end end