constructor()

in cdk/lib/constructs/thing-construct.ts [18:44]


    constructor(scope: cdk.Construct, id: string, props: IotThingProps) {
        super(scope, id);
        
        let userData = `#!/bin/bash
            apt-get -y update
            apt-get -y install build-essential g++ tmux nodejs npm git jq awscli
                      
            cd /home/ubuntu
            su - ubuntu -c 'git clone ` + props.githubRepoUrl + `'
            su - ubuntu -c 'cd /home/ubuntu/iot-secure-tunneling-demo'`
        
        props.resources.forEach(resource => {
            userData = userData + 
                `su - ubuntu -c 'cd /home/ubuntu/iot-secure-tunneling-demo/` + resource + ` && npm install\n'
                su - ubuntu -c 'cd /home/ubuntu/iot-secure-tunneling-demo && ./bin/` + resource + `/run.sh'\n`    
        })
      
        const thing = new ec2.CfnInstance(this, props.thingName, {
            imageId: props.machineImageId,
            instanceType: InstanceType.of(InstanceClass.BURSTABLE2, InstanceSize.MICRO).toString(),
            iamInstanceProfile: props.instanceProfile.ref,
            keyName: props.keyName,
            subnetId: props.vpc.publicSubnets[0].subnetId,
            tags: [{key: "Name", value: props.thingName}],
            userData: cdk.Fn.base64(userData)
        });
    }