{"id":"1363f252-4f0a-4dce-b2d3-02fcb2135aa5","shortId":"PAZeS4","kind":"skill","title":"lambda","tagline":"AWS Lambda serverless functions for event-driven compute. Use when creating functions, configuring triggers, debugging invocations, optimizing cold starts, setting up event source mappings, or managing layers.","description":"# AWS Lambda\n\nAWS Lambda runs code without provisioning servers. You pay only for compute time consumed. Lambda automatically scales from a few requests per day to thousands per second.\n\n## Table of Contents\n\n- [Core Concepts](#core-concepts)\n- [Common Patterns](#common-patterns)\n- [CLI Reference](#cli-reference)\n- [Best Practices](#best-practices)\n- [Troubleshooting](#troubleshooting)\n- [References](#references)\n\n## Core Concepts\n\n### Function\n\nYour code packaged with configuration. Includes runtime, handler, memory, timeout, and IAM role.\n\n### Invocation Types\n\n| Type | Description | Use Case |\n|------|-------------|----------|\n| **Synchronous** | Caller waits for response | API Gateway, direct invoke |\n| **Asynchronous** | Fire and forget | S3, SNS, EventBridge |\n| **Poll-based** | Lambda polls source | SQS, Kinesis, DynamoDB Streams |\n\n### Execution Environment\n\nLambda creates execution environments to run your function. Components:\n- **Cold start**: New environment initialization\n- **Warm start**: Reusing existing environment\n- **Handler**: Entry point function\n- **Context**: Runtime information\n\n### Layers\n\nReusable packages of libraries, dependencies, or custom runtimes (up to 5 per function).\n\n## Common Patterns\n\n### Create a Python Function\n\n**AWS CLI:**\n\n```bash\n# Create deployment package\nzip function.zip lambda_function.py\n\n# Create function\naws lambda create-function \\\n  --function-name MyFunction \\\n  --runtime python3.12 \\\n  --role arn:aws:iam::123456789012:role/lambda-role \\\n  --handler lambda_function.handler \\\n  --zip-file fileb://function.zip \\\n  --timeout 30 \\\n  --memory-size 256\n\n# Update function code\naws lambda update-function-code \\\n  --function-name MyFunction \\\n  --zip-file fileb://function.zip\n```\n\n**boto3:**\n\n```python\nimport boto3\nimport zipfile\nimport io\n\nlambda_client = boto3.client('lambda')\n\n# Create zip in memory\nzip_buffer = io.BytesIO()\nwith zipfile.ZipFile(zip_buffer, 'w') as zf:\n    zf.writestr('lambda_function.py', '''\ndef handler(event, context):\n    return {\"statusCode\": 200, \"body\": \"Hello\"}\n''')\nzip_buffer.seek(0)\n\n# Create function\nlambda_client.create_function(\n    FunctionName='MyFunction',\n    Runtime='python3.12',\n    Role='arn:aws:iam::123456789012:role/lambda-role',\n    Handler='lambda_function.handler',\n    Code={'ZipFile': zip_buffer.read()},\n    Timeout=30,\n    MemorySize=256\n)\n```\n\n### Add S3 Trigger\n\n```bash\n# Add permission for S3 to invoke Lambda\naws lambda add-permission \\\n  --function-name MyFunction \\\n  --statement-id s3-trigger \\\n  --action lambda:InvokeFunction \\\n  --principal s3.amazonaws.com \\\n  --source-arn arn:aws:s3:::my-bucket \\\n  --source-account 123456789012\n\n# Configure S3 notification (see S3 skill)\n```\n\n### Add SQS Event Source\n\n```bash\naws lambda create-event-source-mapping \\\n  --function-name MyFunction \\\n  --event-source-arn arn:aws:sqs:us-east-1:123456789012:my-queue \\\n  --batch-size 10 \\\n  --maximum-batching-window-in-seconds 5\n```\n\n### Environment Variables\n\n```bash\naws lambda update-function-configuration \\\n  --function-name MyFunction \\\n  --environment \"Variables={DB_HOST=mydb.cluster-xyz.us-east-1.rds.amazonaws.com,LOG_LEVEL=INFO}\"\n```\n\n### Create and Attach Layer\n\n```bash\n# Create layer\nzip -r layer.zip python/\n\naws lambda publish-layer-version \\\n  --layer-name my-dependencies \\\n  --compatible-runtimes python3.12 \\\n  --zip-file fileb://layer.zip\n\n# Attach to function\naws lambda update-function-configuration \\\n  --function-name MyFunction \\\n  --layers arn:aws:lambda:us-east-1:123456789012:layer:my-dependencies:1\n```\n\n### Invoke Function\n\n```bash\n# Synchronous invoke\naws lambda invoke \\\n  --function-name MyFunction \\\n  --payload '{\"key\": \"value\"}' \\\n  response.json\n\n# Asynchronous invoke\naws lambda invoke \\\n  --function-name MyFunction \\\n  --invocation-type Event \\\n  --payload '{\"key\": \"value\"}' \\\n  response.json\n```\n\n## CLI Reference\n\n### Function Management\n\n| Command | Description |\n|---------|-------------|\n| `aws lambda create-function` | Create new function |\n| `aws lambda update-function-code` | Update function code |\n| `aws lambda update-function-configuration` | Update settings |\n| `aws lambda delete-function` | Delete function |\n| `aws lambda list-functions` | List all functions |\n| `aws lambda get-function` | Get function details |\n\n### Invocation\n\n| Command | Description |\n|---------|-------------|\n| `aws lambda invoke` | Invoke function |\n| `aws lambda invoke-async` | Async invoke (deprecated) |\n\n### Event Sources\n\n| Command | Description |\n|---------|-------------|\n| `aws lambda create-event-source-mapping` | Add event source |\n| `aws lambda list-event-source-mappings` | List mappings |\n| `aws lambda update-event-source-mapping` | Update mapping |\n| `aws lambda delete-event-source-mapping` | Remove mapping |\n\n### Permissions\n\n| Command | Description |\n|---------|-------------|\n| `aws lambda add-permission` | Add resource-based policy |\n| `aws lambda remove-permission` | Remove permission |\n| `aws lambda get-policy` | View resource policy |\n\n## Best Practices\n\n### Performance\n\n- **Right-size memory**: More memory = more CPU = faster execution\n- **Minimize cold starts**: Keep functions warm, use Provisioned Concurrency\n- **Optimize package size**: Smaller packages deploy faster\n- **Use layers** for shared dependencies\n- **Initialize outside handler**: Reuse connections across invocations\n\n```python\n# GOOD: Initialize outside handler\nimport boto3\ndynamodb = boto3.resource('dynamodb')\ntable = dynamodb.Table('MyTable')\n\ndef handler(event, context):\n    # Reuses existing connection\n    return table.get_item(Key={'id': event['id']})\n```\n\n### Security\n\n- **Least privilege IAM roles** — only grant needed permissions\n- **Use Secrets Manager** for sensitive data\n- **Enable VPC** only if needed (adds latency)\n- **Encrypt environment variables** with KMS\n\n### Cost Optimization\n\n- **Set appropriate timeout** — don't use max 15 minutes unnecessarily\n- **Use ARM architecture** (Graviton2) for 34% better price/performance\n- **Batch process** where possible\n- **Use Reserved Concurrency** to limit costs\n\n### Reliability\n\n- **Configure DLQ** for async invocations\n- **Handle retries** — async events retry twice\n- **Make handlers idempotent**\n- **Use structured logging**\n\n## Troubleshooting\n\n### Timeout Errors\n\n**Symptom:** `Task timed out after X seconds`\n\n**Causes:**\n- Function takes longer than timeout\n- Network call to unreachable resource\n- VPC configuration issues\n\n**Debug:**\n\n```bash\n# Check function configuration\naws lambda get-function-configuration \\\n  --function-name MyFunction \\\n  --query \"Timeout\"\n\n# Increase timeout\naws lambda update-function-configuration \\\n  --function-name MyFunction \\\n  --timeout 60\n```\n\n### Out of Memory\n\n**Symptom:** Function crashes with memory error\n\n**Fix:**\n\n```bash\naws lambda update-function-configuration \\\n  --function-name MyFunction \\\n  --memory-size 512\n```\n\n### Cold Start Latency\n\n**Causes:**\n- Large deployment package\n- VPC configuration\n- Many dependencies to load\n\n**Solutions:**\n- Use Provisioned Concurrency\n- Reduce package size\n- Use layers for dependencies\n- Consider Graviton2 (ARM)\n\n```bash\n# Enable Provisioned Concurrency\naws lambda put-provisioned-concurrency-config \\\n  --function-name MyFunction \\\n  --qualifier LIVE \\\n  --provisioned-concurrent-executions 5\n```\n\n### Permission Denied\n\n**Symptom:** `AccessDeniedException`\n\n**Debug:**\n\n```bash\n# Check execution role\naws lambda get-function-configuration \\\n  --function-name MyFunction \\\n  --query \"Role\"\n\n# Check role policies\naws iam list-attached-role-policies \\\n  --role-name lambda-role\n```\n\n### VPC Connectivity Issues\n\n**Symptom:** Cannot reach internet or AWS services\n\n**Causes:**\n- No NAT Gateway for internet access\n- Missing VPC endpoint for AWS services\n- Security group blocking outbound\n\n**Solutions:**\n- Add NAT Gateway for internet\n- Add VPC endpoints for AWS services\n- Check security group rules\n\n## References\n\n- [Lambda Developer Guide](https://docs.aws.amazon.com/lambda/latest/dg/)\n- [Lambda API Reference](https://docs.aws.amazon.com/lambda/latest/api/)\n- [Lambda CLI Reference](https://docs.aws.amazon.com/cli/latest/reference/lambda/)\n- [boto3 Lambda](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/lambda.html)","tags":["lambda","aws","agent","skills","itsmostafa","agent-skills","agentic-ai","claude-code","claude-skills","codex","coding-agents"],"capabilities":["skill","source-itsmostafa","skill-lambda","topic-agent-skills","topic-agentic-ai","topic-aws","topic-claude-code","topic-claude-skills","topic-codex","topic-coding-agents"],"categories":["aws-agent-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/itsmostafa/aws-agent-skills/lambda","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add itsmostafa/aws-agent-skills","source_repo":"https://github.com/itsmostafa/aws-agent-skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 1085 github stars · SKILL.md body (8,280 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-03T00:52:58.822Z","embedding":null,"createdAt":"2026-04-18T21:55:43.965Z","updatedAt":"2026-05-03T00:52:58.822Z","lastSeenAt":"2026-05-03T00:52:58.822Z","tsv":"'/cli/latest/reference/lambda/)':1014 '/lambda/latest/api/)':1008 '/lambda/latest/dg/)':1002 '/v1/documentation/api/latest/reference/services/lambda.html)':1019 '0':277 '1':377,465,471 '10':385 '123456789012':208,290,344,378,466 '15':748 '200':273 '256':221,300 '30':217,298 '34':756 '5':173,392,915 '512':866 '60':841 'access':969 'accessdeniedexcept':919 'account':343 'across':683 'action':327 'add':301,305,315,351,586,622,624,732,981,986 'add-permiss':314,621 'api':113,1004 'appropri':742 'architectur':753 'arm':752,893 'arn':205,287,334,335,370,371,459 'async':571,572,773,777 'asynchron':117,488 'attach':416,445,944 'automat':47 'aw':2,30,32,182,193,206,225,288,312,336,356,372,396,425,448,460,477,490,511,519,528,536,543,551,562,567,579,589,598,607,619,629,636,816,830,853,898,925,940,961,974,990 'base':126,627 'bash':184,304,355,395,418,474,812,852,894,921 'batch':383,388,759 'batch-siz':382 'best':77,80,644 'best-practic':79 'better':757 'block':978 'bodi':274 'boto3':239,242,691,1015 'boto3.amazonaws.com':1018 'boto3.amazonaws.com/v1/documentation/api/latest/reference/services/lambda.html)':1017 'boto3.client':249 'boto3.resource':693 'bucket':340 'buffer':256,261 'call':804 'caller':109 'cannot':957 'case':107 'caus':797,870,963 'check':813,922,937,992 'cli':72,75,183,505,1010 'cli-refer':74 'client':248 'code':35,90,224,230,294,524,527 'cold':20,145,658,867 'command':509,560,577,617 'common':67,70,176 'common-pattern':69 'compat':438 'compatible-runtim':437 'compon':144 'comput':10,43 'concept':63,66,87 'concurr':665,765,883,897,903,913 'config':904 'configur':15,93,345,401,453,533,770,809,815,821,835,858,875,930 'connect':682,704,954 'consid':891 'consum':45 'content':61 'context':159,270,701 'core':62,65,86 'core-concept':64 'cost':739,768 'cpu':654 'crash':847 'creat':13,137,178,185,191,196,251,278,359,414,419,514,516,582 'create-event-source-map':358,581 'create-funct':195,513 'custom':169 'data':726 'day':54 'db':408 'debug':17,811,920 'def':267,698 'delet':539,541,610 'delete-event-source-map':609 'delete-funct':538 'deni':917 'depend':167,436,470,677,877,890 'deploy':186,671,872 'deprec':574 'descript':105,510,561,578,618 'detail':558 'develop':998 'direct':115 'dlq':771 'docs.aws.amazon.com':1001,1007,1013 'docs.aws.amazon.com/cli/latest/reference/lambda/)':1012 'docs.aws.amazon.com/lambda/latest/api/)':1006 'docs.aws.amazon.com/lambda/latest/dg/)':1000 'driven':9 'dynamodb':132,692,694 'dynamodb.table':696 'east':376,464 'enabl':727,895 'encrypt':734 'endpoint':972,988 'entri':156 'environ':135,139,148,154,393,406,735 'error':789,850 'event':8,24,269,353,360,368,500,575,583,587,593,602,611,700,710,778 'event-driven':7 'event-source-arn':367 'eventbridg':123 'execut':134,138,656,914,923 'exist':153,703 'faster':655,672 'file':214,237,443 'fire':118 'fix':851 'forget':120 'function':5,14,88,143,158,175,181,192,197,199,223,229,232,279,281,318,364,400,403,447,452,455,473,481,494,507,515,518,523,526,532,540,542,547,550,555,557,566,661,798,814,820,823,834,837,846,857,860,906,929,932 'function-nam':198,231,317,363,402,454,480,493,822,836,859,905,931 'function.zip':189,215,238 'functionnam':282 'gateway':114,966,983 'get':554,556,639,819,928 'get-funct':553 'get-function-configur':818,927 'get-polici':638 'good':686 'grant':718 'graviton2':754,892 'group':977,994 'guid':999 'handl':775 'handler':96,155,210,268,292,680,689,699,782 'hello':275 'host':409 'iam':100,207,289,715,941 'id':323,709,711 'idempot':783 'import':241,243,245,690 'includ':94 'increas':828 'info':413 'inform':161 'initi':149,678,687 'internet':959,968,985 'invoc':18,102,498,559,684,774 'invocation-typ':497 'invok':116,310,472,476,479,489,492,564,565,570,573 'invoke-async':569 'invokefunct':329 'io':246 'io.bytesio':257 'issu':810,955 'item':707 'keep':660 'key':485,502,708 'kinesi':131 'kms':738 'lambda':1,3,31,33,46,127,136,194,226,247,250,311,313,328,357,397,426,449,461,478,491,512,520,529,537,544,552,563,568,580,590,599,608,620,630,637,817,831,854,899,926,951,997,1003,1009,1016 'lambda-rol':950 'lambda_client.create':280 'lambda_function.handler':211,293 'lambda_function.py':190,266 'larg':871 'latenc':733,869 'layer':29,162,417,420,429,432,458,467,674,888 'layer-nam':431 'layer.zip':423,444 'least':713 'level':412 'librari':166 'limit':767 'list':546,548,592,596,943 'list-attached-role-polici':942 'list-event-source-map':591 'list-funct':545 'live':910 'load':879 'log':411,786 'longer':800 'make':781 'manag':28,508,723 'mani':876 'map':26,362,585,595,597,604,606,613,615 'max':747 'maximum':387 'maximum-batching-window-in-second':386 'memori':97,219,254,650,652,844,849,864 'memory-s':218,863 'memorys':299 'minim':657 'minut':749 'miss':970 'my-bucket':338 'my-depend':434,468 'my-queu':379 'mydb.cluster-xyz.us-east-1.rds.amazonaws.com':410 'myfunct':201,234,283,320,366,405,457,483,496,825,839,862,908,934 'mytabl':697 'name':200,233,319,365,404,433,456,482,495,824,838,861,907,933,949 'nat':965,982 'need':719,731 'network':803 'new':147,517 'notif':347 'optim':19,666,740 'outbound':979 'outsid':679,688 'packag':91,164,187,667,670,873,885 'pattern':68,71,177 'pay':40 'payload':484,501 'per':53,57,174 'perform':646 'permiss':306,316,616,623,633,635,720,916 'point':157 'polici':628,640,643,939,946 'poll':125,128 'poll-bas':124 'possibl':762 'practic':78,81,645 'price/performance':758 'princip':330 'privileg':714 'process':760 'provis':37,664,882,896,902,912 'provisioned-concurrent-execut':911 'publish':428 'publish-layer-vers':427 'put':901 'put-provisioned-concurrency-config':900 'python':180,240,424,685 'python3.12':203,285,440 'qualifi':909 'queri':826,935 'queue':381 'r':422 'reach':958 'reduc':884 'refer':73,76,84,85,506,996,1005,1011 'reliabl':769 'remov':614,632,634 'remove-permiss':631 'request':52 'reserv':764 'resourc':626,642,807 'resource-bas':625 'respons':112 'response.json':487,504 'retri':776,779 'return':271,705 'reus':152,681,702 'reusabl':163 'right':648 'right-siz':647 'role':101,204,286,716,924,936,938,945,948,952 'role-nam':947 'role/lambda-role':209,291 'rule':995 'run':34,141 'runtim':95,160,170,202,284,439 's3':121,302,308,325,337,346,349 's3-trigger':324 's3.amazonaws.com':331 'scale':48 'second':58,391,796 'secret':722 'secur':712,976,993 'see':348 'sensit':725 'server':38 'serverless':4 'servic':962,975,991 'set':22,535,741 'share':676 'size':220,384,649,668,865,886 'skill':350 'skill-lambda' 'smaller':669 'sns':122 'solut':880,980 'sourc':25,129,333,342,354,361,369,576,584,588,594,603,612 'source-account':341 'source-arn':332 'source-itsmostafa' 'sqs':130,352,373 'start':21,146,151,659,868 'statement':322 'statement-id':321 'statuscod':272 'stream':133 'structur':785 'symptom':790,845,918,956 'synchron':108,475 'tabl':59,695 'table.get':706 'take':799 'task':791 'thousand':56 'time':44,792 'timeout':98,216,297,743,788,802,827,829,840 'topic-agent-skills' 'topic-agentic-ai' 'topic-aws' 'topic-claude-code' 'topic-claude-skills' 'topic-codex' 'topic-coding-agents' 'trigger':16,303,326 'troubleshoot':82,83,787 'twice':780 'type':103,104,499 'unnecessarili':750 'unreach':806 'updat':222,228,399,451,522,525,531,534,601,605,833,856 'update-event-source-map':600 'update-function-cod':227,521 'update-function-configur':398,450,530,832,855 'us':375,463 'us-east':374,462 'use':11,106,663,673,721,746,751,763,784,881,887 'valu':486,503 'variabl':394,407,736 'version':430 'view':641 'vpc':728,808,874,953,971,987 'w':262 'wait':110 'warm':150,662 'window':389 'without':36 'x':795 'zf':264 'zf.writestr':265 'zip':188,213,236,252,255,260,421,442 'zip-fil':212,235,441 'zip_buffer.read':296 'zip_buffer.seek':276 'zipfil':244,295 'zipfile.zipfile':259","prices":[{"id":"6ae87d8f-afcf-49e5-8e79-38259a0e410e","listingId":"1363f252-4f0a-4dce-b2d3-02fcb2135aa5","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"itsmostafa","category":"aws-agent-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T21:55:43.965Z"}],"sources":[{"listingId":"1363f252-4f0a-4dce-b2d3-02fcb2135aa5","source":"github","sourceId":"itsmostafa/aws-agent-skills/lambda","sourceUrl":"https://github.com/itsmostafa/aws-agent-skills/tree/main/skills/lambda","isPrimary":false,"firstSeenAt":"2026-04-18T21:55:43.965Z","lastSeenAt":"2026-05-03T00:52:58.822Z"}],"details":{"listingId":"1363f252-4f0a-4dce-b2d3-02fcb2135aa5","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"itsmostafa","slug":"lambda","github":{"repo":"itsmostafa/aws-agent-skills","stars":1085,"topics":["agent-skills","agentic-ai","aws","claude-code","claude-skills","codex","coding-agents"],"license":"mit","html_url":"https://github.com/itsmostafa/aws-agent-skills","pushed_at":"2026-04-27T09:45:24Z","description":"AWS Skills for Agents","skill_md_sha":"0faa01f8cb62c98dcfedd71066f430e0ce96ac65","skill_md_path":"skills/lambda/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/itsmostafa/aws-agent-skills/tree/main/skills/lambda"},"layout":"multi","source":"github","category":"aws-agent-skills","frontmatter":{"name":"lambda","description":"AWS Lambda serverless functions for event-driven compute. Use when creating functions, configuring triggers, debugging invocations, optimizing cold starts, setting up event source mappings, or managing layers."},"skills_sh_url":"https://skills.sh/itsmostafa/aws-agent-skills/lambda"},"updatedAt":"2026-05-03T00:52:58.822Z"}}