As I hear news stories about COVID-19 trends, I like to look at data to form my own opinion if the narratives are in line with the data. I often want to compare current numbers to the high-water marks for bellweather countries and states. For international COVID data visualizations, my favorite site is Financial Times’ Coronavirus Chart.
I like to see the metrics per 1M people so I can compare countries, regardless of their size.
You can pass a commit hash to checkout to quickly see a previous version of code. I like to commit often as I get new chunks of partial code working. If I advance to the point of breaking everything, it’s an easy way to see what used to work.
git checkout <commit hash>
I created a Python script to create small multiples of key COVID data from The COVID Tracking Project. It allows me to scan the state data to get a comprehensive view of key metrics.
I published the charts on my Covid Small Multiples page.
I was recently struggling with getting a CloudWatch alarm on a log filter metric to work. I was refactoring the creation from a CloudFormation template into just Lambda Python code. I was able to get both the filter metric (looking for errors and exceptions in logs) and alarm created.
But, when I tested the alarm, it never went into an alarm state, even when then metric filter showed active data. It was driving me crazy.
I always struggle trying to convert GMT time to EST or EDT especially in 24 hour format. It’s even harder when I’m staring at a log file trying to find the root cause of an issue.
I wrote this bash alias to output the last 24 hours of time in both local and GMT. I find I’m using it all of the time now. Since it’s an alias, I can easily run it from a Terminal window or within VSCode.
Here is a Cloudformation template snippet to create a CloudTrail that is used to also record data events for Lambda invocations and S3 operations in addition to the typical management events from CloudTrail.
CloudTrail: Type: AWS::CloudTrail::Trail DependsOn: - SNSTopicPolicy - S3BucketPolicy Properties: S3BucketName: Ref: S3Bucket SnsTopicName: Fn::GetAtt: - SNSTopic - TopicName IsLogging: true EnableLogFileValidation: true IncludeGlobalServiceEvents: true IsMultiRegionTrail: true EventSelectors: - DataResources: - Type: AWS::Lambda::Function Values: - arn:aws:lambda - DataResources: - Type: AWS::S3::Object Values: - "arn:aws:s3:::"
I recently tried to schedule an AWS Lambda defined through a SAM template to run every 10 minutes. I used some online cron expression builders but the syntax would not work with Cloudwatch.
Somehow, I missed this reference in the Schedule Expressions for Rules. The online expression builder puts * for both day of the month and day of the week.
You cannot use * in both the Day-of-month and Day-of-week fields.
I attended the 2019 DevOpsDays Raleigh and really enjoyed it. Here are my take-aways and highlights from my favorite talks. The live-stream video of talks are on the DevOpsDays Raleigh YouTube channel and the individual talk videos should be up by mid-November.
1. General Thoughts Don’t forget culture during your transformation Don’t focus on finding a single root cause for an incident. There’s rarely a single event.
I recently created aws-account-summary to list out basic information on the AWS services in use by an account. It comes in handy when trying to confirm current or newly created infrastructure. I went with quick-and-dirty approach of just finding text in AWS CLI output. It’s suprisingly useful for such little code.
Sample Output Sun 06/02/2019 8:47:59.33 * * * API Gateway "name": "TestAPI", * * * Cloudfront "DomainName": "jekyll-site-1.s3.amazonaws.com", "DomainName": "d1xau5ri19gn0n.
In playing with getting git’s credential helper to work on Windows, I accidentally added multiple helpers to my local config file. It took me a while to figure out where it was stored and how to reset it. I used this command when in the local repo directory.
git config --unset-all credential.helper This Stack Overflow post got me close but was based on the multiple values coming from different versions of the config file.