ApplyCloudFormationInitOptions

class aws_cdk.aws_ec2.ApplyCloudFormationInitOptions(*, config_sets=None, embed_fingerprint=None, ignore_failures=None, include_role=None, include_url=None, print_log=None, timeout=None)

Bases: object

Options for applying CloudFormation init to an instance or instance group.

Parameters
  • config_sets (Optional[Sequence[str]]) – ConfigSet to activate. Default: [‘default’]

  • embed_fingerprint (Optional[bool]) – Force instance replacement by embedding a config fingerprint. If true (the default), a hash of the config will be embedded into the UserData, so that if the config changes, the UserData changes. - If the EC2 instance is instance-store backed or userDataCausesReplacement is set, this will cause the instance to be replaced and the new configuration to be applied. - If the instance is EBS-backed and userDataCausesReplacement is not set, the change of UserData will make the instance restart but not be replaced, and the configuration will not be applied automatically. If false, no hash will be embedded, and if the CloudFormation Init config changes nothing will happen to the running instance. If a config update introduces errors, you will not notice until after the CloudFormation deployment successfully finishes and the next instance fails to launch. Default: true

  • ignore_failures (Optional[bool]) – Don’t fail the instance creation when cfn-init fails. You can use this to prevent CloudFormation from rolling back when instances fail to start up, to help in debugging. Default: false

  • include_role (Optional[bool]) – Include –role argument when running cfn-init and cfn-signal commands. This will be the IAM instance profile attached to the EC2 instance Default: false

  • include_url (Optional[bool]) – Include –url argument when running cfn-init and cfn-signal commands. This will be the cloudformation endpoint in the deployed region e.g. https://cloudformation.us-east-1.amazonaws.com Default: false

  • print_log (Optional[bool]) – Print the results of running cfn-init to the Instance System Log. By default, the output of running cfn-init is written to a log file on the instance. Set this to true to print it to the System Log (visible from the EC2 Console), false to not print it. (Be aware that the system log is refreshed at certain points in time of the instance life cycle, and successful execution may not always show up). Default: true

  • timeout (Optional[Duration]) – Timeout waiting for the configuration to be applied. Default: Duration.minutes(5)

Example:

# vpc is of type Vpc
# instance_type is of type InstanceType
# machine_image is of type IMachineImage


ec2.Instance(self, "Instance",
    vpc=vpc,
    instance_type=instance_type,
    machine_image=machine_image,

    # Showing the most complex setup, if you have simpler requirements
    # you can use `CloudFormationInit.fromElements()`.
    init=ec2.CloudFormationInit.from_config_sets(
        config_sets={
            # Applies the configs below in this order
            "default": ["yumPreinstall", "config"]
        },
        configs={
            "yum_preinstall": ec2.InitConfig([
                # Install an Amazon Linux package using yum
                ec2.InitPackage.yum("git")
            ]),
            "config": ec2.InitConfig([
                # Create a JSON file from tokens (can also create other files)
                ec2.InitFile.from_object("/etc/stack.json", {
                    "stack_id": Stack.of(self).stack_id,
                    "stack_name": Stack.of(self).stack_name,
                    "region": Stack.of(self).region
                }),

                # Create a group and user
                ec2.InitGroup.from_name("my-group"),
                ec2.InitUser.from_name("my-user"),

                # Install an RPM from the internet
                ec2.InitPackage.rpm("http://mirrors.ukfast.co.uk/sites/dl.fedoraproject.org/pub/epel/8/Everything/x86_64/Packages/r/rubygem-git-1.5.0-2.el8.noarch.rpm")
            ])
        }
    ),
    init_options=ec2.ApplyCloudFormationInitOptions(
        # Optional, which configsets to activate (['default'] by default)
        config_sets=["default"],

        # Optional, how long the installation is expected to take (5 minutes by default)
        timeout=Duration.minutes(30),

        # Optional, whether to include the --url argument when running cfn-init and cfn-signal commands (false by default)
        include_url=True,

        # Optional, whether to include the --role argument when running cfn-init and cfn-signal commands (false by default)
        include_role=True
    )
)

Attributes

config_sets

ConfigSet to activate.

Default

[‘default’]

Return type

Optional[List[str]]

embed_fingerprint

Force instance replacement by embedding a config fingerprint.

If true (the default), a hash of the config will be embedded into the UserData, so that if the config changes, the UserData changes.

  • If the EC2 instance is instance-store backed or userDataCausesReplacement is set, this will cause the instance to be replaced and the new configuration to be applied.

  • If the instance is EBS-backed and userDataCausesReplacement is not set, the change of UserData will make the instance restart but not be replaced, and the configuration will not be applied automatically.

If false, no hash will be embedded, and if the CloudFormation Init config changes nothing will happen to the running instance. If a config update introduces errors, you will not notice until after the CloudFormation deployment successfully finishes and the next instance fails to launch.

Default

true

Return type

Optional[bool]

ignore_failures

Don’t fail the instance creation when cfn-init fails.

You can use this to prevent CloudFormation from rolling back when instances fail to start up, to help in debugging.

Default

false

Return type

Optional[bool]

include_role

Include –role argument when running cfn-init and cfn-signal commands.

This will be the IAM instance profile attached to the EC2 instance

Default

false

Return type

Optional[bool]

include_url

Include –url argument when running cfn-init and cfn-signal commands.

This will be the cloudformation endpoint in the deployed region e.g. https://cloudformation.us-east-1.amazonaws.com

Default

false

Return type

Optional[bool]

print_log

Print the results of running cfn-init to the Instance System Log.

By default, the output of running cfn-init is written to a log file on the instance. Set this to true to print it to the System Log (visible from the EC2 Console), false to not print it.

(Be aware that the system log is refreshed at certain points in time of the instance life cycle, and successful execution may not always show up).

Default

true

Return type

Optional[bool]

timeout

Timeout waiting for the configuration to be applied.

Default

Duration.minutes(5)

Return type

Optional[Duration]