Skip to content

How to check status of AWS Service Outage

0

Hello! Is there an easy way to check the health status of an AWS Service in a given region? For example, if I want to check if Lambda or DynamoDB is currently experiencing outages in us-east-1, is there a rest endpoint I could hit in a browser or API call that might return me that info? I've been reading about AWS Health API but i dont think that is doing what I'm hoping for (or at least not that I see on the surface). And from what I can tell, I cant see any rest GET endpoints that just return an outage status for a given service (though that would be super helpful!). Does anyone know of anything, or maybe a strategy for checking the health of a service to properly do some smart routing at the application level?

Background info - i'm looking to define a custom /health endpoint in an API service of mine, that runs in a fargate container, to check downstream dependencies like Lambda and Dynamo to see if there is any known outages of those service types. If i detect an outage with lets say Lambdas in us-east-1, then I will programatically route traffic to my us-east-2 endpoint instead at a load balancer placed before my fargate's health check.

3 Answers
0

You can leverage AWS Health API. The AWS Health API provides access to the AWS Health information that appears in the AWS Health Dashboard. You can use the API operations to get information about events that might affect your AWS services and resources.

References:

AWS Health API

AWS Personal Health Dashboard

blog post

Hope this helps.

Comment here if you have additional questions, happy to help.

Abhishek

AWS
EXPERT

answered 3 years ago

  • Thanks Abhishek. I've tried reading a little about the AWS Health APi, but havent been able to make sense of it yet for the purpose of me doing on-demand health checks on a given AWS resource. I can try looking into it more, but let me ask this 1 question about it. When you say it provides API operations to "get information about events", does that mean you can only use it to view active "events" or "incidents" happening, or can you use it to just check in on a service like SQS to see if it has any known current outages? I guess my question really is "what is an event"?

  • That's a very great question, Health API would give you the overall result and you'd need to add a logic to further parse it for specific service. Refer this documentation.

    There are two types of AWS Health events:

    Public events are service events that aren't specific to an account. For example, if there is an issue with Amazon EC2 in an AWS Region, AWS Health provides information about the event, even if you don't use services or resources in that Region.

    Account-specific events are specific to your account or an account in your organization. For example, if there's an issue with an Amazon EC2 instance in a Region that you use, AWS Health provides information about the event and the list of affected Amazon EC2 instances.

    Also, take a look at this blog post, which is very well written.

    Important: I didn't mention this, AWS Health is only available to Business or Enterprise support plan. Hope you already have one of those.

  • Do you have any additional questions, happy to help.

0

You have personal health dashboard for service.

However, have you considered using event bridge to alert on aws health events and then react to them? I know you mention them in your question.

Then this can trigger your lambda function or step function to perform and action such as a fail over.

EXPERT

answered 3 years ago

0

It's a great example, and yes, there are a number of reliable methods available here depending on how much real-time accuracy you require.

The AWS Health API is in fact more in line with your needs than you may realize; particularly the DescribeEvents and DescribeAffectedEntities functions are able to display active problems affecting services in specific regions. The drawback is that access to account-level health data requires a Business or Enterprise Support plan; if you have a lower tier plan then you'll only be able to see public events, which brings us to the following alternative.

AWS Service Health Dashboard (SHD) exposes a public RSS feed for each service and region. For example:

  • https://status.aws.amazon.com/rss/lambda-us-east-1.rss
  • https://status.aws.amazon.com/rss/dynamodb-us-east-1.rss

You can programatically poll these feeds, parse the entries and check for any active incidents. Although it isn't a clean REST JSON endpoint, it is publicly accessible without the need for authentication and works satisfactorily for your routing logic.

For your specific /health endpoint strategy, I'd suggest combining both:

  1. It is reasonable to check the SHD RSS feed for your target services and regions every 60 seconds.
  2. Store the result internally in order that the /health check doesn't make an outgoing call with each incoming request.
  3. When an incident is detected for Lambda or DynamoDB in the us-east-1 region, switch the flag that your load balancer reads so as to direct traffic to us-east-2

This avoids the latency of a live outbound call sitting in your critical path while still keeping your routing decision reasonably fresh.

Relevant docs worth checking:

Hope that helps point you in the right direction.

answered 3 months ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.