# 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,
# },
# network_bandwidth_gbps: {
# min: 1.0,
# max: 1.0,
# },
# allowed_instance_types: ["AllowedInstanceType"],
# },
# },
# ],
# },
# 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: "AnyPrintableAsciiStringMaxLen4000",
# 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,
# traffic_sources: [
# {
# identifier: "XmlStringMaxLen511", # required
# type: "XmlStringMaxLen511",
# },
# ],
# })
# @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.
#
# The name can contain any ASCII character 33 to 126 including most
# punctuation characters, digits, and upper and lowercased letters.
#
# You cannot use a colon (:) in the name.
#
#
# @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
# Information 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
# The 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. Used for launching into the default VPC subnet in each
# Availability Zone when not using the `VPCZoneIdentifier` property, or
# for attaching a network interface when an existing network interface
# ID is specified in a launch template.
# @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 Elastic Load Balancing target
# groups to associate with the Auto Scaling group. Instances are
# registered as targets with the target groups. The target groups
# receive incoming traffic and route requests to one or more registered
# targets. For more information, see [Use Elastic Load Balancing to
# distribute traffic across the instances in your Auto Scaling group][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
# A comma-separated value string of one or more health check types.
#
# The valid values are `EC2`, `ELB`, and `VPC_LATTICE`. `EC2` is the
# default health check and cannot be disabled. For more information, see
# [Health checks for Auto Scaling instances][1] in the *Amazon EC2 Auto
# Scaling User Guide*.
#
# Only specify `EC2` if you must clear a value that was previously set.
#
#
#
# [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 health check.
# This is useful if your instances do not immediately pass their health
# checks after they enter the `InService` state. For more information,
# see [Set the health check grace period for an Auto Scaling group][1]
# in the *Amazon EC2 Auto Scaling User Guide*.
#
# Default: `0` seconds
#
#
#
# [1]: https://docs.aws.amazon.com/autoscaling/ec2/userguide/health-check-grace-period.html
# @option options [String] :placement_group
# The name of the 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 must reside in those Availability Zones.
# @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 [Work with Amazon EC2 Auto Scaling
# termination policies][1] in the *Amazon EC2 Auto Scaling User Guide*.
#
# Valid values: `Default` \| `AllocationStrategy` \|
# `ClosestToNextInstanceHour` \| `NewestInstance` \| `OldestInstance` \|
# `OldestLaunchConfiguration` \| `OldestLaunchTemplate` \|
# `arn:aws:lambda:region:account-id:function:my-function:my-alias`
#
#
#
# [1]: https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-termination-policies.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 [Use Capacity Rebalancing to
# handle Amazon EC2 Spot Interruptions][1] in the 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 to add to the Auto Scaling group before
# instances are launched.
# @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 [Tag Auto Scaling groups and
# instances][1] in the *Amazon EC2 Auto Scaling User Guide*.
#
#
#
# [1]: https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-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 service 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 new instance is considered to
# have finished initializing and resource consumption to become stable
# after it enters the `InService` state.
#
# During an instance refresh, Amazon EC2 Auto Scaling waits for the
# warm-up period after it replaces an instance before it moves on to
# replacing the next instance. Amazon EC2 Auto Scaling also waits for
# the warm-up period before aggregating the metrics for new instances
# with existing instances in the Amazon CloudWatch metrics that are used
# for scaling, resulting in more reliable usage data. 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 various warm-up settings at the group level, we recommend
# that you set the default instance warmup, *even if it is set to 0
# seconds*. 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
# value of `0` or other nominal value.
#
# Default: None
#
#
#
# [1]: https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-default-instance-warmup.html
# @option options [Array] :traffic_sources
# The list of traffic sources to attach to this Auto Scaling group. You
# can use any of the following as traffic sources for an Auto Scaling
# group: Classic Load Balancer, Application Load Balancer, Gateway Load
# Balancer, Network Load Balancer, and VPC Lattice.
# @return [AutoScalingGroup]
def create_group(options = {})
Aws::Plugins::UserAgent.feature('resource') do
@client.create_auto_scaling_group(options)
end
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 a Linux AMI][1] in
# the *Amazon EC2 User Guide for Linux Instances*.
#
# If you specify `InstanceId`, an `ImageId` is not required.
#
#
#
# [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 and Linux instances][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 group IDs to assign to the instances
# in the Auto Scaling group. For more information, see [Control traffic
# to resources using security groups][1] in the *Amazon Virtual Private
# Cloud User Guide*.
#
#
#
# [1]: https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_SecurityGroups.html
# @option options [String] :classic_link_vpc_id
# Available for backward compatibility.
# @option options [Array] :classic_link_vpc_security_groups
# Available for backward compatibility.
# @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*.
#
#
#
# [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 specify `InstanceId`, an `InstanceType` is not required.
#
#
#
# [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.
#
# We recommend that you use PV-GRUB instead of kernels and RAM disks.
# For more information, see [User provided kernels][1] in the *Amazon
# EC2 User Guide for Linux Instances*.
#
#
#
#
#
# [1]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedKernels.html
# @option options [String] :ramdisk_id
# The ID of the RAM disk to select.
#
# We recommend that you use PV-GRUB instead of kernels and RAM disks.
# For more information, see [User provided kernels][1] in the *Amazon
# EC2 User Guide for Linux Instances*.
#
#
#
#
#
# [1]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedKernels.html
# @option options [Array] :block_device_mappings
# The block device mapping entries that define the block devices to
# attach to the instances at launch. By default, the block devices
# specified in the block device mapping for the AMI are used. For more
# information, see [Block device mappings][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
# [Request Spot Instances for fault-tolerant and flexible
# applications][1] in the *Amazon EC2 Auto Scaling User Guide*.
#
# Valid Range: Minimum value of 0.001
#
# 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/launch-template-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
# Specifies whether to assign a public IPv4 address to the group's
# instances. If the instance is launched into a default subnet, the
# default is to assign a public IPv4 address, unless you disabled the
# option to assign a public IPv4 address on the subnet. If the instance
# is launched into a nondefault subnet, the default is not to assign a
# public IPv4 address, unless you enabled the option to assign a public
# IPv4 address on the subnet.
#
# If you specify `true`, each instance in the Auto Scaling group
# receives a unique public IPv4 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 property, you must specify at least one subnet for
# `VPCZoneIdentifier` when you create your group.
#
#
#
# [1]: https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-in-vpc.html
# @option options [String] :placement_tenancy
# The tenancy of the instance, either `default` or `dedicated`. 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
# property to `dedicated`. For more information, see [Configuring
# instance tenancy with Amazon EC2 Auto Scaling][1] in the *Amazon EC2
# Auto Scaling User Guide*.
#
# If you specify `PlacementTenancy`, you must specify at least one
# subnet for `VPCZoneIdentifier` when you create your group.
#
# 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 = {})
Aws::Plugins::UserAgent.feature('resource') do
@client.create_launch_configuration(options)
end
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
# property, 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 = Aws::Plugins::UserAgent.feature('resource') do
@client.describe_scaling_activities(options)
end
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` property.
#
# If you omit this property, 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 = Aws::Plugins::UserAgent.feature('resource') do
@client.describe_auto_scaling_groups(options)
end
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 property, 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 = Aws::Plugins::UserAgent.feature('resource') do
@client.describe_auto_scaling_instances(options)
end
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 property, 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 = Aws::Plugins::UserAgent.feature('resource') do
@client.describe_launch_configurations(options)
end
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 property, 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 = Aws::Plugins::UserAgent.feature('resource') do
@client.describe_policies(options)
end
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 property,
# 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 property 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 property is ignored.
# @return [ScheduledAction::Collection]
def scheduled_actions(options = {})
batches = Enumerator.new do |y|
resp = Aws::Plugins::UserAgent.feature('resource') do
@client.describe_scheduled_actions(options)
end
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 = Aws::Plugins::UserAgent.feature('resource') do
@client.describe_tags(options)
end
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