A few of the sample AWS Lambda function codes for common use-cases with Amazon EC2, AWS Lambda & Amazon SNS using Python runtime.
EC2
-
Start/Stop EC2 instances using CloudWatch Event Trigger - start_stop_ec2_instances_with_cloudwatch_event.py
-
Describe EC2's metadata in a region - Associated subnets, Instance ID & NACL-ID for a target VPC - describe_ec2_securitygroup.py
-
Describe all AMIs for your account across all regions - describe_ami.py
Lambda
-
Check Async queue congestions and delays in processing async events - get_async_invoke_delay.py
-
Delete orphaned Event Source Mappings - clean_orphaned_event_source_mappings.py
-
Extract Lambda code from entire deployment package - extract_deployment_package_without_layers
-
Get Lambda's true async delay - get_async_invoke_delay.py
-
Get underlying Lambda's CPU hardware, /tmp storage, os-release and it's contents - get_cpu_info.py
-
Test HTTP connection for your Lambda function inside VPC - http_connection_test.py
-
List code storage for all Lambda functions in a region - lambda_code_size_all_functions.py
-
List code storage for a function including all attached layers - lambda_code_size_including_layers.py
-
List all ENIs created by Lambda functions(s) - lambda_created_enis.py
-
Get Lambda dashboard metrics across all regions - lambda_dashboard.py
-
List Lambda function version(s) using an ENI - lambda_hyperplane_eni_checker.py
-
Create "Memory Used" Metrics for your Lambda functions - lambda_memory_plot.py
-
List all Lambda layers and it's info - list_layer_info.py
-
Get all functions using reserved or provisional concurrency in a region - reserved_concurrency.py
-
Lambda X-Ray examples - x_ray_sample.py
SNS
-
List all subscriptions tied to a topic in an account - list_account_topic_subscriptions.py
-
Programmatically create subscription filters for SNS - set_subscription_filters.py
-
Programmatically set SenderID while sending SMS text messages - sender_id.py
-
Programmatically set max price while sending SMS text messages - set_max_price.py
-
Get SMS month to date spend in USD - sms_month_to_date_spent_usd.py
-
SMS Dashboard - sms_dashboard.py
-
Send SMS with custom originating number - sms_with_custom_originating_number
Additional Information
- Refer to the individual .md files for additional information.
Built with
Missing Info / Bugs
-
😰 Something broken? Open an issue with a few sample inputs where it breaks. Screenshots help! -
More additional services/use-cases, open a new issue
Contributing
This is an iterative repository, I'll keep adding more sample codes for more use-cases as I come across them. I have tested all scripts using Python3.6
runtime inside Lambda under us-west-2
region, and most of this should work for all Python3
runtimes (Python 2.7 EOL:
- Fork repo
- Set runtime as
Python3
(Python3.6
preferred) - Send your awesome
🙌 Pull Request with code/.md changes- Follow Python's PEP8 coding standards.
- Commit repo using the Seven Rules
- Your PR gets merged
✅ and a shoutout📢
Looking for CLI samples?
Repo structure:
$ tree
.
|-- CODE_OF_CONDUCT.md
|-- LICENSE
|-- README.md
|-- ec2-samples
| |-- describe_ami
| | |-- README.md
| | `-- describe_ami.py
| |-- describe_ec2_securitygroup
| | |-- README.md
| | `-- describe_ec2_securitygroup.py
| `-- start_stop_ec2_instances_with_cloudwatch_event
| |-- README.md
| `-- start_stop_ec2_instances_with_cloudwatch_event.py
|-- lambda-layer
| |-- README.md
| |-- boto3.zip
| |-- pandasnumpy.zip
| |-- prettyTable.zip
| |-- psycopg2.zip
| |-- requests.zip
| `-- x-ray.zip
|-- lambda-samples
| |-- async_config_dashboard
| | |-- README.md
| | `-- async_config_dashboard.py
| |-- clean_orphaned_event_source_mappings
| | |-- README.md
| | `-- clean_orphaned_event_source_mappings.py
| |-- extract_deployment_package_without_layers
| | |-- README.md
| | `-- extract_deployment_package_without_layers.py
| |-- get_async_invoke_delay
| | |-- README.md
| | `-- get_async_invoke_delay.py
| |-- get_cpu_info
| | |-- README.md
| | `-- get_cpu_info.py
| |-- http_connection_test
| | |-- README.md
| | `-- http_connection_test.py
| |-- lambda_code_size_all_functions
| | |-- README.md
| | `-- lambda_code_size_all_functions.py
| |-- lambda_code_size_including_layers
| | |-- README.md
| | `-- lambda_code_size_including_layers.py
| |-- lambda_created_enis
| | |-- README.md
| | `-- lambda_created_enis.py
| |-- lambda_dashboard
| | |-- README.md
| | `-- lambda_dashboard.py
| |-- lambda_hyperplane_eni_checker
| | |-- README.md
| | `-- lambda_hyperplane_eni_checker.py
| |-- lambda_memory_plot
| | |-- README.md
| | `-- lambda_memory_plot.py
| |-- list_layer_info
| | |-- README.md
| | `-- list_layer_info.py
| |-- reserved_concurrency
| | |-- README.md
| | `-- reserved_concurrency.py
| `-- x_ray_sample
| |-- README.md
| `-- x_ray_sample.py
|-- sns-samples
| |-- list_account_topic_subscriptions
| | |-- README.md
| | `-- list_account_topic_subscriptions.py
| |-- sender_id
| | |-- README.md
| | `-- sender_id.py
| |-- set_max_price_sms
| | |-- README.md
| | `-- set_max_price_sms.py
| |-- set_subscription_filters
| | |-- README.md
| | `-- set_subscription_filters.py
| |-- sms_dashboard
| | |-- README.md
| | `-- sms_dashboard.py
| |-- sms_month_to_date_spent_usd
| | |-- README.md
| | `-- sms_month_to_date_spent_usd.py
| `-- sms_with_custom_originating_number
| |-- README.md
| `-- sms_with_custom_originating_number.py
`-- tmp
`-- images
|-- AWSLambdaCloudWatchAsyncDelay.png
|-- AWSLambdaCloudWatchMetric.png
`-- AWSLambdaX-Ray.PNG