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

Fixing AWS with AWS

Fixing AWS with AWS

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