def get_user_data()

in cookbooks/aws-parallelcluster-environment/files/cfn_hup_configuration/share_compute_fleet_dna.py [0:0]


def get_user_data(lt_id, lt_version, region_name):
    """
    Get UserData from specified Launch Template using EC2 DescribeLaunchTemplateVersions API.

    :param lt_id: Launch Template ID (eg: lt-12345678901234567)
    :param lt_version: Launch Template latest Version Number (eg: 2)
    :param region_name: AWS region name (eg: us-east-1)
    :return: string of user_data in MIME format
    """
    decoded_data = None
    try:
        proxy_config = parse_proxy_config()

        ec2_client = boto3.client("ec2", region_name=region_name, config=proxy_config)
        logger.info("Running EC2 DescribeLaunchTemplateVersions API for %s version %s", lt_id, lt_version)
        response = ec2_client.describe_launch_template_versions(
            LaunchTemplateId=lt_id,
            Versions=[
                lt_version,
            ],
        ).get("LaunchTemplateVersions")
        decoded_data = base64.b64decode(response[0]["LaunchTemplateData"]["UserData"], validate=True).decode("utf-8")
    except Exception as err:
        if hasattr(err, "message"):
            err = err.message
        logger.error(
            "Unable to get UserData for launch template %s with version %s.\nException: %s", lt_id, lt_version, err
        )

    return decoded_data