Files
nexus/sreweekly/articles/116/02-burst-credits-of-t2-ec2-instances-need-monitoring.html
2026-09-12 17:23:01 +08:00

17 lines
24 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html><html lang="en"><head><meta http-equiv="Content-Type" content="text/html" charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><title>Burst credits of t2 EC2 instances need monitoring | cloudonaut</title><meta name="description" content="EC2 is one of the fundamental services on AWS. If you are not 100% Serverless, your application health depends on the health ..."><meta property="og:type" content="article"><meta property="og:title" content="Burst credits of t2 EC2 instances need monitoring"><meta property="og:url" content="https://cloudonaut.io/burst-credits-of-t2-ec2-instances-need-monitoring/"><meta property="og:site_name" content="cloudonaut"><meta property="og:description" content="EC2 is one of the fundamental services on AWS. If you are not 100% Serverless, your application health depends on the health ..."><meta property="og:locale" content="en_US"><meta property="og:image" content="https://cloudonaut.io/images/2018/03/t2-credit-shortage.png"><meta property="og:image" content="https://cloudonaut.io/images/2018/01/marbot-alert.gif"><meta property="article:published_time" content="2018-03-13T20:00:00.000Z"><meta property="article:author" content="Andreas and Michael Wittig"><meta property="article:tag" content="cloudwatch"><meta property="article:tag" content="ec2"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:image" content="https://cloudonaut.io/images/2018/03/t2-credit-shortage.png"><meta name="twitter:site" content="@cloudonaut_io"><script type="application/ld+json">{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "Burst credits of t2 EC2 instances need monitoring",
"datePublished": "2018-03-13T20:00:00.000Z",
"author": {
"@type": "Person",
"name": "Michael Wittig"
}
}</script><meta name="HandheldFriendly" content="True"><meta name="MobileOptimized" content="320"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="robots" content="max-image-preview:large"><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"><link rel="preload" href="/dist/bootstrap.css" as="style"><link rel="preload" href="/dist/main.js" as="script"><link rel="preload" href="/font/rubik-v7-latin-700.woff2" as="font" type="font/woff2" crossorigin><link rel="preload" href="/font/rubik-v7-latin-regular.woff2" as="font" type="font/woff2" crossorigin><link rel="preload" href="/font/rubik-v7-latin-500.woff2" as="font" type="font/woff2" crossorigin><link href="/dist/bootstrap.css" rel="stylesheet"><script type="application/ld+json">{
"@context": "http://schema.org",
"@type": "WebSite",
"publisher": "cloudonaut",
"url": "https://cloudonaut.io",
"description": "Launch pad for Amazon Web Services"
}</script><link rel="canonical" href="https://cloudonaut.io/burst-credits-of-t2-ec2-instances-need-monitoring/"><link rel="alternate" type="application/rss+xml" title="cloudonaut" href="https://cloudonaut.io/feed/rss.xml"><meta name="google-site-verification" content="WPzL6Yiee6tJKbSpBGpE7TsCwB7Nv3h8cT-xFgepZAU"><link rel="me" href="https://social.cloudonaut.io/@andreas"><link rel="me" href="https://social.cloudonaut.io/@michael"><script defer data-domain="cloudonaut.io" src="/js/script.outbound-links.file-downloads.js"></script><meta name="generator" content="Hexo 8.1.2"></head><body><header><div class="container"><div class="row md-nav d-none d-lg-flex"><div class="col-3"><a href="/">cloudonaut</a></div><div class="col-9"><a href="/">Home</a> <a href="/page/1/">Blog</a> <a target="_blank" rel="noopener" href="https://podcast.cloudonaut.io/">Podcast</a> <a target="_blank" rel="noopener" href="https://www.youtube.com/c/cloudonaut">YouTube</a> <a href="/books-and-video-courses/">Books</a> <button type="button" class="btn-subscribe" data-toggle="modal" data-target="#subscriptionModal">Subscribe</button></div></div><div class="row align-items-center xs-nav d-flex d-lg-none"><div class="col-3"><button type="button" id="toggler" style="padding:0;border:none;background-color:transparent" data-toggle="collapse" data-target="#mobileNavigation" aria-controls="mobileNavigation" aria-expanded="false" aria-label="Toggle navigation" onclick="navbar_xs_show()"><img src="/img/icon-menu-open.png" width="34" height="25" alt="Open Navigation Icon" title="Open Navigation" style="height:25px;width:auto;float:left"></button></div><div class="col-9"><a href="#" class="btn-subscribe" data-toggle="modal" data-target="#subscriptionModal">Subscribe</a></div></div><div class="row collapse" id="mobileNavigation"><div class="col-12"><a href="/">Home</a> <a href="/page/1/">Blog</a> <a target="_blank" rel="noopener" href="https://podcast.cloudonaut.io/">Podcast</a> <a target="_blank" rel="noopener" href="https://www.youtube.com/c/cloudonaut">YouTube</a> <a href="/books-and-video-courses/">Books</a></div></div></div><script>function navbar_xs_show(){document.querySelectorAll("#toggler > img").forEach(function(e){e.src="/img/icon-menu-close.svg"}),document.querySelectorAll("#mobileNavigation").forEach(function(e){e.style.display=""}),document.querySelectorAll("main").forEach(function(e){e.style.display="none"}),document.querySelectorAll("footer").forEach(function(e){e.style.display="none"}),document.querySelectorAll("#toggler").forEach(function(e){e.setAttribute("onclick","navbar_xs_hide()")})}function navbar_xs_hide(){document.querySelectorAll("#toggler > img").forEach(function(e){e.src="/img/icon-menu-open.png"}),document.querySelectorAll("#mobileNavigation").forEach(function(e){e.style.display="none"}),document.querySelectorAll("main").forEach(function(e){e.style.display=""}),document.querySelectorAll("footer").forEach(function(e){e.style.display=""}),document.querySelectorAll("#toggler").forEach(function(e){e.setAttribute("onclick","navbar_xs_show()")})}</script><div class="modal fade" id="subscriptionModal" tabindex="-1" role="dialog" aria-hidden="true"><div class="modal-dialog modal-dialog-centered" role="document"><div class="modal-content"><button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button><div class="d-none d-md-block"><p class="headline">Stay up-to-date!</p><p>We launched the cloudonaut blog in 2015. Since then, we have published 402 articles, 96 podcast episodes, and 105 videos. Our weekly newsletter keeps you up-to-date. <strong>Subscribe now!</strong>.</p></div><div class="d-block d-md-none"><p class="headline">Subscribe</p><p>Our weekly newsletter keeps you up-to-date. Subscribe now! <strong>It's all free</strong>.</p></div><form class="newsletter"><div class="form-group"><input type="email" class="form-control" name="email" placeholder="Email Address"></div><div class="form-group form-check"><input type="checkbox" class="form-check-input" name="gdpr" value="true"> <label class="form-check-label" for="gdpr">I want to subscribe to the newsletter with new content as well as announcements regarding products and services. I agree with the <a href="/privacy-policy/">privacy policy</a>.</label></div><button type="submit" class="btn btn-primary" disabled style="margin-bottom:25px">Subscribe</button><div class="alert alert-success d-none" role="alert"><span class="message"></span></div><div class="alert alert-danger d-none" role="alert">Sorry, something went wrong. Please try again!</div></form><div style="margin-top:30px"><i>Do you prefer <a href="/feed/rss.xml">RSS</a>?</i></div></div></div></div><div class="modal fade" id="podcastModal" tabindex="-1" role="dialog" aria-hidden="true"><div class="modal-dialog modal-dialog-centered" role="document"><div class="modal-content"><button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button><p class="headline">Podcast</p><p>We are dropping a new episode every other week.</p><a class="btn btn-primary" target="_blank" rel="noopener" href="https://podcasts.apple.com/podcast/id1476505149"><div>Apple Podcasts</div></a><a class="btn btn-primary" target="_blank" rel="noopener" href="https://www.google.com/podcasts?feed=aHR0cHM6Ly9wb2RjYXN0LmNsb3Vkb25hdXQuaW8vZmVlZC9hYWM%3D"><div>Google Podcasts</div></a><a class="btn btn-primary" target="_blank" rel="noopener" href="https://open.spotify.com/show/1M44gYEuSZs3YX6zDUcVZs"><div>Spotify</div></a><a class="btn btn-primary" target="_blank" rel="noopener" href="https://overcast.fm/itunes1476505149"><div>Overcast</div></a><a class="btn btn-primary" target="_blank" rel="noopener" href="https://castro.fm/itunes/1476505149"><div>Castro</div></a><a class="btn btn-primary" target="_blank" rel="noopener" href="https://pca.st/itunes/1476505149"><div>Pocket Casts</div></a><br><p>Alternatively search for "cloudonaut" or add the <a target="_blank" rel="noopener" href="https://podcast.cloudonaut.io/feed/aac">feed</a> in your podcast app.</p></div></div></div></header><main><article><div class="post"><div class="container"><div class="row"><div class="col-sm-8 offset-sm-2"><h1 class="post-title">Burst credits of t2 EC2 instances need monitoring</h1><div class="meta-information"><a href="#author">Michael Wittig</a> – 13 Mar 2018</div></div></div><div class="row content"><div class="col-12"><p>EC2 is one of the fundamental services on AWS. If you are not 100% Serverless, your application health depends on the health of your EC2 instances. When I do AWS architecture reviews for our clients, I check that CPU burst capacity is monitored for EC2 instances of type t2. <strong>A widespread mistake is that credits of burstable EC2 instances (t2 family) are not monitored.</strong> If your <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/t2-credits-baseline-concepts.html" target="_blank" rel="noopener">burstable EC2 instance</a> runs out of credits, the <strong>performance drops by 70-95%</strong>.</p><p><picture class="img-fluid"><source type="image/webp" srcset="/images/2018/03/t2-credit-shortage@730w.webp 730w, /images/2018/03/t2-credit-shortage@730w2x.webp 1460w, /images/2018/03/t2-credit-shortage@610w.webp 610w, /images/2018/03/t2-credit-shortage@610w2x.webp 1220w, /images/2018/03/t2-credit-shortage@450w.webp 450w, /images/2018/03/t2-credit-shortage@450w2x.webp 900w, /images/2018/03/t2-credit-shortage@330w.webp 330w, /images/2018/03/t2-credit-shortage@330w2x.webp 660w, /images/2018/03/t2-credit-shortage@545w.webp 545w, /images/2018/03/t2-credit-shortage@545w2x.webp 1090w" sizes="(min-width: 1200px) 730px, (min-width: 992px) 610px, (min-width: 768px) 450px, (min-width: 576px) 330px, 545px"><source srcset="/images/2018/03/t2-credit-shortage@730w.png 730w, /images/2018/03/t2-credit-shortage@730w2x.png 1460w, /images/2018/03/t2-credit-shortage@610w.png 610w, /images/2018/03/t2-credit-shortage@610w2x.png 1220w, /images/2018/03/t2-credit-shortage@450w.png 450w, /images/2018/03/t2-credit-shortage@450w2x.png 900w, /images/2018/03/t2-credit-shortage@330w.png 330w, /images/2018/03/t2-credit-shortage@330w2x.png 660w, /images/2018/03/t2-credit-shortage@545w.png 545w, /images/2018/03/t2-credit-shortage@545w2x.png 1090w" sizes="(min-width: 1200px) 730px, (min-width: 992px) 610px, (min-width: 768px) 450px, (min-width: 576px) 330px, 545px"><img class="img-fluid" src="/images/2018/03/t2-credit-shortage.png" alt="t2 performance can drop by 95%! Are you prepared?" title="t2 performance can drop by 95%! Are you prepared?"></picture></p><h2 id="Why-are-t2-instances-special"><a href="#Why-are-t2-instances-special" class="headerlink" title="Why are t2 instances special?"></a>Why are t2 instances special?</h2><p>Let’s look at the <code>t2.large</code> in more detail. Your baseline performance is 0.6 vCPU (70% performance drop) while you can burst up to 2 vCPUs as long as you have credits. But the baseline can be much worse. Let’s look at the <code>t2.nano</code>, the cheapest instance type. Your baseline is 0.05 vCPU (95% performance drop) while you can burst up to 1 vCPU. The following table shows the information for all t2 instance types.</p><table class="table table-striped table-responsive"><thead><tr><th>instance type</th><th>performance drop</th><th>baseline vCPUs</th><th>maximum vCPUs</th></tr></thead><tbody><tr><td><code>t2.nano</code></td><td>95%</td><td>0.05</td><td>1</td></tr><tr><td><code>t2.micro</code></td><td>90%</td><td>0.10</td><td>1</td></tr><tr><td><code>t2.small</code></td><td>80%</td><td>0.20</td><td>1</td></tr><tr><td><code>t2.medium</code></td><td>80%</td><td>0.40</td><td>2</td></tr><tr><td><code>t2.large</code></td><td>70%</td><td>0.60</td><td>2</td></tr><tr><td><code>t2.xlarge</code></td><td>77.5%</td><td>0.90</td><td>4</td></tr><tr><td><code>t2.2xlarge</code></td><td>83.1%</td><td>1.35</td><td>8</td></tr></tbody></table><h2 id="Why-does-this-matter"><a href="#Why-does-this-matter" class="headerlink" title="Why does this matter?"></a>Why does this matter?</h2><p>Your t2 instance only consumes credits if your application requires more than the baseline performance. This means that you can only run out of credits if your instance is bursting. In other words, credits are only consumed if your application needs performance.</p><p>Now imagine what happens if the t2 instance is no longer able to burst and drops to the baseline from one second to the other. This is precisely what happens if you run out of burst credits. In other words, performance drops by up to 95% from one second to the other. This will have a significant impact on your application. <strong>Most likely, the application will not be responsive anymore.</strong></p><h2 id="How-can-you-avoid-the-performance-drop"><a href="#How-can-you-avoid-the-performance-drop" class="headerlink" title="How can you avoid the performance drop?"></a>How can you avoid the performance drop?</h2><p>First of all, your t2 instances are earning credits while not bursting. For Example, a <code>t2.large</code> earns 36 credits per hour. One CPU credit is equal to one vCPU running at 100% utilization for one minute. As long as you don’t run out of credits, performance will not drop to the baseline. But how do you know? First, each t2 EC2 instance publishes the <code>CPUCreditBalance</code> metric to CloudWatch. The metric reports the remaining CPU credits available. Second, you can define a CloudWatch Alarm that continuously monitors the <code>CPUCreditBalance</code> metric. As soon as you run out of credits, an alert is triggered and you can react. E.g., increase capacity or reschedule work.</p><h3 id="CloudWatch-Alarms-and-marbot"><a href="#CloudWatch-Alarms-and-marbot" class="headerlink" title="CloudWatch Alarms and marbot"></a>CloudWatch Alarms and marbot</h3><p>We found that emails are not a good way to handle alerts. In a team, multiple people are responsible. If you send an email to a group email address:</p><ol><li>Your team has no idea if someone already started to work on solving the issue.</li><li>You disturb the whole team for each alert.</li><li>It’s easy to ignore an email.</li><li>You have no statistics about how many alerts are generated. Too many alerts are an indication that your team is no longer able to handle them.</li><li>No help to investigate the issue is available, like links to the AWS Management Console.</li></ol><p>To solve the problem, we built marbot: a <a href="https://marbot.io/" target="_blank" rel="noopener">Slack bot supporting your DevOps team to detect and solve incidents on AWS</a>.</p><p><img class="img-fluid" src="/images/2018/01/marbot-alert.gif" alt="marbot forwards alerts to Slack" title="marbot forwards alerts to Slack"></p><p>marbot sends alerts to a single user from the Slack channel via a direct message. If the user doesn’t acknowledge the alert within 5 minutes, marbot will escalate to the next level. Escalations minimize distraction while keeping response time low. <a href="https://marbot.io/" target="_blank" rel="noopener">Try marbot for free now</a>.</p><h3 id="CloudFormation-template"><a href="#CloudFormation-template" class="headerlink" title="CloudFormation template"></a>CloudFormation template</h3><p>We developed a CloudFormation template to monitor an EC2 instance in any region (includes <code>CPUCreditBalance</code> metric monitoring). The template integrates with marbot, but you can modify it to send out emails. The template is available on <a href="https://github.com/marbot-io/monitoring-jump-start/blob/master/marbot-ec2-instance.yml" target="_blank" rel="noopener">GitHub</a> for free. We also offer a <a href="https://github.com/marbot-io/monitoring-jump-start/blob/master/marbot-auto-scaling-group.yml" target="_blank" rel="noopener">version</a> that works with a fleet of EC2 instances managed by an Auto Scaling Group.</p><p>If you have already installed marbot, you can also ask marbot to monitor your EC2 instance or <a href="https://marbot.io/blog/monitoring-jump-start-amazon-ec2.html" target="_blank" rel="noopener">read more detailed setup instructions</a>. Otherwise: <a href="https://marbot.io/" target="_blank" rel="noopener">Try marbot for free now</a>.</p><h2 id="Summary"><a href="#Summary" class="headerlink" title="Summary"></a>Summary</h2><p>t2 EC2 instances are cheap, but they increase complexity. You have to monitor burst credits to ensure that you will not suffer from a 95% performance drop. We usually advise not to use the t2 family in production systems that serve user traffic. But we like t2 instances for test environments and internal applications like Jenkins. If you want to stay with the low-cost t2 family, you can enable <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/t2-unlimited.html" target="_blank" rel="noopener">T2 Unlimited</a> which provides a way to continue to burst without credits but with an additional charge.</p></div></div></div><div class="container-fluid authorv2box"><div class="container"><div class="row"><div class="col-12 col-md-10 offset-md-1"><h2>Michael Wittig</h2><div class="row authorv2" id="author"><div class="col-12 col-lg-3"><picture class="img-fluid"><source type="image/webp" srcset="/img/michael-wittig@208w.webp 208w, /img/michael-wittig@208w2x.webp 416w, /img/michael-wittig@170w.webp 170w, /img/michael-wittig@170w2x.webp 340w, /img/michael-wittig@570w.webp 570w, /img/michael-wittig@570w2x.webp 1140w, /img/michael-wittig@510w.webp 510w, /img/michael-wittig@510w2x.webp 1020w, /img/michael-wittig@515w.webp 515w, /img/michael-wittig@515w2x.webp 1030w" sizes="(min-width: 1200px) 208px, (min-width: 992px) 170px, (min-width: 768px) 570px, (min-width: 576px) 510px, 515px"><source srcset="/img/michael-wittig@208w.jpg 208w, /img/michael-wittig@208w2x.jpg 416w, /img/michael-wittig@170w.jpg 170w, /img/michael-wittig@170w2x.jpg 340w, /img/michael-wittig@570w.jpg 570w, /img/michael-wittig@570w2x.jpg 1140w, /img/michael-wittig@510w.jpg 510w, /img/michael-wittig@510w2x.jpg 1020w, /img/michael-wittig@515w.jpg 515w, /img/michael-wittig@515w2x.jpg 1030w" sizes="(min-width: 1200px) 208px, (min-width: 992px) 170px, (min-width: 768px) 570px, (min-width: 576px) 510px, 515px"><img class="img-fluid" src="/img/michael-wittig.jpg" alt="Michael Wittig" title="Michael Wittig"></picture></div><div class="col-12 col-lg-9"><p>I’ve been building on AWS since 2012 together with my brother Andreas. We are sharing our insights into all things AWS on cloudonaut and have written the book <a href="https://bit.ly/amazon-web-services-in-action-3rd-edition" target="_blank" rel="noopener">AWS in Action</a>. Besides that, we’re currently working on <a href="https://bucketav.com/" target="_blank" rel="noopener">bucketAV</a>, <a href="https://attachmentav.com/" target="_blank" rel="noopener">attachmentAV</a>, <a href="https://hyperenv.com/" target="_blank" rel="noopener">HyperEnv</a>, and <a href="https://marbot.io/" target="_blank" rel="noopener">marbot</a>.</p>Here are the contact options for feedback and questions.<ul><li><a href="mailto:michael@widdix.de">Email</a></li><li><a href="https://www.linkedin.com/in/michael-wittig" rel="nofollow" target="_blank">LinkedIn</a></li><li><a href="https://social.cloudonaut.io/@michael" rel="nofollow" target="_blank">Mastodon</a></li></ul></div></div></div></div></div></div><div class="container"><div class="row content"><div class="col-12"><div class="row further-reading"><div class="col-12"><h2>Further reading</h2><ul><li>Article <a href="/aws-monitoring-primer/">AWS Monitoring Primer</a></li><li>Article <a href="/monitoring-a-critical-part-of-your-infrastructure-amazon-relational-database-service-rds/">Monitoring a critical part of your infrastructure: Amazon Relational Database Service (RDS)</a></li><li>Article <a href="/monitoring-a-critical-part-of-your-infrastructure-amazon-elasticache-memcached-cluster/">Monitoring a critical part of your infrastructure: Amazon ElastiCache memcached cluster</a></li><li>Article <a href="/monitoring-a-critical-part-of-your-infrastructure-amazon-elasticsearch-domain/">Monitoring a critical part of your infrastructure: Amazon Elasticsearch domain</a></li><li>Article <a href="/send-cloudwatch-alarms-to-slack-with-aws-lambda/">Send CloudWatch Alarms to Slack with AWS Lambda</a></li><li>Article <a href="/cloudwatch-is-neglected-why-is-the-control-room-empty/">CloudWatch is neglected: Why is the control room empty?</a></li><li>Tag <a href="/tag/ec2/" title="ec2">ec2</a></li><li>Tag <a href="/tag/cloudwatch/" title="cloudwatch">cloudwatch</a></li></ul></div></div></div></div></div></div></article></main><footer><div class="footer"><div class="container"><div class="row"><div class="d-none d-md-block col-md-6"><p class="headline">Deepen your knowledge,<br>stay up to date!</p><p>Subscribe to our newsletter with independent insights into all things AWS.</p></div><div class="col-12 d-block d-md-none"><p class="headline">Subscribe</p><p>Deepen your knowledge about AWS, stay up to date!</p></div><div class="col-12 col-md-5 offset-md-1"><form class="newsletter"><div class="form-group"><input type="email" class="form-control" name="email" placeholder="Email Address"></div><div class="form-group form-check"><input type="checkbox" class="form-check-input" name="gdpr" value="true"> <label class="form-check-label" for="gdpr">I want to subscribe to the newsletter with new content as well as announcements regarding products and services. I agree with the <a href="/privacy-policy/">privacy policy</a>.</label></div><button type="submit" class="btn btn-primary" disabled style="margin-bottom:25px">Subscribe</button><div class="alert alert-success d-none" role="alert"><span class="message"></span></div><div class="alert alert-danger d-none" role="alert">Sorry, something went wrong. Please try again!</div></form><div style="margin-top:30px"><i>Do you prefer <a href="https://cloudonaut.io/feed/rss.xml">RSS</a>?</i></div></div></div><div class="row"><div class="col-md-3"><p class="h3">Network</p><ul><li><a href="/">Blog</a></li><li><a target="_blank" rel="noopener" href="https://podcast.cloudonaut.io/">Podcast</a></li><li><a target="_blank" rel="noopener" href="https://x.com/cloudonaut_io">Twitter</a></li><li><a target="_blank" rel="noopener" href="https://www.youtube.com/c/cloudonaut">YouTube</a></li></ul></div><div class="col-md-3"><p class="h3">Blog</p><ul><li><a href="/tag/">Tags</a></li></ul><p class="h3">Legal</p><ul><li><a href="/imprint/">Imprint</a></li><li><a href="/privacy-policy/">Privacy Policy</a></li></ul></div><div class="col-md-5 offset-md-1"><p class="h3">Projects</p><ul><li><a target="_blank" rel="noopener" href="https://bucketav.com/?utm_source=cloudonautio&utm_medium=blog&utm_campaign=footer">Malware protection for Amazon S3</a></li><li><a target="_blank" rel="noopener" href="https://marbot.io/?utm_source=cloudonautio&utm_medium=blog&utm_campaign=footer">Chatbot for AWS Monitoring</a></li><li><a target="_blank" rel="noopener" href="https://hyperenv.com/?utm_source=cloudonautio&utm_medium=blog&utm_campaign=footer">Self-hosted GitHub runners for AWS</a></li><li><a target="_blank" rel="noopener" href="https://attachmentav.com/?utm_source=cloudonautio&utm_medium=blog&utm_campaign=footer">Antivirus protection for Jira, Confluence, Salesforce, and WordPress</a></li><li><a target="_blank" rel="noopener" href="https://github.com/widdix/aws-cf-templates">Free Templates for AWS CloudFormation</a></li><li><a target="_blank" rel="noopener" href="https://github.com/cfn-modules/docs">Rapid CloudFormation: modular, production ready, open source.</a></li><li><a target="_blank" rel="noopener" href="https://lastenradscout.de/?utm_source=cloudonautio&utm_medium=blog&utm_campaign=footer">Finde das passende Lastenrad für jeden Bedarf!</a></li></ul></div></div></div></div></footer><script src="/dist/main.js"></script></body></html>