in lumberyard-sample/ci/ec2-build/ec2_build/ec2_build_stack.py [0:0]
def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:
super().__init__(scope, id, **kwargs)
vpc = ec2.Vpc(
self, "stk-vpc",
max_azs=3,
nat_gateways=1,
subnet_configuration=[
ec2.SubnetConfiguration(name="stk-public",subnet_type=ec2.SubnetType.PUBLIC),
ec2.SubnetConfiguration(name="stk-private",subnet_type=ec2.SubnetType.PRIVATE)
]
)
ssh_security_group = ec2.SecurityGroup(
self, "allow-ssh-sg",
vpc=vpc,
description="Allow ssh access to ec2 instances",
allow_all_outbound=True
)
ssh_security_group.add_ingress_rule(ec2.Peer.any_ipv4(), ec2.Port.tcp(22), "allow ssh access from the world")
userdata = ec2.UserData.for_linux(shebang="#!/bin/bash -xe")
userdata.add_commands(
"echo '======================================================='",
"yum -y update",
"yum install -y git docker svn",
"cd /home/ec2-user",
"git clone https://github.com/yahavb/agones.git",
"git clone https://github.com/yahavb/amazon-aurora-call-to-amazon-sagemaker-sample.git",
"chown ec2-user -R /home/ec2-user/agones/",
"service docker start"
)
role = iam.Role(self, "stkbuild", assumed_by=iam.ServicePrincipal("ec2.amazonaws.com"))
role.add_to_policy(iam.PolicyStatement(
actions=["ecr:GetAuthorizationToken"],
resources=["*"]
))
asg = autoscaling.AutoScalingGroup(
self, 'stk-asg',
vpc=vpc,
role=role,
user_data=userdata,
security_group=ssh_security_group,
instance_type=ec2.InstanceType("c5.4xlarge"),
machine_image=ec2.AmazonLinuxImage(),
associate_public_ip_address=True,
update_type=autoscaling.UpdateType.REPLACING_UPDATE,
desired_capacity=1,
key_name='id_rsa',
vpc_subnets={'subnet_type': ec2.SubnetType.PUBLIC}
)
config = asg.node.find_child('LaunchConfig')
config.add_property_override(
property_path="BlockDeviceMappings",
value=[{'DeviceName': '/dev/xvda', 'Ebs': {'VolumeSize': 100,'DeleteOnTermination': False, 'VolumeType': 'gp2'}}]
)