MCPcopy Create free account
hub / github.com/aws-samples/aws-cdk-examples / EC2InstanceStack

Class EC2InstanceStack

python/ec2/instance/app.py:16–59  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

14
15
16class EC2InstanceStack(Stack):
17
18 def __init__(self, scope: Construct, id: str, **kwargs) -> None:
19 super().__init__(scope, id, **kwargs)
20
21 # VPC
22 vpc = ec2.Vpc(self, "VPC",
23 nat_gateways=0,
24 subnet_configuration=[ec2.SubnetConfiguration(name="public",subnet_type=ec2.SubnetType.PUBLIC)]
25 )
26
27 # AMI
28 amzn_linux = ec2.MachineImage.latest_amazon_linux(
29 generation=ec2.AmazonLinuxGeneration.AMAZON_LINUX_2,
30 edition=ec2.AmazonLinuxEdition.STANDARD,
31 virtualization=ec2.AmazonLinuxVirt.HVM,
32 storage=ec2.AmazonLinuxStorage.GENERAL_PURPOSE
33 )
34
35 # Instance Role and SSM Managed Policy
36 role = iam.Role(self, "InstanceSSM", assumed_by=iam.ServicePrincipal("ec2.amazonaws.com"))
37
38 role.add_managed_policy(iam.ManagedPolicy.from_aws_managed_policy_name("AmazonSSMManagedInstanceCore"))
39
40 # Instance
41 instance = ec2.Instance(self, "Instance",
42 instance_type=ec2.InstanceType("t3.nano"),
43 machine_image=amzn_linux,
44 vpc = vpc,
45 role = role
46 )
47
48 # Script in S3 as Asset
49 asset = Asset(self, "Asset", path=os.path.join(dirname, "configure.sh"))
50 local_path = instance.user_data.add_s3_download_command(
51 bucket=asset.bucket,
52 bucket_key=asset.s3_object_key
53 )
54
55 # Userdata executes script from S3
56 instance.user_data.add_execute_file_command(
57 file_path=local_path
58 )
59 asset.grant_read(instance.role)
60
61app = App()
62EC2InstanceStack(app, "ec2-instance")

Callers 1

app.pyFile · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected