{"id":"448c6648-ea5a-4bbd-b61d-487bf5e3f9dd","shortId":"GzsLQn","kind":"skill","title":"s3","tagline":"AWS S3 object storage for bucket management, object operations, and access control. Use when creating buckets, uploading files, configuring lifecycle policies, setting up static websites, managing permissions, or implementing cross-region replication.","description":"# AWS S3\n\nAmazon Simple Storage Service (S3) provides scalable object storage with industry-leading durability (99.999999999%). S3 is fundamental to AWS—used for data lakes, backups, static websites, and as storage for many other AWS services.\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### Buckets\n\nContainers for objects. Bucket names are globally unique across all AWS accounts.\n\n### Objects\n\nFiles stored in S3, consisting of data, metadata, and a unique key (path). Maximum size: 5 TB.\n\n### Storage Classes\n\n| Class | Use Case | Durability | Availability |\n|-------|----------|------------|--------------|\n| Standard | Frequently accessed | 99.999999999% | 99.99% |\n| Intelligent-Tiering | Unknown access patterns | 99.999999999% | 99.9% |\n| Standard-IA | Infrequent access | 99.999999999% | 99.9% |\n| Glacier Instant | Archive with instant retrieval | 99.999999999% | 99.9% |\n| Glacier Flexible | Archive (minutes to hours) | 99.999999999% | 99.99% |\n| Glacier Deep Archive | Long-term archive | 99.999999999% | 99.99% |\n\n### Versioning\n\nKeeps multiple versions of an object. Essential for data protection and recovery.\n\n## Common Patterns\n\n### Create a Bucket with Best Practices\n\n**AWS CLI:**\n\n```bash\n# Create bucket (us-east-1 doesn't need LocationConstraint)\naws s3api create-bucket \\\n  --bucket my-secure-bucket-12345 \\\n  --region us-west-2 \\\n  --create-bucket-configuration LocationConstraint=us-west-2\n\n# Enable versioning\naws s3api put-bucket-versioning \\\n  --bucket my-secure-bucket-12345 \\\n  --versioning-configuration Status=Enabled\n\n# Block public access\naws s3api put-public-access-block \\\n  --bucket my-secure-bucket-12345 \\\n  --public-access-block-configuration \\\n    BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=true\n\n# Enable encryption\naws s3api put-bucket-encryption \\\n  --bucket my-secure-bucket-12345 \\\n  --server-side-encryption-configuration '{\n    \"Rules\": [{\"ApplyServerSideEncryptionByDefault\": {\"SSEAlgorithm\": \"AES256\"}}]\n  }'\n```\n\n**boto3:**\n\n```python\nimport boto3\n\ns3 = boto3.client('s3', region_name='us-west-2')\n\n# Create bucket\ns3.create_bucket(\n    Bucket='my-secure-bucket-12345',\n    CreateBucketConfiguration={'LocationConstraint': 'us-west-2'}\n)\n\n# Enable versioning\ns3.put_bucket_versioning(\n    Bucket='my-secure-bucket-12345',\n    VersioningConfiguration={'Status': 'Enabled'}\n)\n\n# Block public access\ns3.put_public_access_block(\n    Bucket='my-secure-bucket-12345',\n    PublicAccessBlockConfiguration={\n        'BlockPublicAcls': True,\n        'IgnorePublicAcls': True,\n        'BlockPublicPolicy': True,\n        'RestrictPublicBuckets': True\n    }\n)\n```\n\n### Upload and Download Objects\n\n```bash\n# Upload a single file\naws s3 cp myfile.txt s3://my-bucket/path/myfile.txt\n\n# Upload with metadata\naws s3 cp myfile.txt s3://my-bucket/path/myfile.txt \\\n  --metadata \"environment=production,version=1.0\"\n\n# Download a file\naws s3 cp s3://my-bucket/path/myfile.txt ./myfile.txt\n\n# Sync a directory\naws s3 sync ./local-folder s3://my-bucket/prefix/ --delete\n\n# Copy between buckets\naws s3 cp s3://source-bucket/file.txt s3://dest-bucket/file.txt\n```\n\n### Generate Presigned URL\n\n```python\nimport boto3\nfrom botocore.config import Config\n\ns3 = boto3.client('s3', config=Config(signature_version='s3v4'))\n\n# Generate presigned URL for download (GET)\nurl = s3.generate_presigned_url(\n    'get_object',\n    Params={'Bucket': 'my-bucket', 'Key': 'path/to/file.txt'},\n    ExpiresIn=3600  # URL valid for 1 hour\n)\n\n# Generate presigned URL for upload (PUT)\nupload_url = s3.generate_presigned_url(\n    'put_object',\n    Params={\n        'Bucket': 'my-bucket',\n        'Key': 'uploads/newfile.txt',\n        'ContentType': 'text/plain'\n    },\n    ExpiresIn=3600\n)\n```\n\n### Configure Lifecycle Policy\n\n```bash\ncat > lifecycle.json << 'EOF'\n{\n  \"Rules\": [\n    {\n      \"ID\": \"MoveToGlacierAfter90Days\",\n      \"Status\": \"Enabled\",\n      \"Filter\": {\"Prefix\": \"logs/\"},\n      \"Transitions\": [\n        {\"Days\": 90, \"StorageClass\": \"GLACIER\"}\n      ],\n      \"Expiration\": {\"Days\": 365}\n    },\n    {\n      \"ID\": \"DeleteOldVersions\",\n      \"Status\": \"Enabled\",\n      \"Filter\": {},\n      \"NoncurrentVersionExpiration\": {\"NoncurrentDays\": 30}\n    }\n  ]\n}\nEOF\n\naws s3api put-bucket-lifecycle-configuration \\\n  --bucket my-bucket \\\n  --lifecycle-configuration file://lifecycle.json\n```\n\n### Event Notifications to Lambda\n\n```bash\naws s3api put-bucket-notification-configuration \\\n  --bucket my-bucket \\\n  --notification-configuration '{\n    \"LambdaFunctionConfigurations\": [\n      {\n        \"LambdaFunctionArn\": \"arn:aws:lambda:us-east-1:123456789012:function:ProcessS3Upload\",\n        \"Events\": [\"s3:ObjectCreated:*\"],\n        \"Filter\": {\n          \"Key\": {\n            \"FilterRules\": [\n              {\"Name\": \"prefix\", \"Value\": \"uploads/\"},\n              {\"Name\": \"suffix\", \"Value\": \".jpg\"}\n            ]\n          }\n        }\n      }\n    ]\n  }'\n```\n\n## CLI Reference\n\n### High-Level Commands (aws s3)\n\n| Command | Description |\n|---------|-------------|\n| `aws s3 ls` | List buckets or objects |\n| `aws s3 cp` | Copy files |\n| `aws s3 mv` | Move files |\n| `aws s3 rm` | Delete files |\n| `aws s3 sync` | Sync directories |\n| `aws s3 mb` | Make bucket |\n| `aws s3 rb` | Remove bucket |\n\n### Low-Level Commands (aws s3api)\n\n| Command | Description |\n|---------|-------------|\n| `aws s3api create-bucket` | Create bucket with options |\n| `aws s3api put-object` | Upload with full control |\n| `aws s3api get-object` | Download with options |\n| `aws s3api delete-object` | Delete single object |\n| `aws s3api put-bucket-policy` | Set bucket policy |\n| `aws s3api put-bucket-versioning` | Enable versioning |\n| `aws s3api list-object-versions` | List all versions |\n\n### Useful Flags\n\n- `--recursive`: Process all objects in prefix\n- `--exclude/--include`: Filter objects\n- `--dryrun`: Preview changes\n- `--storage-class`: Set storage class\n- `--acl`: Set access control (prefer policies instead)\n\n## Best Practices\n\n### Security\n\n- **Block public access** at account and bucket level\n- **Enable versioning** for data protection\n- **Use bucket policies** over ACLs\n- **Enable encryption** (SSE-S3 or SSE-KMS)\n- **Enable access logging** for audit\n- **Use VPC endpoints** for private access\n- **Enable MFA Delete** for critical buckets\n\n### Performance\n\n- **Use Transfer Acceleration** for distant uploads\n- **Use multipart upload** for files > 100 MB\n- **Randomize key prefixes** for high-throughput (less relevant with 2024 improvements)\n- **Use byte-range fetches** for large file downloads\n\n### Cost Optimization\n\n- **Use lifecycle policies** to transition to cheaper storage\n- **Enable Intelligent-Tiering** for unpredictable access\n- **Delete incomplete multipart uploads**:\n  ```json\n  {\n    \"Rules\": [{\n      \"ID\": \"AbortIncompleteMultipartUpload\",\n      \"Status\": \"Enabled\",\n      \"Filter\": {},\n      \"AbortIncompleteMultipartUpload\": {\"DaysAfterInitiation\": 7}\n    }]\n  }\n  ```\n- **Use S3 Storage Lens** to analyze storage patterns\n\n## Troubleshooting\n\n### Access Denied Errors\n\n**Causes:**\n1. Bucket policy denies access\n2. IAM policy missing permissions\n3. Public access block preventing access\n4. Object owned by different account\n5. VPC endpoint policy blocking\n\n**Debug steps:**\n\n```bash\n# Check your identity\naws sts get-caller-identity\n\n# Check bucket policy\naws s3api get-bucket-policy --bucket my-bucket\n\n# Check public access block\naws s3api get-public-access-block --bucket my-bucket\n\n# Check object ownership\naws s3api get-object-attributes \\\n  --bucket my-bucket \\\n  --key myfile.txt \\\n  --object-attributes ObjectOwner\n```\n\n### CORS Errors\n\n**Symptom:** Browser blocks cross-origin request\n\n**Fix:**\n\n```bash\naws s3api put-bucket-cors --bucket my-bucket --cors-configuration '{\n  \"CORSRules\": [{\n    \"AllowedOrigins\": [\"https://myapp.com\"],\n    \"AllowedMethods\": [\"GET\", \"PUT\", \"POST\"],\n    \"AllowedHeaders\": [\"*\"],\n    \"ExposeHeaders\": [\"ETag\"],\n    \"MaxAgeSeconds\": 3600\n  }]\n}'\n```\n\n### Slow Uploads\n\n**Solutions:**\n- Use multipart upload for large files\n- Enable Transfer Acceleration\n- Use `aws s3 cp` with `--expected-size` for large files\n- Check network throughput to the region\n\n### 403 on Presigned URL\n\n**Causes:**\n- URL expired\n- Signer lacks permissions\n- Bucket policy blocks access\n- Region mismatch (v4 signatures are region-specific)\n\n**Fix:** Ensure signer has permissions and use correct region.\n\n## References\n\n- [S3 User Guide](https://docs.aws.amazon.com/AmazonS3/latest/userguide/)\n- [S3 API Reference](https://docs.aws.amazon.com/AmazonS3/latest/API/)\n- [S3 CLI Reference](https://docs.aws.amazon.com/cli/latest/reference/s3/)\n- [boto3 S3](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html)","tags":["aws","agent","skills","itsmostafa","agent-skills","agentic-ai","claude-code","claude-skills","codex","coding-agents"],"capabilities":["skill","source-itsmostafa","skill-s3","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/s3","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,936 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.947Z","embedding":null,"createdAt":"2026-04-18T21:55:45.507Z","updatedAt":"2026-05-03T00:52:58.947Z","lastSeenAt":"2026-05-03T00:52:58.947Z","tsv":"'/amazons3/latest/api/)':1060 '/amazons3/latest/userguide/)':1054 '/cli/latest/reference/s3/)':1066 '/dest-bucket/file.txt':436 '/local-folder':423 '/my-bucket/path/myfile.txt':393,402,415 '/my-bucket/prefix':425 '/myfile.txt':416 '/source-bucket/file.txt':434 '/v1/documentation/api/latest/reference/services/s3.html)':1071 '1':213,479,579,866 '1.0':407 '100':799 '12345':228,256,277,304,336,353,369 '123456789012':580 '2':233,242,326,342,871 '2024':811 '3':876 '30':535 '3600':475,504,987 '365':527 '4':882 '403':1017 '5':130,888 '7':852 '90':522 '99.9':151,158,166 '99.99':143,174,183 '99.999999999':51,142,150,157,165,173,182 'abortincompletemultipartupload':846,850 'acceler':790,999 'access':12,141,148,156,264,270,280,359,362,735,745,771,780,838,862,870,878,881,920,927,1030 'account':113,747,887 'acl':733,760 'across':110 'aes256':313 'allowedhead':983 'allowedmethod':979 'allowedorigin':977 'amazon':37 'analyz':858 'api':1056 'applyserversideencryptionbydefault':311 'archiv':161,169,177,181 'arn':573 'attribut':941,950 'audit':774 'avail':138 'aw':2,35,56,70,112,205,218,245,265,293,388,397,411,420,430,537,557,574,603,607,614,619,624,629,634,639,648,652,661,670,678,686,695,703,899,908,922,936,963,1001 'backup':61 'bash':207,383,508,556,895,962 'best':90,93,203,740 'best-practic':92 'block':262,271,281,357,363,743,879,892,921,928,956,1029 'blockpublicacl':283,371 'blockpublicpolici':287,375 'boto3':314,317,442,1067 'boto3.amazonaws.com':1070 'boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html)':1069 'boto3.client':319,448 'botocore.config':444 'browser':955 'bucket':7,17,101,105,201,209,222,223,227,236,249,251,255,272,276,297,299,303,328,330,331,335,346,348,352,364,368,429,468,471,495,498,541,544,547,561,564,567,611,638,643,656,658,690,693,699,749,757,786,867,906,912,914,917,929,932,942,945,967,969,972,1027 'byte':815 'byte-rang':814 'caller':903 'case':136 'cat':509 'caus':865,1021 'chang':726 'cheaper':830 'check':896,905,918,933,1011 'class':133,134,729,732 'cli':85,88,206,597,1062 'cli-refer':87 'command':602,605,647,650 'common':80,83,197 'common-pattern':82 'concept':76,79,100 'config':446,450,451 'configur':20,237,259,282,309,505,543,550,563,570,975 'consist':119 'contain':102 'content':74 'contenttyp':501 'control':13,669,736 'copi':427,617 'cor':952,968,974 'core':75,78,99 'core-concept':77 'correct':1046 'cors-configur':973 'corsrul':976 'cost':822 'cp':390,399,413,432,616,1003 'creat':16,199,208,221,235,327,655,657 'create-bucket':220,654 'create-bucket-configur':234 'createbucketconfigur':337 'critic':785 'cross':32,958 'cross-origin':957 'cross-region':31 'data':59,121,193,754 'day':521,526 'daysafteriniti':851 'debug':893 'deep':176 'delet':426,627,681,683,783,839 'delete-object':680 'deleteoldvers':529 'deni':863,869 'descript':606,651 'differ':886 'directori':419,633 'distant':792 'docs.aws.amazon.com':1053,1059,1065 'docs.aws.amazon.com/amazons3/latest/api/)':1058 'docs.aws.amazon.com/amazons3/latest/userguide/)':1052 'docs.aws.amazon.com/cli/latest/reference/s3/)':1064 'doesn':214 'download':381,408,459,675,821 'dryrun':724 'durabl':50,137 'east':212,578 'enabl':243,261,291,343,356,516,531,701,751,761,770,781,832,848,997 'encrypt':292,298,308,762 'endpoint':777,890 'ensur':1040 'environ':404 'eof':511,536 'error':864,953 'essenti':191 'etag':985 'event':552,583 'exclud':720 'expect':1006 'expected-s':1005 'expir':525,1023 'expiresin':474,503 'exposehead':984 'fetch':817 'file':19,115,387,410,618,623,628,798,820,996,1010 'filter':517,532,586,722,849 'filterrul':588 'fix':961,1039 'flag':713 'flexibl':168 'frequent':140 'full':668 'function':581 'fundament':54 'generat':437,455,481 'get':460,465,673,902,911,925,939,980 'get-bucket-polici':910 'get-caller-ident':901 'get-object':672 'get-object-attribut':938 'get-public-access-block':924 'glacier':159,167,175,524 'global':108 'guid':1051 'high':600,806 'high-level':599 'high-throughput':805 'hour':172,480 'ia':154 'iam':872 'id':513,528,845 'ident':898,904 'ignorepublicacl':285,373 'implement':30 'import':316,441,445 'improv':812 'includ':721 'incomplet':840 'industri':48 'industry-lead':47 'infrequ':155 'instant':160,163 'instead':739 'intellig':145,834 'intelligent-ti':144,833 'jpg':596 'json':843 'keep':185 'key':126,472,499,587,802,946 'kms':769 'lack':1025 'lake':60 'lambda':555,575 'lambdafunctionarn':572 'lambdafunctionconfigur':571 'larg':819,995,1009 'lead':49 'len':856 'less':808 'level':601,646,750 'lifecycl':21,506,542,549,825 'lifecycle-configur':548 'lifecycle.json':510,551 'list':610,706,709 'list-object-vers':705 'locationconstraint':217,238,338 'log':519,772 'long':179 'long-term':178 'low':645 'low-level':644 'ls':609 'make':637 'manag':8,27 'mani':68 'maxagesecond':986 'maximum':128 'mb':636,800 'metadata':122,396,403 'mfa':782 'minut':170 'mismatch':1032 'miss':874 'move':622 'movetoglacierafter90days':514 'multipart':795,841,992 'multipl':186 'mv':621 'my-bucket':469,496,545,565,915,930,943,970 'my-secure-bucket':224,252,273,300,332,349,365 'myapp.com':978 'myfile.txt':391,400,947 'name':106,322,589,593 'need':216 'network':1012 'noncurrentday':534 'noncurrentversionexpir':533 'notif':553,562,569 'notification-configur':568 'object':4,9,44,104,114,190,382,466,493,613,665,674,682,685,707,717,723,883,934,940,949 'object-attribut':948 'objectcr':585 'objectown':951 'oper':10 'optim':823 'option':660,677 'origin':959 'own':884 'ownership':935 'param':467,494 'path':127 'path/to/file.txt':473 'pattern':81,84,149,198,860 'perform':787 'permiss':28,875,1026,1043 'polici':22,507,691,694,738,758,826,868,873,891,907,913,1028 'post':982 'practic':91,94,204,741 'prefer':737 'prefix':518,590,719,803 'presign':438,456,463,482,490,1019 'prevent':880 'preview':725 'privat':779 'process':715 'processs3upload':582 'product':405 'protect':194,755 'provid':42 'public':263,269,279,358,361,744,877,919,926 'public-access-block-configur':278 'publicaccessblockconfigur':370 'put':248,268,296,486,492,540,560,664,689,698,966,981 'put-bucket-cor':965 'put-bucket-encrypt':295 'put-bucket-lifecycle-configur':539 'put-bucket-notification-configur':559 'put-bucket-polici':688 'put-bucket-vers':247,697 'put-object':663 'put-public-access-block':267 'python':315,440 'random':801 'rang':816 'rb':641 'recoveri':196 'recurs':714 'refer':86,89,97,98,598,1048,1057,1063 'region':33,229,321,1016,1031,1037,1047 'region-specif':1036 'relev':809 'remov':642 'replic':34 'request':960 'restrictpublicbucket':289,377 'retriev':164 'rm':626 'rule':310,512,844 's3':1,3,36,41,52,118,318,320,389,392,398,401,412,414,421,424,431,433,435,447,449,584,604,608,615,620,625,630,635,640,765,854,1002,1049,1055,1061,1068 's3.create':329 's3.generate':462,489 's3.put':345,360 's3api':219,246,266,294,538,558,649,653,662,671,679,687,696,704,909,923,937,964 's3v4':454 'scalabl':43 'secur':226,254,275,302,334,351,367,742 'server':306 'server-side-encryption-configur':305 'servic':40,71 'set':23,692,730,734 'side':307 'signatur':452,1034 'signer':1024,1041 'simpl':38 'singl':386,684 'size':129,1007 'skill' 'skill-s3' 'slow':988 'solut':990 'source-itsmostafa' 'specif':1038 'sse':764,768 'sse-km':767 'sse-s3':763 'ssealgorithm':312 'standard':139,153 'standard-ia':152 'static':25,62 'status':260,355,515,530,847 'step':894 'storag':5,39,45,66,132,728,731,831,855,859 'storage-class':727 'storageclass':523 'store':116 'sts':900 'suffix':594 'symptom':954 'sync':417,422,631,632 'tabl':72 'tb':131 'term':180 'text/plain':502 'throughput':807,1013 'tier':146,835 'topic-agent-skills' 'topic-agentic-ai' 'topic-aws' 'topic-claude-code' 'topic-claude-skills' 'topic-codex' 'topic-coding-agents' 'transfer':789,998 'transit':520,828 'troubleshoot':95,96,861 'true':284,286,288,290,372,374,376,378 'uniqu':109,125 'unknown':147 'unpredict':837 'upload':18,379,384,394,485,487,592,666,793,796,842,989,993 'uploads/newfile.txt':500 'url':439,457,461,464,476,483,488,491,1020,1022 'us':211,231,240,324,340,577 'us-east':210,576 'us-west':230,239,323,339 'use':14,57,135,712,756,775,788,794,813,824,853,991,1000,1045 'user':1050 'v4':1033 'valid':477 'valu':591,595 'version':184,187,244,250,258,344,347,406,453,700,702,708,711,752 'versioning-configur':257 'versioningconfigur':354 'vpc':776,889 'websit':26,63 'west':232,241,325,341","prices":[{"id":"f8390735-a763-40e5-aaa5-b4459c6319df","listingId":"448c6648-ea5a-4bbd-b61d-487bf5e3f9dd","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:45.507Z"}],"sources":[{"listingId":"448c6648-ea5a-4bbd-b61d-487bf5e3f9dd","source":"github","sourceId":"itsmostafa/aws-agent-skills/s3","sourceUrl":"https://github.com/itsmostafa/aws-agent-skills/tree/main/skills/s3","isPrimary":false,"firstSeenAt":"2026-04-18T21:55:45.507Z","lastSeenAt":"2026-05-03T00:52:58.947Z"}],"details":{"listingId":"448c6648-ea5a-4bbd-b61d-487bf5e3f9dd","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"itsmostafa","slug":"s3","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":"47af83a2310897d9a797cff4a04d6818fe1097da","skill_md_path":"skills/s3/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/itsmostafa/aws-agent-skills/tree/main/skills/s3"},"layout":"multi","source":"github","category":"aws-agent-skills","frontmatter":{"name":"s3","description":"AWS S3 object storage for bucket management, object operations, and access control. Use when creating buckets, uploading files, configuring lifecycle policies, setting up static websites, managing permissions, or implementing cross-region replication."},"skills_sh_url":"https://skills.sh/itsmostafa/aws-agent-skills/s3"},"updatedAt":"2026-05-03T00:52:58.947Z"}}