in usecases/guest-webapp-sample/lib/blea-investigation-instance-stack.ts [13:59]
constructor(scope: cdk.Construct, id: string, props: BLEAInvestigationInstanceStackProps) {
super(scope, id, props);
// Security Group
const securityGroupForEc2 = new ec2.SecurityGroup(this, 'SgEC2', {
vpc: props.myVpc,
});
// InstanceProfile
const ssmInstanceRole = new iam.Role(this, 'ssm-instance-role', {
assumedBy: new iam.ServicePrincipal('ec2.amazonaws.com'),
path: '/',
managedPolicies: [
{ managedPolicyArn: 'arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore' },
{ managedPolicyArn: 'arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy' },
],
});
// UserData
const userData = ec2.UserData.forLinux({ shebang: '#!/bin/bash' });
userData.addCommands('sudo yum -y install mariadb');
const instance = new ec2.Instance(this, 'Investigation', {
vpc: props.myVpc,
vpcSubnets: props.myVpc.selectSubnets({
subnetGroupName: 'Protected',
}),
instanceType: ec2.InstanceType.of(ec2.InstanceClass.T3, ec2.InstanceSize.MICRO),
machineImage: new ec2.AmazonLinuxImage({
generation: ec2.AmazonLinuxGeneration.AMAZON_LINUX_2,
}),
securityGroup: securityGroupForEc2,
role: ssmInstanceRole,
userData: userData,
blockDevices: [
{
deviceName: '/dev/xvda',
volume: ec2.BlockDeviceVolume.ebs(10, {
encrypted: true,
}),
},
],
});
// Tag
Tags.of(instance).add('Name', 'Investigation');
}