Skip to content

Instantly share code, notes, and snippets.

@troyready
Created August 5, 2020 23:08
Show Gist options
  • Save troyready/9b262df23ad2c79b5bffa2ceed8768d6 to your computer and use it in GitHub Desktop.
Save troyready/9b262df23ad2c79b5bffa2ceed8768d6 to your computer and use it in GitHub Desktop.
Creating Test AWS Lambda via awscli
#!/bin/bash
mkdir lambdatest && cd lambdatest
pip3 install elasticsearch requests_aws4auth -t ./
touch __init__.py
touch packages/__init__.py
cat << EOF > lambdatest.py
from packages.elasticsearch import Elasticsearch, RequestsHttpConnection
from packages.requests_aws4auth import AWS4Auth
def handler(event, context):
print('invoked')
return 'invoked'
EOF
zip -r package.zip . -x "*.git*"
aws iam create-role \
--role-name lambdatest \
--assume-role-policy-document '{"Version": "2012-10-17", "Statement": [{"Effect": "Allow", "Principal": {"Service": "lambda.amazonaws.com"}, "Action": "sts:AssumeRole"}]}'
aws iam attach-role-policy \
--role-name lambdatest \
--policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
aws lambda create-function \
--region us-west-2 \
--function-name lambdatest \
--runtime python3.7 \
--zip-file fileb://package.zip \
--handler lambdatest.handler \
--role arn:aws:iam::$(aws sts get-caller-identity --query 'Account' --output text):role/lambdatest
aws lambda invoke \
--region us-west-2 \
--function-name lambdatest \
--payload '{ "foo": "bar" }' \
/dev/stdout
aws lambda delete-function --region us-west-2 --function-name lambdatest
aws iam detach-role-policy \
--role-name lambdatest \
--policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
aws iam delete-role --role-name lambdatest
aws logs delete-log-group \
--region us-west-2 \
--log-group-name '/aws/lambda/lambdatest'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment