Skip to content

Instantly share code, notes, and snippets.

@kevinhooke
kevinhooke / gist:275756d1e6c69f8e47af45c31184ab84
Created February 20, 2021 00:03
Local DynamoDB in Docker with DynamoDB Workbench (tables not visible)
If you start the local DynamoDB Docker instance without the -shareDb option, tables are not visible either to
the 'aws dynamodb' cli or DynamodDB Workbench:
docker run -d -p 8000:8000 amazon/dynamodb-local
If you start with the -shareDb option needed to see the tables, the container ends immediately.
Per answer on this question https://stackoverflow.com/questions/63835658/can-not-find-table-using-nosql-workbench-for-dynamodb-when-connecting-to-dynamod
start with -shareDb and all other default options:
docker run -d -p 8000:8000 amazon/dynamodb-local -jar DynamoDBLocal.jar -sharedDb -dbPath .
@kevinhooke
kevinhooke / gist:d2f71ddfe938c9fa8a95a918d8f5ba4e
Created February 17, 2023 19:56
AWS CloudFormation template for an IAM role
Resources:
roleResourceName:
Type: AWS::IAM::Role
Properties:
RoleName: role-name
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
@kevinhooke
kevinhooke / gist:cffa89efd51b074f8b9162c0a7c8ff4c
Created November 17, 2022 22:11
AWS SDK Lambda invokAsync
If you call lambda.invokeAsync() from one lambda calling another, if the calling lambda completes/exits before the second
lambda has been successfully invoked then depending on the timing it's possible the second Lambda will not invoke sucessfully.
The SDK docs show calling invokeAsync with a callback:
const params = {
"FunctionName": "fucntion-name-to-invoke",
"InvokeArgs": JSON.stringify(payload-to-pass-to-lambda)
};
lambda.invokeAsync(params, function (error, result) {
@kevinhooke
kevinhooke / gist:7108aba972b21138b3db3f9a896f1228
Created February 23, 2021 23:22
AWS CloudFormation templates
Resources
- this section is the only required section in template
- you can define 1 to max 200 resources
AWSTemplateFormatVersion is optional
Parameters
- optional
- up to 60 per template
- Default - specify a default value if not passed
@kevinhooke
kevinhooke / gist:9c84601f7e42a7d9666d35b76ac3e1f0
Created May 17, 2022 18:06
CloudWatch Insights query examples
fields @timestamp, @message
| filter @message like /string pattern to match/
| sort @timestamp asc
fields @timestamp
| filter @message like /string pattern to match/
#parse line, match a pattern, capture pattern match in this case * as named value userId
| parse "\"userId\": \"*\"" as userId
#only include where this has a value
@kevinhooke
kevinhooke / gist:f2b59f5e3240f99852c806d3451728f7
Created March 1, 2022 19:00
aws cli list lambdas by name using query
#list-functions is paginated by default so need to set page-size, no-paginate or simiilar to get complete list
# see https://docs.aws.amazon.com/cli/latest/reference/lambda/list-functions.html
# https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-pagination.html
aws lambda list-functions --region us-west-2
--query 'Functions[?starts_with(FunctionName, `name-pattern-here`) == `true`].FunctionName'
--page-size 300 >> output.txt
@kevinhooke
kevinhooke / gist:0a566b490bf29fe57aca9e51d069efeb
Created August 30, 2017 17:35
Java Annotations on multiple target types
By default, @Target on one type, eg for properties:
@Target(ElementType.FIELD)
public @interface ExamplePropertyAnnotation
Specifying multiple targets as a List of target types:
@Target( { ElementType.FIELD, ElementType.PARAMETER } )
public @interface ExamplePropertyAndParameterAnnotation
@kevinhooke
kevinhooke / gist:fe4bbcdfdb3080c56bd79637bb37f09f
Created January 20, 2022 00:57
AWS API Gateway 403 "MIssing authentication token"
Calling an api that doesn't exist in your API Gateway will return a 403 with the rather misleading response:
{
"message": "Missing Authentication Token"
}
@kevinhooke
kevinhooke / gist:e4c80cdada0ca1cc866ce5948fe8de78
Created October 7, 2021 22:10
MacOS zsh prompt customization for displaying git branch
#zsh git prompt customizations
parse_git_branch() {
git branch 2> /dev/null | sed -n -e 's/^\* \(.*\)/[\1]/p'
}
COLOR_DEF=$'\e[0m'
COLOR_USR=$'\e[38;5;243m'
COLOR_DIR=$'\e[38;5;197m'
COLOR_GIT=$'\e[38;5;39m'
NEWLINE=$'\n'
setopt PROMPT_SUBST
@kevinhooke
kevinhooke / gist:cb9244221334e30a0760f59c6b1dc099
Created October 6, 2021 18:18
AWS CloudFormation example for ECS Service
{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "Example ECS Service",
"Parameters": {
"VPCSecurityGroupId": {
"Type": "String"
},
"VPCSubnetId": {
"Type": "String"
}