UNPKG

@pulumi/awsx

Version:

[![Actions Status](https://github.com/pulumi/pulumi-awsx/workflows/master/badge.svg)](https://github.com/pulumi/pulumi-awsx/actions) [![Slack](http://www.pulumi.com/images/docs/badges/slack.svg)](https://slack.pulumi.com) [![NPM version](https://badge.fur

168 lines (167 loc) 7.35 kB
import * as aws from "@pulumi/aws"; import * as pulumi from "@pulumi/pulumi"; import * as ec2 from "../ec2"; export declare class AutoScalingLaunchConfiguration extends pulumi.ComponentResource { readonly launchConfiguration: aws.ec2.LaunchConfiguration; readonly id: pulumi.Output<string>; readonly securityGroups: ec2.SecurityGroup[]; readonly instanceProfile: aws.iam.InstanceProfile; /** * Name to give the auto-scaling-group's cloudformation stack name. */ readonly stackName: pulumi.Output<string>; constructor(name: string, vpc: ec2.Vpc, args?: AutoScalingLaunchConfigurationArgs, opts?: pulumi.ComponentResourceOptions); static defaultInstanceProfilePolicyDocument(): aws.iam.PolicyDocument; static defaultInstanceProfilePolicyARNs(): ("arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceforEC2Role" | "arn:aws:iam::aws:policy/AmazonEC2ReadOnlyAccess")[]; /** * Creates the [instanceProfile] for a [ClusterAutoScalingLaunchConfiguration] if not provided * explicitly. If [assumeRolePolicy] is provided it will be used when creating the task, * otherwise [defaultInstanceProfilePolicyDocument] will be used. If [policyArns] are provided, * they will be used to create [RolePolicyAttachment]s for the Role. Otherwise, * [defaultInstanceProfilePolicyARNs] will be used. */ static createInstanceProfile(name: string, assumeRolePolicy?: string | aws.iam.PolicyDocument, policyArns?: string[], opts?: pulumi.ComponentResourceOptions): import("@pulumi/aws/iam/instanceProfile").InstanceProfile; } /** * The set of arguments when creating the launch configuration for a cluster's autoscaling group. */ export interface AutoScalingLaunchConfigurationArgs { /** * Associate a public ip address with an instance in a VPC. */ associatePublicIpAddress?: pulumi.Input<boolean>; /** * If true, the launched EC2 instance will be EBS-optimized. */ ebsOptimized?: pulumi.Input<boolean>; /** * Enables/disables detailed monitoring. This is enabled by default. */ enableMonitoring?: pulumi.Input<boolean>; /** * Customize Ephemeral (also known as * "Instance Store") volumes on the instance. See Block Devices below for details. */ ephemeralBlockDevices?: aws.ec2.LaunchConfigurationArgs["ephemeralBlockDevices"]; /** * The name attribute of the IAM instance profile to associate * with launched instances. */ iamInstanceProfile?: pulumi.Input<string | aws.iam.InstanceProfile>; /** * The key name that should be used for the instance. */ keyName?: pulumi.Input<string>; /** * The name of the launch configuration. If you leave * this blank, Terraform will auto-generate a unique name. */ name?: pulumi.Input<string>; /** * Creates a unique name beginning with the specified * prefix. Conflicts with `name`. */ namePrefix?: pulumi.Input<string>; /** * The maximum price to use for reserving spot instances. */ spotPrice?: pulumi.Input<string>; /** * Can be used instead of `user_data` to pass base64-encoded binary data directly. Use this * instead of `user_data` whenever the value is not a valid UTF-8 string. For example, * gzip-encoded user data must be base64-encoded and passed via this argument to avoid * corruption. */ userDataBase64?: pulumi.Input<string>; /** * The ID of a ClassicLink-enabled VPC. Only applies to EC2-Classic instances. (eg. `vpc-2730681a`) */ vpcClassicLinkId?: pulumi.Input<string>; /** * The IDs of one or more security groups for the specified ClassicLink-enabled VPC (eg. `sg-46ae3d11`). */ vpcClassicLinkSecurityGroups?: pulumi.Input<pulumi.Input<string>[]>; /** * The name of the stack the launch configuration will signal. */ stackName?: pulumi.Input<string>; /** * The instance profile to use for the autoscaling group. If not provided, a default one will * be created. */ instanceProfile?: aws.iam.InstanceProfile; /** * The EC2 image ID to launch. If this is not provided, then [ecsOptimizedAMIName] will be * used. If neither are provided the imageId for Amazon' * `"/aws/service/ecs/optimized-ami/amazon-linux/recommended"` image will be used. */ imageId?: pulumi.Input<string>; /** * The name of the ECS-optimzed AMI to use for the Container Instances in this cluster, e.g. * "amzn-ami-2017.09.l-amazon-ecs-optimized". Defaults to using the latest recommended ECS Linux * Optimized AMI, which may change over time and cause recreation of EC2 instances when new * versions are release. To control when these changes are adopted, set this parameter * explicitly to the version you would like to use. * * See http://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html for * valid values. */ ecsOptimizedAMIName?: string; /** * The size of instance to launch. Defaults to t2.micro if unspecified. */ instanceType?: pulumi.Input<aws.ec2.InstanceType>; /** * The tenancy of the instance. Valid values are `"default"` or `"dedicated"`, see * http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_CreateLaunchConfiguration.html * for more details. Default is "default" if unspecified. */ placementTenancy?: pulumi.Input<"default" | "dedicated">; /** * Customize details about the root block device of the instance. See Block Devices below for * details. * * If not provided, an 32gb 'gp2' root device will be created. This device will be deleted upon * termination. */ rootBlockDevice?: aws.ec2.LaunchConfigurationArgs["rootBlockDevice"]; /** * Additional EBS block devices to attach to the instance. See Block Devices below for details. * * If not provided, a 5gb 'gp2' device will be mounted at '/dev/xvdb' and a 50gb 'gp2' device * will be mounted at '/dev/xvdcz'. Both devices will be deleted upon termination. */ ebsBlockDevices?: aws.ec2.LaunchConfigurationArgs["ebsBlockDevices"]; /** * A list of associated security group IDs. */ securityGroups?: ec2.SecurityGroupOrId[]; /** * The user data to provide when launching the instance. Do not pass gzip-compressed data via this argument; see `user_data_base64` instead. */ userData?: pulumi.Input<string> | AutoScalingUserData; } export interface AutoScalingUserData { /** * Additional lines to be placed in the `runcmd` section of the launch configuration. */ extraRuncmdLines?(): pulumi.Input<UserDataLine[]>; /** * Additional lines to be placed in the `bootcmd` section of the launch configuration. */ extraBootcmdLines?(): pulumi.Input<UserDataLine[]>; } /** * A line that should be added to the [userData] section of a LaunchConfiguration template. */ export interface UserDataLine { /** * Actual contents of the line. */ contents: string; /** * Whether the line should be automatically indented to the right level. Defaults to [true]. * Set explicitly to [false] to control all indentation. */ automaticallyIndent?: boolean; }