pulumi/dch_cloud/ecs.py

68 lines
1.5 KiB
Python

import pulumi
import pulumi_aws as aws
from .common import instance_assume_role_policy
from .default_vpc import subnets
iam_role = aws.iam.Role(
'ecs-ec2-instance-role',
assume_role_policy=instance_assume_role_policy.json,
managed_policy_arns=[
aws.iam.get_policy(name='AmazonEC2ContainerServiceforEC2Role').arn,
],
)
instance_profile = aws.iam.InstanceProfile(
'ecs-ec2-instance-profile',
role=iam_role.name,
)
svc_linked_role = aws.iam.ServiceLinkedRole(
'ecs',
aws_service_name='ecs.amazonaws.com',
)
cluster = aws.ecs.Cluster(
'default',
name='default',
)
ami = aws.ec2.get_ami(
most_recent=True,
owners=['amazon'],
filters=[
aws.ec2.GetAmiFilterArgs(name='name', values=['al2023-ami-ecs-hvm-*']),
aws.ec2.GetAmiFilterArgs(name='architecture', values=['arm64']),
],
)
launch_tmpl = aws.ec2.LaunchTemplate(
'ecs-default',
image_id=ami.id,
instance_type='t4g.nano',
key_name='dustin@rosalina',
iam_instance_profile={'arn': instance_profile.arn},
)
asg = aws.autoscaling.Group(
'ecs-default',
max_size=1,
min_size=1,
vpc_zone_identifiers=[subnets.ids[0]],
launch_template=aws.autoscaling.GroupLaunchTemplateArgs(
id=launch_tmpl.id,
version=launch_tmpl.latest_version.apply(str),
),
instance_refresh=aws.autoscaling.GroupInstanceRefreshArgs(
strategy='Rolling',
),
tags=[
{
'key': 'AmazonECSManaged',
'value': 'true',
'propagate_at_launch': True,
}
],
)