def get_task_definition(self, security_group): task_definition = FargateTaskDefinition(self._stack, self._name, memory_limit_mib=512, cpu=256) task_definition.add_volume( name=DATA_VOLUME, efs_volume_configuration=self.get_volume(security_group)) image = ContainerImage.from_asset(directory=self._config.docker_dir) container = ContainerDefinition( self._stack, 'obm_container', task_definition=task_definition, image=image, environment=self.get_environment(), logging=AwsLogDriver(stream_prefix=self._config.service_name), ) container.add_mount_points(self.get_mount_point()) container.add_port_mappings( PortMapping(container_port=HTTP_PORT, host_port=HTTP_PORT), PortMapping(container_port=HTTPS_PORT, host_port=HTTPS_PORT), PortMapping(container_port=SSH_PORT, host_port=SSH_PORT), ) self._tag_it(container) self._tag_it(task_definition) return task_definition
def __init__(self, scope: Construct, _id: str, **kwargs) -> None: super().__init__(scope, _id, **kwargs) task_definition = FargateTaskDefinition( self, 'TaskDefinition', cpu=256, memory_limit_mib=512, execution_role=Role( self, 'ExecutionRole', assumed_by=cast(IPrincipal, ServicePrincipal('ecs-tasks.amazonaws.com')) ), task_role=Role( self, 'TaskRole', assumed_by=cast(IPrincipal, ServicePrincipal('ecs-tasks.amazonaws.com')), managed_policies=[ ManagedPolicy.from_aws_managed_policy_name('AmazonSESFullAccess') ] ) ) task_definition.add_container( 'Container', image=ContainerImage.from_asset( getcwd(), file='Dockerfile', repository_name='jqbx-bot', exclude=['cdk.out'] ), command=['pipenv', 'run', 'python', '-u', '-m', 'src.main'], environment={ 'SPOTIFY_USER_ID': environ.get('SPOTIFY_USER_ID'), 'JQBX_ROOM_ID': environ.get('JQBX_ROOM_ID'), 'JQBX_BOT_DISPLAY_NAME': environ.get('JQBX_BOT_DISPLAY_NAME'), 'JQBX_BOT_IMAGE_URL': environ.get('JQBX_BOT_IMAGE_URL'), 'DATA_SERVICE_BASE_URL': environ.get('DATA_SERVICE_BASE_URL') }, logging=AwsLogDriver( stream_prefix='jqbx-bot', log_group=LogGroup(self, 'LogGroup') ) ) cluster = Cluster(self, '%sCluster' % _id) FargateService(self, '%sService' % _id, cluster=cluster, task_definition=task_definition, desired_count=1)