How One Line of Code Killed The Internet

Roger Stringer

Roger Stringer / March 1, 2017

2 min read

post mortem of the AWS outage from Tuesday:

The Amazon Simple Storage Service (S3) team was debugging an issue causing the S3 billing system to progress more slowly than expected. At 9:37AM PST, an authorized S3 team member using an established playbook executed a command which was intended to remove a small number of servers for one of the S3 subsystems that is used by the S3 billing process.

Unfortunately, one of the inputs to the command was entered incorrectly and a larger set of servers was removed than intended. The servers that were inadvertently removed supported two other S3 subsystems.

One of these subsystems, the index subsystem, manages the metadata and location information of all S3 objects in the region. This subsystem is necessary to serve all GET, LIST, PUT, and DELETE requests. The second subsystem, the placement subsystem, manages allocation of new storage and requires the index subsystem to be functioning properly to correctly operate.

The placement subsystem is used during PUT requests to allocate storage for new objects. Removing a significant portion of the capacity caused each of these systems to require a full restart.

While these subsystems were being restarted, S3 was unable to service requests. Other AWS services in the US-EAST-1 Region that rely on S3 for storage, including the S3 console, Amazon Elastic Compute Cloud (EC2) new instance launches, Amazon Elastic Block Store (EBS) volumes (when data was needed from a S3 snapshot), and AWS Lambda were also impacted while the S3 APIs were unavailable.

This was a pretty major outage this week, it took down sites of all sorts (including this one).

Amazon admitting it was human error is refreshing, so many times you see a service go down and the service will blame it on something other than human error.

Thinking on it some more though, considering the size of AWS, the fact that one person in one location was able to take so much down, even accidentally?

That is entirely too much power for one region, and when you consider that nearly all of S3 was affected as well...

Do you like my content?

Sponsor Me On Github