Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Fixing AWS with AWS

Fixing AWS with AWS

Avatar for Mike Fiedler

Mike Fiedler

January 18, 2018
Tweet

More Decks by Mike Fiedler

Other Decks in Technology

Transcript

  1. One Task Per Host - ECS? • Run on Boot

    via user-data ◦ Unmanaged task, doesn’t restart ◦ Update requires host replacement • Placement Strategies/Constraints ◦ distinctInstance / memberOf ◦ Count mismatch ◦ Doesn’t follow Autoscaling
  2. AWS Lambda Handler (trimmed) def lambda_handler(event, context): service = os.getenv('ECS_SERVICE_ARN')

    cluster = event["detail"]["clusterArn"] adjust_service_desired_count( ecs_client(), cluster, service )
  3. def adjust_service_desired_count(ecs_client, cluster, service): running_service = ecs_client.describe_services(cluster=cluster, services=[service]) desired_task_count =

    running_service["services"][0]["desiredCount"] clusters = ecs_client.describe_clusters(clusters=[cluster]) registered_instances = clusters["clusters"][0]["registeredContainerInstancesCount"] if desired_task_count != registered_instances: response = ecs_client.update_service( cluster=cluster, service=service, desiredCount=registered_instances, ) return response