[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-aws-labs-s3":3,"mdc--6jz1tm-key":37,"related-org-aws-labs-s3":2754,"related-repo-aws-labs-s3":2934},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":26,"repoUrl":27,"updatedAt":28,"license":29,"forks":30,"topics":31,"repo":32,"sourceUrl":35,"mdContent":36},"s3","configure Amazon S3 storage and access","Deep-dive into Amazon S3 bucket configuration, storage optimization, and access control. Use when designing S3 storage strategies, configuring bucket policies and access controls, optimizing performance for large-scale workloads, setting up lifecycle policies, or troubleshooting S3 access issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"aws-labs","AWS Labs","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Faws-labs.png","awslabs",[13,17,20,23],{"name":14,"slug":15,"type":16},"Performance","performance","tag",{"name":18,"slug":19,"type":16},"Access Control","access-control",{"name":21,"slug":22,"type":16},"Storage","storage",{"name":24,"slug":25,"type":16},"AWS","aws",14,"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fstartups","2026-07-12T08:40:33.633878",null,15,[],{"repoUrl":27,"stars":26,"forks":30,"topics":33,"description":34},[],"Official AWS Startups repository that hosts plugins, skills, tools and resources to support startup builders on AWS","https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fstartups\u002Ftree\u002FHEAD\u002Fsolution-architecture\u002Fplugins\u002Faws-dev-toolkit\u002Fskills\u002Fs3","---\nname: s3\ndescription: Deep-dive into Amazon S3 bucket configuration, storage optimization, and access control. Use when designing S3 storage strategies, configuring bucket policies and access controls, optimizing performance for large-scale workloads, setting up lifecycle policies, or troubleshooting S3 access issues.\n---\n\nYou are an S3 specialist. Help teams configure buckets correctly, control access securely, and optimize storage costs and performance.\n\n## Process\n\n1. Identify the workload type (data lake, static hosting, backup\u002Farchive, application assets, log storage)\n2. Use the `awsknowledge` MCP tools (`mcp__plugin_aws-dev-toolkit_awsknowledge__aws___search_documentation`, `mcp__plugin_aws-dev-toolkit_awsknowledge__aws___read_documentation`, `mcp__plugin_aws-dev-toolkit_awsknowledge__aws___recommend`) to verify current S3 limits and pricing\n3. Design the bucket structure and naming convention\n4. Configure access control (default to least-privilege IAM policies)\n5. Set up lifecycle policies for cost optimization\n6. Recommend performance optimizations if high throughput is needed\n\n## Bucket Configuration Essentials\n\n### Default Settings (as of 2023+)\n\n- **Block Public Access**: Enabled by default on new buckets — leave it on unless you have a specific, documented reason\n- **Server-Side Encryption**: SSE-S3 (AES-256) enabled by default — upgrade to SSE-KMS only if you need key rotation control, audit trails, or cross-account key policies\n- **ACLs disabled**: Object ownership set to \"Bucket owner enforced\" by default — use bucket policies instead of ACLs\n- **Versioning**: Off by default — enable for any bucket where data loss is unacceptable\n\n### Versioning\n\n- Enable for production data, compliance, and disaster recovery\n- Versioning cannot be disabled once enabled — only suspended\n- Old versions count toward storage costs — pair with lifecycle rules to expire noncurrent versions\n- Use MFA Delete for critical buckets (requires root account to enable)\n\n## Storage Classes\n\n| Class                         | Use Case                                    | Retrieval     | Min Duration |\n| ----------------------------- | ------------------------------------------- | ------------- | ------------ |\n| S3 Standard                   | Frequently accessed data                    | Instant       | None         |\n| S3 Intelligent-Tiering        | Unknown or changing access patterns         | Instant       | None         |\n| S3 Standard-IA                | Infrequent access, rapid retrieval needed   | Instant       | 30 days      |\n| S3 One Zone-IA                | Infrequent, non-critical, reproducible data | Instant       | 30 days      |\n| S3 Glacier Instant Retrieval  | Archive with millisecond access             | Instant       | 90 days      |\n| S3 Glacier Flexible Retrieval | Archive, minutes-to-hours retrieval         | Minutes-hours | 90 days      |\n| S3 Glacier Deep Archive       | Long-term archive, rarely accessed          | Hours         | 180 days     |\n\n**Opinionated guidance:**\n\n- Default to **Intelligent-Tiering** for data with unpredictable access patterns — the monitoring fee is negligible compared to the savings\n- Use **Standard-IA** only when you know the access pattern is infrequent but need instant retrieval\n- **One Zone-IA** is great for derived data you can regenerate (thumbnails, transcoded media, ETL outputs)\n- Minimum duration charges apply — don't move objects to IA\u002FGlacier if they'll be deleted before the minimum\n\n## Lifecycle Policies\n\n```json\n{\n  \"Rules\": [\n    {\n      \"ID\": \"TransitionToIA\",\n      \"Status\": \"Enabled\",\n      \"Transitions\": [\n        { \"Days\": 30, \"StorageClass\": \"STANDARD_IA\" },\n        { \"Days\": 90, \"StorageClass\": \"GLACIER\" }\n      ],\n      \"NoncurrentVersionExpiration\": { \"NoncurrentDays\": 90 },\n      \"ExpiredObjectDeleteMarker\": { \"IsEnabled\": true },\n      \"AbortIncompleteMultipartUpload\": { \"DaysAfterInitiation\": 7 }\n    }\n  ]\n}\n```\n\n**Always include these rules:**\n\n- `AbortIncompleteMultipartUpload` — abandoned multipart uploads silently accumulate cost\n- `NoncurrentVersionExpiration` — if versioning is enabled, old versions pile up fast\n- `ExpiredObjectDeleteMarker` — clean up delete markers from expired objects\n\n## Access Control\n\n### Decision Hierarchy (use in this order)\n\n1. **IAM policies** — Primary mechanism. Attach to roles\u002Fusers\u002Fgroups. Use for service-to-service access.\n2. **Bucket policies** — Use for cross-account access, VPC endpoint restrictions, or IP-based restrictions.\n3. **S3 Access Points** — Use when many teams\u002Fapps share a bucket with different permission needs.\n4. **ACLs** — Do not use. Disabled by default since 2023. Legacy only.\n\n### Bucket Policy Patterns\n\n```json\n\u002F\u002F Cross-account access\n{\n  \"Effect\": \"Allow\",\n  \"Principal\": { \"AWS\": \"arn:aws:iam::ACCOUNT-ID:root\" },\n  \"Action\": [\"s3:GetObject\"],\n  \"Resource\": \"arn:aws:s3:::my-bucket\u002F*\"\n}\n\n\u002F\u002F Enforce HTTPS only\n{\n  \"Effect\": \"Deny\",\n  \"Principal\": \"*\",\n  \"Action\": \"s3:*\",\n  \"Resource\": [\"arn:aws:s3:::my-bucket\", \"arn:aws:s3:::my-bucket\u002F*\"],\n  \"Condition\": { \"Bool\": { \"aws:SecureTransport\": \"false\" } }\n}\n\n\u002F\u002F Restrict to VPC endpoint\n{\n  \"Effect\": \"Deny\",\n  \"Principal\": \"*\",\n  \"Action\": \"s3:*\",\n  \"Resource\": [\"arn:aws:s3:::my-bucket\", \"arn:aws:s3:::my-bucket\u002F*\"],\n  \"Condition\": { \"StringNotEquals\": { \"aws:sourceVpce\": \"vpce-1234567890\" } }\n}\n```\n\n## Performance Optimization\n\n### Request Rate\n\n- S3 supports 5,500 GET\u002FHEAD and 3,500 PUT\u002FPOST\u002FDELETE requests per second per prefix\n- Distribute objects across prefixes for parallelism (S3 auto-partitions by prefix)\n- The old advice to use random prefixes is outdated — S3 handles sequential key names fine now\n\n### Large Object Uploads\n\n- **Multipart upload**: Required for objects >5 GB, recommended for objects >100 MB\n- Use `aws s3 cp` or `aws s3 sync` (they use multipart automatically)\n- Configure part size based on object size and network conditions\n\n### S3 Transfer Acceleration\n\n- Uses CloudFront edge locations to speed up long-distance transfers\n- Enable on the bucket, use the accelerate endpoint: `bucket.s3-accelerate.amazonaws.com`\n- Test with the S3 Transfer Acceleration Speed Comparison tool before committing\n- Only beneficial for uploads >1 GB over long distances (cross-continent)\n\n### S3 Select \u002F Glacier Select\n\n- Query CSV, JSON, or Parquet files in-place with SQL expressions\n- Returns only the matched data — reduces data transfer and processing time\n- Use when you need a subset of a large file and don't want to download the whole thing\n- For complex analytics, use Athena instead\n\n## Event Notifications\n\n- Trigger Lambda, SQS, SNS, or EventBridge on object events (create, delete, restore)\n- **Prefer EventBridge** for new implementations — more flexible filtering, multiple targets, replay\n- S3 native notifications only support one destination per event type per prefix\u002Fsuffix combo\n- EventBridge removes this limitation and adds content-based filtering\n\n## Common CLI Commands\n\n```bash\n# Create bucket\naws s3 mb s3:\u002F\u002Fmy-bucket --region us-east-1\n\n# Sync local directory to S3\naws s3 sync .\u002Flocal-dir s3:\u002F\u002Fmy-bucket\u002Fprefix\u002F --delete\n\n# Copy with storage class\naws s3 cp large-file.zip s3:\u002F\u002Fmy-bucket\u002F --storage-class STANDARD_IA\n\n# Presigned URL (temporary access, 1 hour default)\naws s3 presign s3:\u002F\u002Fmy-bucket\u002Ffile.pdf --expires-in 3600\n\n# List objects with size summary\naws s3 ls s3:\u002F\u002Fmy-bucket\u002Fprefix\u002F --recursive --summarize --human-readable\n\n# Enable versioning\naws s3api put-bucket-versioning \\\n  --bucket my-bucket \\\n  --versioning-configuration Status=Enabled\n\n# Put bucket policy\naws s3api put-bucket-policy \\\n  --bucket my-bucket \\\n  --policy file:\u002F\u002Fbucket-policy.json\n\n# Check Block Public Access settings\naws s3api get-public-access-block --bucket my-bucket\n\n# Enable Transfer Acceleration\naws s3api put-bucket-accelerate-configuration \\\n  --bucket my-bucket \\\n  --accelerate-configuration Status=Enabled\n\n# S3 Select query on CSV\naws s3api select-object-content \\\n  --bucket my-bucket \\\n  --key data.csv \\\n  --expression \"SELECT s.name, s.age FROM s3object s WHERE s.age > '30'\" \\\n  --expression-type SQL \\\n  --input-serialization '{\"CSV\":{\"FileHeaderInfo\":\"USE\"}}' \\\n  --output-serialization '{\"CSV\":{}}' \\\n  output.csv\n```\n\n## Anti-Patterns\n\n- **Public buckets for internal data.** Block Public Access should be on. Use presigned URLs or CloudFront with OAC for controlled access.\n- **ACLs for access control.** ACLs are legacy, hard to audit, and easy to misconfigure. Use IAM policies and bucket policies.\n- **No lifecycle rules.** Without lifecycle policies, storage costs grow unbounded. Incomplete multipart uploads are an invisible cost leak.\n- **Single prefix for high-throughput workloads.** Distribute objects across prefixes to maximize request rate.\n- **Using S3 as a database.** S3 is object storage, not a key-value store. No atomic updates, no conditional writes (except with object lock), no queries without Athena\u002FS3 Select.\n- **Storing secrets in S3.** Even with encryption, S3 is not designed for secrets management. Use Secrets Manager or SSM Parameter Store.\n- **Ignoring data transfer costs.** Cross-region and internet egress add up fast. Use CloudFront, S3 Transfer Acceleration, or VPC endpoints to reduce costs.\n- **Not encrypting with KMS when compliance requires it.** SSE-S3 encrypts data but provides no audit trail of key usage. Use SSE-KMS for regulated workloads.\n",{"data":38,"body":39},{"name":4,"description":6},{"type":40,"children":41},"root",[42,50,57,124,130,137,182,187,210,216,408,416,458,464,958,966,999,1003,1009,1052,1058,1819,1825,1831,1849,1855,1893,1899,1928,1934,1957,1963,1991,1997,2659,2665,2748],{"type":43,"tag":44,"props":45,"children":46},"element","p",{},[47],{"type":48,"value":49},"text","You are an S3 specialist. Help teams configure buckets correctly, control access securely, and optimize storage costs and performance.",{"type":43,"tag":51,"props":52,"children":54},"h2",{"id":53},"process",[55],{"type":48,"value":56},"Process",{"type":43,"tag":58,"props":59,"children":60},"ol",{},[61,67,104,109,114,119],{"type":43,"tag":62,"props":63,"children":64},"li",{},[65],{"type":48,"value":66},"Identify the workload type (data lake, static hosting, backup\u002Farchive, application assets, log storage)",{"type":43,"tag":62,"props":68,"children":69},{},[70,72,79,81,87,89,95,96,102],{"type":48,"value":71},"Use the ",{"type":43,"tag":73,"props":74,"children":76},"code",{"className":75},[],[77],{"type":48,"value":78},"awsknowledge",{"type":48,"value":80}," MCP tools (",{"type":43,"tag":73,"props":82,"children":84},{"className":83},[],[85],{"type":48,"value":86},"mcp__plugin_aws-dev-toolkit_awsknowledge__aws___search_documentation",{"type":48,"value":88},", ",{"type":43,"tag":73,"props":90,"children":92},{"className":91},[],[93],{"type":48,"value":94},"mcp__plugin_aws-dev-toolkit_awsknowledge__aws___read_documentation",{"type":48,"value":88},{"type":43,"tag":73,"props":97,"children":99},{"className":98},[],[100],{"type":48,"value":101},"mcp__plugin_aws-dev-toolkit_awsknowledge__aws___recommend",{"type":48,"value":103},") to verify current S3 limits and pricing",{"type":43,"tag":62,"props":105,"children":106},{},[107],{"type":48,"value":108},"Design the bucket structure and naming convention",{"type":43,"tag":62,"props":110,"children":111},{},[112],{"type":48,"value":113},"Configure access control (default to least-privilege IAM policies)",{"type":43,"tag":62,"props":115,"children":116},{},[117],{"type":48,"value":118},"Set up lifecycle policies for cost optimization",{"type":43,"tag":62,"props":120,"children":121},{},[122],{"type":48,"value":123},"Recommend performance optimizations if high throughput is needed",{"type":43,"tag":51,"props":125,"children":127},{"id":126},"bucket-configuration-essentials",[128],{"type":48,"value":129},"Bucket Configuration Essentials",{"type":43,"tag":131,"props":132,"children":134},"h3",{"id":133},"default-settings-as-of-2023",[135],{"type":48,"value":136},"Default Settings (as of 2023+)",{"type":43,"tag":138,"props":139,"children":140},"ul",{},[141,152,162,172],{"type":43,"tag":62,"props":142,"children":143},{},[144,150],{"type":43,"tag":145,"props":146,"children":147},"strong",{},[148],{"type":48,"value":149},"Block Public Access",{"type":48,"value":151},": Enabled by default on new buckets — leave it on unless you have a specific, documented reason",{"type":43,"tag":62,"props":153,"children":154},{},[155,160],{"type":43,"tag":145,"props":156,"children":157},{},[158],{"type":48,"value":159},"Server-Side Encryption",{"type":48,"value":161},": SSE-S3 (AES-256) enabled by default — upgrade to SSE-KMS only if you need key rotation control, audit trails, or cross-account key policies",{"type":43,"tag":62,"props":163,"children":164},{},[165,170],{"type":43,"tag":145,"props":166,"children":167},{},[168],{"type":48,"value":169},"ACLs disabled",{"type":48,"value":171},": Object ownership set to \"Bucket owner enforced\" by default — use bucket policies instead of ACLs",{"type":43,"tag":62,"props":173,"children":174},{},[175,180],{"type":43,"tag":145,"props":176,"children":177},{},[178],{"type":48,"value":179},"Versioning",{"type":48,"value":181},": Off by default — enable for any bucket where data loss is unacceptable",{"type":43,"tag":131,"props":183,"children":185},{"id":184},"versioning",[186],{"type":48,"value":179},{"type":43,"tag":138,"props":188,"children":189},{},[190,195,200,205],{"type":43,"tag":62,"props":191,"children":192},{},[193],{"type":48,"value":194},"Enable for production data, compliance, and disaster recovery",{"type":43,"tag":62,"props":196,"children":197},{},[198],{"type":48,"value":199},"Versioning cannot be disabled once enabled — only suspended",{"type":43,"tag":62,"props":201,"children":202},{},[203],{"type":48,"value":204},"Old versions count toward storage costs — pair with lifecycle rules to expire noncurrent versions",{"type":43,"tag":62,"props":206,"children":207},{},[208],{"type":48,"value":209},"Use MFA Delete for critical buckets (requires root account to enable)",{"type":43,"tag":51,"props":211,"children":213},{"id":212},"storage-classes",[214],{"type":48,"value":215},"Storage Classes",{"type":43,"tag":217,"props":218,"children":219},"table",{},[220,249],{"type":43,"tag":221,"props":222,"children":223},"thead",{},[224],{"type":43,"tag":225,"props":226,"children":227},"tr",{},[228,234,239,244],{"type":43,"tag":229,"props":230,"children":231},"th",{},[232],{"type":48,"value":233},"Class",{"type":43,"tag":229,"props":235,"children":236},{},[237],{"type":48,"value":238},"Use Case",{"type":43,"tag":229,"props":240,"children":241},{},[242],{"type":48,"value":243},"Retrieval",{"type":43,"tag":229,"props":245,"children":246},{},[247],{"type":48,"value":248},"Min Duration",{"type":43,"tag":250,"props":251,"children":252},"tbody",{},[253,277,298,320,341,363,385],{"type":43,"tag":225,"props":254,"children":255},{},[256,262,267,272],{"type":43,"tag":257,"props":258,"children":259},"td",{},[260],{"type":48,"value":261},"S3 Standard",{"type":43,"tag":257,"props":263,"children":264},{},[265],{"type":48,"value":266},"Frequently accessed data",{"type":43,"tag":257,"props":268,"children":269},{},[270],{"type":48,"value":271},"Instant",{"type":43,"tag":257,"props":273,"children":274},{},[275],{"type":48,"value":276},"None",{"type":43,"tag":225,"props":278,"children":279},{},[280,285,290,294],{"type":43,"tag":257,"props":281,"children":282},{},[283],{"type":48,"value":284},"S3 Intelligent-Tiering",{"type":43,"tag":257,"props":286,"children":287},{},[288],{"type":48,"value":289},"Unknown or changing access patterns",{"type":43,"tag":257,"props":291,"children":292},{},[293],{"type":48,"value":271},{"type":43,"tag":257,"props":295,"children":296},{},[297],{"type":48,"value":276},{"type":43,"tag":225,"props":299,"children":300},{},[301,306,311,315],{"type":43,"tag":257,"props":302,"children":303},{},[304],{"type":48,"value":305},"S3 Standard-IA",{"type":43,"tag":257,"props":307,"children":308},{},[309],{"type":48,"value":310},"Infrequent access, rapid retrieval needed",{"type":43,"tag":257,"props":312,"children":313},{},[314],{"type":48,"value":271},{"type":43,"tag":257,"props":316,"children":317},{},[318],{"type":48,"value":319},"30 days",{"type":43,"tag":225,"props":321,"children":322},{},[323,328,333,337],{"type":43,"tag":257,"props":324,"children":325},{},[326],{"type":48,"value":327},"S3 One Zone-IA",{"type":43,"tag":257,"props":329,"children":330},{},[331],{"type":48,"value":332},"Infrequent, non-critical, reproducible data",{"type":43,"tag":257,"props":334,"children":335},{},[336],{"type":48,"value":271},{"type":43,"tag":257,"props":338,"children":339},{},[340],{"type":48,"value":319},{"type":43,"tag":225,"props":342,"children":343},{},[344,349,354,358],{"type":43,"tag":257,"props":345,"children":346},{},[347],{"type":48,"value":348},"S3 Glacier Instant Retrieval",{"type":43,"tag":257,"props":350,"children":351},{},[352],{"type":48,"value":353},"Archive with millisecond access",{"type":43,"tag":257,"props":355,"children":356},{},[357],{"type":48,"value":271},{"type":43,"tag":257,"props":359,"children":360},{},[361],{"type":48,"value":362},"90 days",{"type":43,"tag":225,"props":364,"children":365},{},[366,371,376,381],{"type":43,"tag":257,"props":367,"children":368},{},[369],{"type":48,"value":370},"S3 Glacier Flexible Retrieval",{"type":43,"tag":257,"props":372,"children":373},{},[374],{"type":48,"value":375},"Archive, minutes-to-hours retrieval",{"type":43,"tag":257,"props":377,"children":378},{},[379],{"type":48,"value":380},"Minutes-hours",{"type":43,"tag":257,"props":382,"children":383},{},[384],{"type":48,"value":362},{"type":43,"tag":225,"props":386,"children":387},{},[388,393,398,403],{"type":43,"tag":257,"props":389,"children":390},{},[391],{"type":48,"value":392},"S3 Glacier Deep Archive",{"type":43,"tag":257,"props":394,"children":395},{},[396],{"type":48,"value":397},"Long-term archive, rarely accessed",{"type":43,"tag":257,"props":399,"children":400},{},[401],{"type":48,"value":402},"Hours",{"type":43,"tag":257,"props":404,"children":405},{},[406],{"type":48,"value":407},"180 days",{"type":43,"tag":44,"props":409,"children":410},{},[411],{"type":43,"tag":145,"props":412,"children":413},{},[414],{"type":48,"value":415},"Opinionated guidance:",{"type":43,"tag":138,"props":417,"children":418},{},[419,431,443,453],{"type":43,"tag":62,"props":420,"children":421},{},[422,424,429],{"type":48,"value":423},"Default to ",{"type":43,"tag":145,"props":425,"children":426},{},[427],{"type":48,"value":428},"Intelligent-Tiering",{"type":48,"value":430}," for data with unpredictable access patterns — the monitoring fee is negligible compared to the savings",{"type":43,"tag":62,"props":432,"children":433},{},[434,436,441],{"type":48,"value":435},"Use ",{"type":43,"tag":145,"props":437,"children":438},{},[439],{"type":48,"value":440},"Standard-IA",{"type":48,"value":442}," only when you know the access pattern is infrequent but need instant retrieval",{"type":43,"tag":62,"props":444,"children":445},{},[446,451],{"type":43,"tag":145,"props":447,"children":448},{},[449],{"type":48,"value":450},"One Zone-IA",{"type":48,"value":452}," is great for derived data you can regenerate (thumbnails, transcoded media, ETL outputs)",{"type":43,"tag":62,"props":454,"children":455},{},[456],{"type":48,"value":457},"Minimum duration charges apply — don't move objects to IA\u002FGlacier if they'll be deleted before the minimum",{"type":43,"tag":51,"props":459,"children":461},{"id":460},"lifecycle-policies",[462],{"type":48,"value":463},"Lifecycle Policies",{"type":43,"tag":465,"props":466,"children":471},"pre",{"className":467,"code":468,"language":469,"meta":470,"style":470},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"Rules\": [\n    {\n      \"ID\": \"TransitionToIA\",\n      \"Status\": \"Enabled\",\n      \"Transitions\": [\n        { \"Days\": 30, \"StorageClass\": \"STANDARD_IA\" },\n        { \"Days\": 90, \"StorageClass\": \"GLACIER\" }\n      ],\n      \"NoncurrentVersionExpiration\": { \"NoncurrentDays\": 90 },\n      \"ExpiredObjectDeleteMarker\": { \"IsEnabled\": true },\n      \"AbortIncompleteMultipartUpload\": { \"DaysAfterInitiation\": 7 }\n    }\n  ]\n}\n","json","",[472],{"type":43,"tag":73,"props":473,"children":474},{"__ignoreMap":470},[475,487,517,526,569,607,632,704,771,780,831,882,933,942,950],{"type":43,"tag":476,"props":477,"children":480},"span",{"class":478,"line":479},"line",1,[481],{"type":43,"tag":476,"props":482,"children":484},{"style":483},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[485],{"type":48,"value":486},"{\n",{"type":43,"tag":476,"props":488,"children":490},{"class":478,"line":489},2,[491,496,502,507,512],{"type":43,"tag":476,"props":492,"children":493},{"style":483},[494],{"type":48,"value":495},"  \"",{"type":43,"tag":476,"props":497,"children":499},{"style":498},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[500],{"type":48,"value":501},"Rules",{"type":43,"tag":476,"props":503,"children":504},{"style":483},[505],{"type":48,"value":506},"\"",{"type":43,"tag":476,"props":508,"children":509},{"style":483},[510],{"type":48,"value":511},":",{"type":43,"tag":476,"props":513,"children":514},{"style":483},[515],{"type":48,"value":516}," [\n",{"type":43,"tag":476,"props":518,"children":520},{"class":478,"line":519},3,[521],{"type":43,"tag":476,"props":522,"children":523},{"style":483},[524],{"type":48,"value":525},"    {\n",{"type":43,"tag":476,"props":527,"children":529},{"class":478,"line":528},4,[530,535,541,545,549,554,560,564],{"type":43,"tag":476,"props":531,"children":532},{"style":483},[533],{"type":48,"value":534},"      \"",{"type":43,"tag":476,"props":536,"children":538},{"style":537},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[539],{"type":48,"value":540},"ID",{"type":43,"tag":476,"props":542,"children":543},{"style":483},[544],{"type":48,"value":506},{"type":43,"tag":476,"props":546,"children":547},{"style":483},[548],{"type":48,"value":511},{"type":43,"tag":476,"props":550,"children":551},{"style":483},[552],{"type":48,"value":553}," \"",{"type":43,"tag":476,"props":555,"children":557},{"style":556},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[558],{"type":48,"value":559},"TransitionToIA",{"type":43,"tag":476,"props":561,"children":562},{"style":483},[563],{"type":48,"value":506},{"type":43,"tag":476,"props":565,"children":566},{"style":483},[567],{"type":48,"value":568},",\n",{"type":43,"tag":476,"props":570,"children":572},{"class":478,"line":571},5,[573,577,582,586,590,594,599,603],{"type":43,"tag":476,"props":574,"children":575},{"style":483},[576],{"type":48,"value":534},{"type":43,"tag":476,"props":578,"children":579},{"style":537},[580],{"type":48,"value":581},"Status",{"type":43,"tag":476,"props":583,"children":584},{"style":483},[585],{"type":48,"value":506},{"type":43,"tag":476,"props":587,"children":588},{"style":483},[589],{"type":48,"value":511},{"type":43,"tag":476,"props":591,"children":592},{"style":483},[593],{"type":48,"value":553},{"type":43,"tag":476,"props":595,"children":596},{"style":556},[597],{"type":48,"value":598},"Enabled",{"type":43,"tag":476,"props":600,"children":601},{"style":483},[602],{"type":48,"value":506},{"type":43,"tag":476,"props":604,"children":605},{"style":483},[606],{"type":48,"value":568},{"type":43,"tag":476,"props":608,"children":610},{"class":478,"line":609},6,[611,615,620,624,628],{"type":43,"tag":476,"props":612,"children":613},{"style":483},[614],{"type":48,"value":534},{"type":43,"tag":476,"props":616,"children":617},{"style":537},[618],{"type":48,"value":619},"Transitions",{"type":43,"tag":476,"props":621,"children":622},{"style":483},[623],{"type":48,"value":506},{"type":43,"tag":476,"props":625,"children":626},{"style":483},[627],{"type":48,"value":511},{"type":43,"tag":476,"props":629,"children":630},{"style":483},[631],{"type":48,"value":516},{"type":43,"tag":476,"props":633,"children":635},{"class":478,"line":634},7,[636,641,645,651,655,659,664,669,673,678,682,686,690,695,699],{"type":43,"tag":476,"props":637,"children":638},{"style":483},[639],{"type":48,"value":640},"        {",{"type":43,"tag":476,"props":642,"children":643},{"style":483},[644],{"type":48,"value":553},{"type":43,"tag":476,"props":646,"children":648},{"style":647},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[649],{"type":48,"value":650},"Days",{"type":43,"tag":476,"props":652,"children":653},{"style":483},[654],{"type":48,"value":506},{"type":43,"tag":476,"props":656,"children":657},{"style":483},[658],{"type":48,"value":511},{"type":43,"tag":476,"props":660,"children":661},{"style":647},[662],{"type":48,"value":663}," 30",{"type":43,"tag":476,"props":665,"children":666},{"style":483},[667],{"type":48,"value":668},",",{"type":43,"tag":476,"props":670,"children":671},{"style":483},[672],{"type":48,"value":553},{"type":43,"tag":476,"props":674,"children":675},{"style":647},[676],{"type":48,"value":677},"StorageClass",{"type":43,"tag":476,"props":679,"children":680},{"style":483},[681],{"type":48,"value":506},{"type":43,"tag":476,"props":683,"children":684},{"style":483},[685],{"type":48,"value":511},{"type":43,"tag":476,"props":687,"children":688},{"style":483},[689],{"type":48,"value":553},{"type":43,"tag":476,"props":691,"children":692},{"style":556},[693],{"type":48,"value":694},"STANDARD_IA",{"type":43,"tag":476,"props":696,"children":697},{"style":483},[698],{"type":48,"value":506},{"type":43,"tag":476,"props":700,"children":701},{"style":483},[702],{"type":48,"value":703}," },\n",{"type":43,"tag":476,"props":705,"children":707},{"class":478,"line":706},8,[708,712,716,720,724,728,733,737,741,745,749,753,757,762,766],{"type":43,"tag":476,"props":709,"children":710},{"style":483},[711],{"type":48,"value":640},{"type":43,"tag":476,"props":713,"children":714},{"style":483},[715],{"type":48,"value":553},{"type":43,"tag":476,"props":717,"children":718},{"style":647},[719],{"type":48,"value":650},{"type":43,"tag":476,"props":721,"children":722},{"style":483},[723],{"type":48,"value":506},{"type":43,"tag":476,"props":725,"children":726},{"style":483},[727],{"type":48,"value":511},{"type":43,"tag":476,"props":729,"children":730},{"style":647},[731],{"type":48,"value":732}," 90",{"type":43,"tag":476,"props":734,"children":735},{"style":483},[736],{"type":48,"value":668},{"type":43,"tag":476,"props":738,"children":739},{"style":483},[740],{"type":48,"value":553},{"type":43,"tag":476,"props":742,"children":743},{"style":647},[744],{"type":48,"value":677},{"type":43,"tag":476,"props":746,"children":747},{"style":483},[748],{"type":48,"value":506},{"type":43,"tag":476,"props":750,"children":751},{"style":483},[752],{"type":48,"value":511},{"type":43,"tag":476,"props":754,"children":755},{"style":483},[756],{"type":48,"value":553},{"type":43,"tag":476,"props":758,"children":759},{"style":556},[760],{"type":48,"value":761},"GLACIER",{"type":43,"tag":476,"props":763,"children":764},{"style":483},[765],{"type":48,"value":506},{"type":43,"tag":476,"props":767,"children":768},{"style":483},[769],{"type":48,"value":770}," }\n",{"type":43,"tag":476,"props":772,"children":774},{"class":478,"line":773},9,[775],{"type":43,"tag":476,"props":776,"children":777},{"style":483},[778],{"type":48,"value":779},"      ],\n",{"type":43,"tag":476,"props":781,"children":783},{"class":478,"line":782},10,[784,788,793,797,801,806,810,815,819,823,827],{"type":43,"tag":476,"props":785,"children":786},{"style":483},[787],{"type":48,"value":534},{"type":43,"tag":476,"props":789,"children":790},{"style":537},[791],{"type":48,"value":792},"NoncurrentVersionExpiration",{"type":43,"tag":476,"props":794,"children":795},{"style":483},[796],{"type":48,"value":506},{"type":43,"tag":476,"props":798,"children":799},{"style":483},[800],{"type":48,"value":511},{"type":43,"tag":476,"props":802,"children":803},{"style":483},[804],{"type":48,"value":805}," {",{"type":43,"tag":476,"props":807,"children":808},{"style":483},[809],{"type":48,"value":553},{"type":43,"tag":476,"props":811,"children":812},{"style":647},[813],{"type":48,"value":814},"NoncurrentDays",{"type":43,"tag":476,"props":816,"children":817},{"style":483},[818],{"type":48,"value":506},{"type":43,"tag":476,"props":820,"children":821},{"style":483},[822],{"type":48,"value":511},{"type":43,"tag":476,"props":824,"children":825},{"style":647},[826],{"type":48,"value":732},{"type":43,"tag":476,"props":828,"children":829},{"style":483},[830],{"type":48,"value":703},{"type":43,"tag":476,"props":832,"children":834},{"class":478,"line":833},11,[835,839,844,848,852,856,860,865,869,873,878],{"type":43,"tag":476,"props":836,"children":837},{"style":483},[838],{"type":48,"value":534},{"type":43,"tag":476,"props":840,"children":841},{"style":537},[842],{"type":48,"value":843},"ExpiredObjectDeleteMarker",{"type":43,"tag":476,"props":845,"children":846},{"style":483},[847],{"type":48,"value":506},{"type":43,"tag":476,"props":849,"children":850},{"style":483},[851],{"type":48,"value":511},{"type":43,"tag":476,"props":853,"children":854},{"style":483},[855],{"type":48,"value":805},{"type":43,"tag":476,"props":857,"children":858},{"style":483},[859],{"type":48,"value":553},{"type":43,"tag":476,"props":861,"children":862},{"style":647},[863],{"type":48,"value":864},"IsEnabled",{"type":43,"tag":476,"props":866,"children":867},{"style":483},[868],{"type":48,"value":506},{"type":43,"tag":476,"props":870,"children":871},{"style":483},[872],{"type":48,"value":511},{"type":43,"tag":476,"props":874,"children":875},{"style":483},[876],{"type":48,"value":877}," true",{"type":43,"tag":476,"props":879,"children":880},{"style":483},[881],{"type":48,"value":703},{"type":43,"tag":476,"props":883,"children":885},{"class":478,"line":884},12,[886,890,895,899,903,907,911,916,920,924,929],{"type":43,"tag":476,"props":887,"children":888},{"style":483},[889],{"type":48,"value":534},{"type":43,"tag":476,"props":891,"children":892},{"style":537},[893],{"type":48,"value":894},"AbortIncompleteMultipartUpload",{"type":43,"tag":476,"props":896,"children":897},{"style":483},[898],{"type":48,"value":506},{"type":43,"tag":476,"props":900,"children":901},{"style":483},[902],{"type":48,"value":511},{"type":43,"tag":476,"props":904,"children":905},{"style":483},[906],{"type":48,"value":805},{"type":43,"tag":476,"props":908,"children":909},{"style":483},[910],{"type":48,"value":553},{"type":43,"tag":476,"props":912,"children":913},{"style":647},[914],{"type":48,"value":915},"DaysAfterInitiation",{"type":43,"tag":476,"props":917,"children":918},{"style":483},[919],{"type":48,"value":506},{"type":43,"tag":476,"props":921,"children":922},{"style":483},[923],{"type":48,"value":511},{"type":43,"tag":476,"props":925,"children":926},{"style":647},[927],{"type":48,"value":928}," 7",{"type":43,"tag":476,"props":930,"children":931},{"style":483},[932],{"type":48,"value":770},{"type":43,"tag":476,"props":934,"children":936},{"class":478,"line":935},13,[937],{"type":43,"tag":476,"props":938,"children":939},{"style":483},[940],{"type":48,"value":941},"    }\n",{"type":43,"tag":476,"props":943,"children":944},{"class":478,"line":26},[945],{"type":43,"tag":476,"props":946,"children":947},{"style":483},[948],{"type":48,"value":949},"  ]\n",{"type":43,"tag":476,"props":951,"children":952},{"class":478,"line":30},[953],{"type":43,"tag":476,"props":954,"children":955},{"style":483},[956],{"type":48,"value":957},"}\n",{"type":43,"tag":44,"props":959,"children":960},{},[961],{"type":43,"tag":145,"props":962,"children":963},{},[964],{"type":48,"value":965},"Always include these rules:",{"type":43,"tag":138,"props":967,"children":968},{},[969,979,989],{"type":43,"tag":62,"props":970,"children":971},{},[972,977],{"type":43,"tag":73,"props":973,"children":975},{"className":974},[],[976],{"type":48,"value":894},{"type":48,"value":978}," — abandoned multipart uploads silently accumulate cost",{"type":43,"tag":62,"props":980,"children":981},{},[982,987],{"type":43,"tag":73,"props":983,"children":985},{"className":984},[],[986],{"type":48,"value":792},{"type":48,"value":988}," — if versioning is enabled, old versions pile up fast",{"type":43,"tag":62,"props":990,"children":991},{},[992,997],{"type":43,"tag":73,"props":993,"children":995},{"className":994},[],[996],{"type":48,"value":843},{"type":48,"value":998}," — clean up delete markers from expired objects",{"type":43,"tag":51,"props":1000,"children":1001},{"id":19},[1002],{"type":48,"value":18},{"type":43,"tag":131,"props":1004,"children":1006},{"id":1005},"decision-hierarchy-use-in-this-order",[1007],{"type":48,"value":1008},"Decision Hierarchy (use in this order)",{"type":43,"tag":58,"props":1010,"children":1011},{},[1012,1022,1032,1042],{"type":43,"tag":62,"props":1013,"children":1014},{},[1015,1020],{"type":43,"tag":145,"props":1016,"children":1017},{},[1018],{"type":48,"value":1019},"IAM policies",{"type":48,"value":1021}," — Primary mechanism. Attach to roles\u002Fusers\u002Fgroups. Use for service-to-service access.",{"type":43,"tag":62,"props":1023,"children":1024},{},[1025,1030],{"type":43,"tag":145,"props":1026,"children":1027},{},[1028],{"type":48,"value":1029},"Bucket policies",{"type":48,"value":1031}," — Use for cross-account access, VPC endpoint restrictions, or IP-based restrictions.",{"type":43,"tag":62,"props":1033,"children":1034},{},[1035,1040],{"type":43,"tag":145,"props":1036,"children":1037},{},[1038],{"type":48,"value":1039},"S3 Access Points",{"type":48,"value":1041}," — Use when many teams\u002Fapps share a bucket with different permission needs.",{"type":43,"tag":62,"props":1043,"children":1044},{},[1045,1050],{"type":43,"tag":145,"props":1046,"children":1047},{},[1048],{"type":48,"value":1049},"ACLs",{"type":48,"value":1051}," — Do not use. Disabled by default since 2023. Legacy only.",{"type":43,"tag":131,"props":1053,"children":1055},{"id":1054},"bucket-policy-patterns",[1056],{"type":48,"value":1057},"Bucket Policy Patterns",{"type":43,"tag":465,"props":1059,"children":1061},{"className":467,"code":1060,"language":469,"meta":470,"style":470},"\u002F\u002F Cross-account access\n{\n  \"Effect\": \"Allow\",\n  \"Principal\": { \"AWS\": \"arn:aws:iam::ACCOUNT-ID:root\" },\n  \"Action\": [\"s3:GetObject\"],\n  \"Resource\": \"arn:aws:s3:::my-bucket\u002F*\"\n}\n\n\u002F\u002F Enforce HTTPS only\n{\n  \"Effect\": \"Deny\",\n  \"Principal\": \"*\",\n  \"Action\": \"s3:*\",\n  \"Resource\": [\"arn:aws:s3:::my-bucket\", \"arn:aws:s3:::my-bucket\u002F*\"],\n  \"Condition\": { \"Bool\": { \"aws:SecureTransport\": \"false\" } }\n}\n\n\u002F\u002F Restrict to VPC endpoint\n{\n  \"Effect\": \"Deny\",\n  \"Principal\": \"*\",\n  \"Action\": \"s3:*\",\n  \"Resource\": [\"arn:aws:s3:::my-bucket\", \"arn:aws:s3:::my-bucket\u002F*\"],\n  \"Condition\": { \"StringNotEquals\": { \"aws:sourceVpce\": \"vpce-1234567890\" } }\n}\n",[1062],{"type":43,"tag":73,"props":1063,"children":1064},{"__ignoreMap":470},[1065,1074,1081,1118,1175,1218,1252,1259,1268,1276,1283,1319,1355,1391,1447,1531,1539,1547,1556,1564,1600,1636,1672,1728,1811],{"type":43,"tag":476,"props":1066,"children":1067},{"class":478,"line":479},[1068],{"type":43,"tag":476,"props":1069,"children":1071},{"style":1070},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[1072],{"type":48,"value":1073},"\u002F\u002F Cross-account access\n",{"type":43,"tag":476,"props":1075,"children":1076},{"class":478,"line":489},[1077],{"type":43,"tag":476,"props":1078,"children":1079},{"style":483},[1080],{"type":48,"value":486},{"type":43,"tag":476,"props":1082,"children":1083},{"class":478,"line":519},[1084,1088,1093,1097,1101,1105,1110,1114],{"type":43,"tag":476,"props":1085,"children":1086},{"style":483},[1087],{"type":48,"value":495},{"type":43,"tag":476,"props":1089,"children":1090},{"style":498},[1091],{"type":48,"value":1092},"Effect",{"type":43,"tag":476,"props":1094,"children":1095},{"style":483},[1096],{"type":48,"value":506},{"type":43,"tag":476,"props":1098,"children":1099},{"style":483},[1100],{"type":48,"value":511},{"type":43,"tag":476,"props":1102,"children":1103},{"style":483},[1104],{"type":48,"value":553},{"type":43,"tag":476,"props":1106,"children":1107},{"style":556},[1108],{"type":48,"value":1109},"Allow",{"type":43,"tag":476,"props":1111,"children":1112},{"style":483},[1113],{"type":48,"value":506},{"type":43,"tag":476,"props":1115,"children":1116},{"style":483},[1117],{"type":48,"value":568},{"type":43,"tag":476,"props":1119,"children":1120},{"class":478,"line":528},[1121,1125,1130,1134,1138,1142,1146,1150,1154,1158,1162,1167,1171],{"type":43,"tag":476,"props":1122,"children":1123},{"style":483},[1124],{"type":48,"value":495},{"type":43,"tag":476,"props":1126,"children":1127},{"style":498},[1128],{"type":48,"value":1129},"Principal",{"type":43,"tag":476,"props":1131,"children":1132},{"style":483},[1133],{"type":48,"value":506},{"type":43,"tag":476,"props":1135,"children":1136},{"style":483},[1137],{"type":48,"value":511},{"type":43,"tag":476,"props":1139,"children":1140},{"style":483},[1141],{"type":48,"value":805},{"type":43,"tag":476,"props":1143,"children":1144},{"style":483},[1145],{"type":48,"value":553},{"type":43,"tag":476,"props":1147,"children":1148},{"style":537},[1149],{"type":48,"value":24},{"type":43,"tag":476,"props":1151,"children":1152},{"style":483},[1153],{"type":48,"value":506},{"type":43,"tag":476,"props":1155,"children":1156},{"style":483},[1157],{"type":48,"value":511},{"type":43,"tag":476,"props":1159,"children":1160},{"style":483},[1161],{"type":48,"value":553},{"type":43,"tag":476,"props":1163,"children":1164},{"style":556},[1165],{"type":48,"value":1166},"arn:aws:iam::ACCOUNT-ID:root",{"type":43,"tag":476,"props":1168,"children":1169},{"style":483},[1170],{"type":48,"value":506},{"type":43,"tag":476,"props":1172,"children":1173},{"style":483},[1174],{"type":48,"value":703},{"type":43,"tag":476,"props":1176,"children":1177},{"class":478,"line":571},[1178,1182,1187,1191,1195,1200,1204,1209,1213],{"type":43,"tag":476,"props":1179,"children":1180},{"style":483},[1181],{"type":48,"value":495},{"type":43,"tag":476,"props":1183,"children":1184},{"style":498},[1185],{"type":48,"value":1186},"Action",{"type":43,"tag":476,"props":1188,"children":1189},{"style":483},[1190],{"type":48,"value":506},{"type":43,"tag":476,"props":1192,"children":1193},{"style":483},[1194],{"type":48,"value":511},{"type":43,"tag":476,"props":1196,"children":1197},{"style":483},[1198],{"type":48,"value":1199}," [",{"type":43,"tag":476,"props":1201,"children":1202},{"style":483},[1203],{"type":48,"value":506},{"type":43,"tag":476,"props":1205,"children":1206},{"style":556},[1207],{"type":48,"value":1208},"s3:GetObject",{"type":43,"tag":476,"props":1210,"children":1211},{"style":483},[1212],{"type":48,"value":506},{"type":43,"tag":476,"props":1214,"children":1215},{"style":483},[1216],{"type":48,"value":1217},"],\n",{"type":43,"tag":476,"props":1219,"children":1220},{"class":478,"line":609},[1221,1225,1230,1234,1238,1242,1247],{"type":43,"tag":476,"props":1222,"children":1223},{"style":483},[1224],{"type":48,"value":495},{"type":43,"tag":476,"props":1226,"children":1227},{"style":498},[1228],{"type":48,"value":1229},"Resource",{"type":43,"tag":476,"props":1231,"children":1232},{"style":483},[1233],{"type":48,"value":506},{"type":43,"tag":476,"props":1235,"children":1236},{"style":483},[1237],{"type":48,"value":511},{"type":43,"tag":476,"props":1239,"children":1240},{"style":483},[1241],{"type":48,"value":553},{"type":43,"tag":476,"props":1243,"children":1244},{"style":556},[1245],{"type":48,"value":1246},"arn:aws:s3:::my-bucket\u002F*",{"type":43,"tag":476,"props":1248,"children":1249},{"style":483},[1250],{"type":48,"value":1251},"\"\n",{"type":43,"tag":476,"props":1253,"children":1254},{"class":478,"line":634},[1255],{"type":43,"tag":476,"props":1256,"children":1257},{"style":483},[1258],{"type":48,"value":957},{"type":43,"tag":476,"props":1260,"children":1261},{"class":478,"line":706},[1262],{"type":43,"tag":476,"props":1263,"children":1265},{"emptyLinePlaceholder":1264},true,[1266],{"type":48,"value":1267},"\n",{"type":43,"tag":476,"props":1269,"children":1270},{"class":478,"line":773},[1271],{"type":43,"tag":476,"props":1272,"children":1273},{"style":1070},[1274],{"type":48,"value":1275},"\u002F\u002F Enforce HTTPS only\n",{"type":43,"tag":476,"props":1277,"children":1278},{"class":478,"line":782},[1279],{"type":43,"tag":476,"props":1280,"children":1281},{"style":483},[1282],{"type":48,"value":486},{"type":43,"tag":476,"props":1284,"children":1285},{"class":478,"line":833},[1286,1290,1294,1298,1302,1306,1311,1315],{"type":43,"tag":476,"props":1287,"children":1288},{"style":483},[1289],{"type":48,"value":495},{"type":43,"tag":476,"props":1291,"children":1292},{"style":498},[1293],{"type":48,"value":1092},{"type":43,"tag":476,"props":1295,"children":1296},{"style":483},[1297],{"type":48,"value":506},{"type":43,"tag":476,"props":1299,"children":1300},{"style":483},[1301],{"type":48,"value":511},{"type":43,"tag":476,"props":1303,"children":1304},{"style":483},[1305],{"type":48,"value":553},{"type":43,"tag":476,"props":1307,"children":1308},{"style":556},[1309],{"type":48,"value":1310},"Deny",{"type":43,"tag":476,"props":1312,"children":1313},{"style":483},[1314],{"type":48,"value":506},{"type":43,"tag":476,"props":1316,"children":1317},{"style":483},[1318],{"type":48,"value":568},{"type":43,"tag":476,"props":1320,"children":1321},{"class":478,"line":884},[1322,1326,1330,1334,1338,1342,1347,1351],{"type":43,"tag":476,"props":1323,"children":1324},{"style":483},[1325],{"type":48,"value":495},{"type":43,"tag":476,"props":1327,"children":1328},{"style":498},[1329],{"type":48,"value":1129},{"type":43,"tag":476,"props":1331,"children":1332},{"style":483},[1333],{"type":48,"value":506},{"type":43,"tag":476,"props":1335,"children":1336},{"style":483},[1337],{"type":48,"value":511},{"type":43,"tag":476,"props":1339,"children":1340},{"style":483},[1341],{"type":48,"value":553},{"type":43,"tag":476,"props":1343,"children":1344},{"style":556},[1345],{"type":48,"value":1346},"*",{"type":43,"tag":476,"props":1348,"children":1349},{"style":483},[1350],{"type":48,"value":506},{"type":43,"tag":476,"props":1352,"children":1353},{"style":483},[1354],{"type":48,"value":568},{"type":43,"tag":476,"props":1356,"children":1357},{"class":478,"line":935},[1358,1362,1366,1370,1374,1378,1383,1387],{"type":43,"tag":476,"props":1359,"children":1360},{"style":483},[1361],{"type":48,"value":495},{"type":43,"tag":476,"props":1363,"children":1364},{"style":498},[1365],{"type":48,"value":1186},{"type":43,"tag":476,"props":1367,"children":1368},{"style":483},[1369],{"type":48,"value":506},{"type":43,"tag":476,"props":1371,"children":1372},{"style":483},[1373],{"type":48,"value":511},{"type":43,"tag":476,"props":1375,"children":1376},{"style":483},[1377],{"type":48,"value":553},{"type":43,"tag":476,"props":1379,"children":1380},{"style":556},[1381],{"type":48,"value":1382},"s3:*",{"type":43,"tag":476,"props":1384,"children":1385},{"style":483},[1386],{"type":48,"value":506},{"type":43,"tag":476,"props":1388,"children":1389},{"style":483},[1390],{"type":48,"value":568},{"type":43,"tag":476,"props":1392,"children":1393},{"class":478,"line":26},[1394,1398,1402,1406,1410,1414,1418,1423,1427,1431,1435,1439,1443],{"type":43,"tag":476,"props":1395,"children":1396},{"style":483},[1397],{"type":48,"value":495},{"type":43,"tag":476,"props":1399,"children":1400},{"style":498},[1401],{"type":48,"value":1229},{"type":43,"tag":476,"props":1403,"children":1404},{"style":483},[1405],{"type":48,"value":506},{"type":43,"tag":476,"props":1407,"children":1408},{"style":483},[1409],{"type":48,"value":511},{"type":43,"tag":476,"props":1411,"children":1412},{"style":483},[1413],{"type":48,"value":1199},{"type":43,"tag":476,"props":1415,"children":1416},{"style":483},[1417],{"type":48,"value":506},{"type":43,"tag":476,"props":1419,"children":1420},{"style":556},[1421],{"type":48,"value":1422},"arn:aws:s3:::my-bucket",{"type":43,"tag":476,"props":1424,"children":1425},{"style":483},[1426],{"type":48,"value":506},{"type":43,"tag":476,"props":1428,"children":1429},{"style":483},[1430],{"type":48,"value":668},{"type":43,"tag":476,"props":1432,"children":1433},{"style":483},[1434],{"type":48,"value":553},{"type":43,"tag":476,"props":1436,"children":1437},{"style":556},[1438],{"type":48,"value":1246},{"type":43,"tag":476,"props":1440,"children":1441},{"style":483},[1442],{"type":48,"value":506},{"type":43,"tag":476,"props":1444,"children":1445},{"style":483},[1446],{"type":48,"value":1217},{"type":43,"tag":476,"props":1448,"children":1449},{"class":478,"line":30},[1450,1454,1459,1463,1467,1471,1475,1480,1484,1488,1492,1496,1501,1505,1509,1513,1518,1522,1527],{"type":43,"tag":476,"props":1451,"children":1452},{"style":483},[1453],{"type":48,"value":495},{"type":43,"tag":476,"props":1455,"children":1456},{"style":498},[1457],{"type":48,"value":1458},"Condition",{"type":43,"tag":476,"props":1460,"children":1461},{"style":483},[1462],{"type":48,"value":506},{"type":43,"tag":476,"props":1464,"children":1465},{"style":483},[1466],{"type":48,"value":511},{"type":43,"tag":476,"props":1468,"children":1469},{"style":483},[1470],{"type":48,"value":805},{"type":43,"tag":476,"props":1472,"children":1473},{"style":483},[1474],{"type":48,"value":553},{"type":43,"tag":476,"props":1476,"children":1477},{"style":537},[1478],{"type":48,"value":1479},"Bool",{"type":43,"tag":476,"props":1481,"children":1482},{"style":483},[1483],{"type":48,"value":506},{"type":43,"tag":476,"props":1485,"children":1486},{"style":483},[1487],{"type":48,"value":511},{"type":43,"tag":476,"props":1489,"children":1490},{"style":483},[1491],{"type":48,"value":805},{"type":43,"tag":476,"props":1493,"children":1494},{"style":483},[1495],{"type":48,"value":553},{"type":43,"tag":476,"props":1497,"children":1498},{"style":647},[1499],{"type":48,"value":1500},"aws:SecureTransport",{"type":43,"tag":476,"props":1502,"children":1503},{"style":483},[1504],{"type":48,"value":506},{"type":43,"tag":476,"props":1506,"children":1507},{"style":483},[1508],{"type":48,"value":511},{"type":43,"tag":476,"props":1510,"children":1511},{"style":483},[1512],{"type":48,"value":553},{"type":43,"tag":476,"props":1514,"children":1515},{"style":556},[1516],{"type":48,"value":1517},"false",{"type":43,"tag":476,"props":1519,"children":1520},{"style":483},[1521],{"type":48,"value":506},{"type":43,"tag":476,"props":1523,"children":1524},{"style":483},[1525],{"type":48,"value":1526}," }",{"type":43,"tag":476,"props":1528,"children":1529},{"style":483},[1530],{"type":48,"value":770},{"type":43,"tag":476,"props":1532,"children":1534},{"class":478,"line":1533},16,[1535],{"type":43,"tag":476,"props":1536,"children":1537},{"style":483},[1538],{"type":48,"value":957},{"type":43,"tag":476,"props":1540,"children":1542},{"class":478,"line":1541},17,[1543],{"type":43,"tag":476,"props":1544,"children":1545},{"emptyLinePlaceholder":1264},[1546],{"type":48,"value":1267},{"type":43,"tag":476,"props":1548,"children":1550},{"class":478,"line":1549},18,[1551],{"type":43,"tag":476,"props":1552,"children":1553},{"style":1070},[1554],{"type":48,"value":1555},"\u002F\u002F Restrict to VPC endpoint\n",{"type":43,"tag":476,"props":1557,"children":1559},{"class":478,"line":1558},19,[1560],{"type":43,"tag":476,"props":1561,"children":1562},{"style":483},[1563],{"type":48,"value":486},{"type":43,"tag":476,"props":1565,"children":1567},{"class":478,"line":1566},20,[1568,1572,1576,1580,1584,1588,1592,1596],{"type":43,"tag":476,"props":1569,"children":1570},{"style":483},[1571],{"type":48,"value":495},{"type":43,"tag":476,"props":1573,"children":1574},{"style":498},[1575],{"type":48,"value":1092},{"type":43,"tag":476,"props":1577,"children":1578},{"style":483},[1579],{"type":48,"value":506},{"type":43,"tag":476,"props":1581,"children":1582},{"style":483},[1583],{"type":48,"value":511},{"type":43,"tag":476,"props":1585,"children":1586},{"style":483},[1587],{"type":48,"value":553},{"type":43,"tag":476,"props":1589,"children":1590},{"style":556},[1591],{"type":48,"value":1310},{"type":43,"tag":476,"props":1593,"children":1594},{"style":483},[1595],{"type":48,"value":506},{"type":43,"tag":476,"props":1597,"children":1598},{"style":483},[1599],{"type":48,"value":568},{"type":43,"tag":476,"props":1601,"children":1603},{"class":478,"line":1602},21,[1604,1608,1612,1616,1620,1624,1628,1632],{"type":43,"tag":476,"props":1605,"children":1606},{"style":483},[1607],{"type":48,"value":495},{"type":43,"tag":476,"props":1609,"children":1610},{"style":498},[1611],{"type":48,"value":1129},{"type":43,"tag":476,"props":1613,"children":1614},{"style":483},[1615],{"type":48,"value":506},{"type":43,"tag":476,"props":1617,"children":1618},{"style":483},[1619],{"type":48,"value":511},{"type":43,"tag":476,"props":1621,"children":1622},{"style":483},[1623],{"type":48,"value":553},{"type":43,"tag":476,"props":1625,"children":1626},{"style":556},[1627],{"type":48,"value":1346},{"type":43,"tag":476,"props":1629,"children":1630},{"style":483},[1631],{"type":48,"value":506},{"type":43,"tag":476,"props":1633,"children":1634},{"style":483},[1635],{"type":48,"value":568},{"type":43,"tag":476,"props":1637,"children":1639},{"class":478,"line":1638},22,[1640,1644,1648,1652,1656,1660,1664,1668],{"type":43,"tag":476,"props":1641,"children":1642},{"style":483},[1643],{"type":48,"value":495},{"type":43,"tag":476,"props":1645,"children":1646},{"style":498},[1647],{"type":48,"value":1186},{"type":43,"tag":476,"props":1649,"children":1650},{"style":483},[1651],{"type":48,"value":506},{"type":43,"tag":476,"props":1653,"children":1654},{"style":483},[1655],{"type":48,"value":511},{"type":43,"tag":476,"props":1657,"children":1658},{"style":483},[1659],{"type":48,"value":553},{"type":43,"tag":476,"props":1661,"children":1662},{"style":556},[1663],{"type":48,"value":1382},{"type":43,"tag":476,"props":1665,"children":1666},{"style":483},[1667],{"type":48,"value":506},{"type":43,"tag":476,"props":1669,"children":1670},{"style":483},[1671],{"type":48,"value":568},{"type":43,"tag":476,"props":1673,"children":1675},{"class":478,"line":1674},23,[1676,1680,1684,1688,1692,1696,1700,1704,1708,1712,1716,1720,1724],{"type":43,"tag":476,"props":1677,"children":1678},{"style":483},[1679],{"type":48,"value":495},{"type":43,"tag":476,"props":1681,"children":1682},{"style":498},[1683],{"type":48,"value":1229},{"type":43,"tag":476,"props":1685,"children":1686},{"style":483},[1687],{"type":48,"value":506},{"type":43,"tag":476,"props":1689,"children":1690},{"style":483},[1691],{"type":48,"value":511},{"type":43,"tag":476,"props":1693,"children":1694},{"style":483},[1695],{"type":48,"value":1199},{"type":43,"tag":476,"props":1697,"children":1698},{"style":483},[1699],{"type":48,"value":506},{"type":43,"tag":476,"props":1701,"children":1702},{"style":556},[1703],{"type":48,"value":1422},{"type":43,"tag":476,"props":1705,"children":1706},{"style":483},[1707],{"type":48,"value":506},{"type":43,"tag":476,"props":1709,"children":1710},{"style":483},[1711],{"type":48,"value":668},{"type":43,"tag":476,"props":1713,"children":1714},{"style":483},[1715],{"type":48,"value":553},{"type":43,"tag":476,"props":1717,"children":1718},{"style":556},[1719],{"type":48,"value":1246},{"type":43,"tag":476,"props":1721,"children":1722},{"style":483},[1723],{"type":48,"value":506},{"type":43,"tag":476,"props":1725,"children":1726},{"style":483},[1727],{"type":48,"value":1217},{"type":43,"tag":476,"props":1729,"children":1731},{"class":478,"line":1730},24,[1732,1736,1740,1744,1748,1752,1756,1761,1765,1769,1773,1777,1782,1786,1790,1794,1799,1803,1807],{"type":43,"tag":476,"props":1733,"children":1734},{"style":483},[1735],{"type":48,"value":495},{"type":43,"tag":476,"props":1737,"children":1738},{"style":498},[1739],{"type":48,"value":1458},{"type":43,"tag":476,"props":1741,"children":1742},{"style":483},[1743],{"type":48,"value":506},{"type":43,"tag":476,"props":1745,"children":1746},{"style":483},[1747],{"type":48,"value":511},{"type":43,"tag":476,"props":1749,"children":1750},{"style":483},[1751],{"type":48,"value":805},{"type":43,"tag":476,"props":1753,"children":1754},{"style":483},[1755],{"type":48,"value":553},{"type":43,"tag":476,"props":1757,"children":1758},{"style":537},[1759],{"type":48,"value":1760},"StringNotEquals",{"type":43,"tag":476,"props":1762,"children":1763},{"style":483},[1764],{"type":48,"value":506},{"type":43,"tag":476,"props":1766,"children":1767},{"style":483},[1768],{"type":48,"value":511},{"type":43,"tag":476,"props":1770,"children":1771},{"style":483},[1772],{"type":48,"value":805},{"type":43,"tag":476,"props":1774,"children":1775},{"style":483},[1776],{"type":48,"value":553},{"type":43,"tag":476,"props":1778,"children":1779},{"style":647},[1780],{"type":48,"value":1781},"aws:sourceVpce",{"type":43,"tag":476,"props":1783,"children":1784},{"style":483},[1785],{"type":48,"value":506},{"type":43,"tag":476,"props":1787,"children":1788},{"style":483},[1789],{"type":48,"value":511},{"type":43,"tag":476,"props":1791,"children":1792},{"style":483},[1793],{"type":48,"value":553},{"type":43,"tag":476,"props":1795,"children":1796},{"style":556},[1797],{"type":48,"value":1798},"vpce-1234567890",{"type":43,"tag":476,"props":1800,"children":1801},{"style":483},[1802],{"type":48,"value":506},{"type":43,"tag":476,"props":1804,"children":1805},{"style":483},[1806],{"type":48,"value":1526},{"type":43,"tag":476,"props":1808,"children":1809},{"style":483},[1810],{"type":48,"value":770},{"type":43,"tag":476,"props":1812,"children":1814},{"class":478,"line":1813},25,[1815],{"type":43,"tag":476,"props":1816,"children":1817},{"style":483},[1818],{"type":48,"value":957},{"type":43,"tag":51,"props":1820,"children":1822},{"id":1821},"performance-optimization",[1823],{"type":48,"value":1824},"Performance Optimization",{"type":43,"tag":131,"props":1826,"children":1828},{"id":1827},"request-rate",[1829],{"type":48,"value":1830},"Request Rate",{"type":43,"tag":138,"props":1832,"children":1833},{},[1834,1839,1844],{"type":43,"tag":62,"props":1835,"children":1836},{},[1837],{"type":48,"value":1838},"S3 supports 5,500 GET\u002FHEAD and 3,500 PUT\u002FPOST\u002FDELETE requests per second per prefix",{"type":43,"tag":62,"props":1840,"children":1841},{},[1842],{"type":48,"value":1843},"Distribute objects across prefixes for parallelism (S3 auto-partitions by prefix)",{"type":43,"tag":62,"props":1845,"children":1846},{},[1847],{"type":48,"value":1848},"The old advice to use random prefixes is outdated — S3 handles sequential key names fine now",{"type":43,"tag":131,"props":1850,"children":1852},{"id":1851},"large-object-uploads",[1853],{"type":48,"value":1854},"Large Object Uploads",{"type":43,"tag":138,"props":1856,"children":1857},{},[1858,1868,1888],{"type":43,"tag":62,"props":1859,"children":1860},{},[1861,1866],{"type":43,"tag":145,"props":1862,"children":1863},{},[1864],{"type":48,"value":1865},"Multipart upload",{"type":48,"value":1867},": Required for objects >5 GB, recommended for objects >100 MB",{"type":43,"tag":62,"props":1869,"children":1870},{},[1871,1872,1878,1880,1886],{"type":48,"value":435},{"type":43,"tag":73,"props":1873,"children":1875},{"className":1874},[],[1876],{"type":48,"value":1877},"aws s3 cp",{"type":48,"value":1879}," or ",{"type":43,"tag":73,"props":1881,"children":1883},{"className":1882},[],[1884],{"type":48,"value":1885},"aws s3 sync",{"type":48,"value":1887}," (they use multipart automatically)",{"type":43,"tag":62,"props":1889,"children":1890},{},[1891],{"type":48,"value":1892},"Configure part size based on object size and network conditions",{"type":43,"tag":131,"props":1894,"children":1896},{"id":1895},"s3-transfer-acceleration",[1897],{"type":48,"value":1898},"S3 Transfer Acceleration",{"type":43,"tag":138,"props":1900,"children":1901},{},[1902,1907,1918,1923],{"type":43,"tag":62,"props":1903,"children":1904},{},[1905],{"type":48,"value":1906},"Uses CloudFront edge locations to speed up long-distance transfers",{"type":43,"tag":62,"props":1908,"children":1909},{},[1910,1912],{"type":48,"value":1911},"Enable on the bucket, use the accelerate endpoint: ",{"type":43,"tag":73,"props":1913,"children":1915},{"className":1914},[],[1916],{"type":48,"value":1917},"bucket.s3-accelerate.amazonaws.com",{"type":43,"tag":62,"props":1919,"children":1920},{},[1921],{"type":48,"value":1922},"Test with the S3 Transfer Acceleration Speed Comparison tool before committing",{"type":43,"tag":62,"props":1924,"children":1925},{},[1926],{"type":48,"value":1927},"Only beneficial for uploads >1 GB over long distances (cross-continent)",{"type":43,"tag":131,"props":1929,"children":1931},{"id":1930},"s3-select-glacier-select",[1932],{"type":48,"value":1933},"S3 Select \u002F Glacier Select",{"type":43,"tag":138,"props":1935,"children":1936},{},[1937,1942,1947,1952],{"type":43,"tag":62,"props":1938,"children":1939},{},[1940],{"type":48,"value":1941},"Query CSV, JSON, or Parquet files in-place with SQL expressions",{"type":43,"tag":62,"props":1943,"children":1944},{},[1945],{"type":48,"value":1946},"Returns only the matched data — reduces data transfer and processing time",{"type":43,"tag":62,"props":1948,"children":1949},{},[1950],{"type":48,"value":1951},"Use when you need a subset of a large file and don't want to download the whole thing",{"type":43,"tag":62,"props":1953,"children":1954},{},[1955],{"type":48,"value":1956},"For complex analytics, use Athena instead",{"type":43,"tag":51,"props":1958,"children":1960},{"id":1959},"event-notifications",[1961],{"type":48,"value":1962},"Event Notifications",{"type":43,"tag":138,"props":1964,"children":1965},{},[1966,1971,1981,1986],{"type":43,"tag":62,"props":1967,"children":1968},{},[1969],{"type":48,"value":1970},"Trigger Lambda, SQS, SNS, or EventBridge on object events (create, delete, restore)",{"type":43,"tag":62,"props":1972,"children":1973},{},[1974,1979],{"type":43,"tag":145,"props":1975,"children":1976},{},[1977],{"type":48,"value":1978},"Prefer EventBridge",{"type":48,"value":1980}," for new implementations — more flexible filtering, multiple targets, replay",{"type":43,"tag":62,"props":1982,"children":1983},{},[1984],{"type":48,"value":1985},"S3 native notifications only support one destination per event type per prefix\u002Fsuffix combo",{"type":43,"tag":62,"props":1987,"children":1988},{},[1989],{"type":48,"value":1990},"EventBridge removes this limitation and adds content-based filtering",{"type":43,"tag":51,"props":1992,"children":1994},{"id":1993},"common-cli-commands",[1995],{"type":48,"value":1996},"Common CLI Commands",{"type":43,"tag":465,"props":1998,"children":2002},{"className":1999,"code":2000,"language":2001,"meta":470,"style":470},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Create bucket\naws s3 mb s3:\u002F\u002Fmy-bucket --region us-east-1\n\n# Sync local directory to S3\naws s3 sync .\u002Flocal-dir s3:\u002F\u002Fmy-bucket\u002Fprefix\u002F --delete\n\n# Copy with storage class\naws s3 cp large-file.zip s3:\u002F\u002Fmy-bucket\u002F --storage-class STANDARD_IA\n\n# Presigned URL (temporary access, 1 hour default)\naws s3 presign s3:\u002F\u002Fmy-bucket\u002Ffile.pdf --expires-in 3600\n\n# List objects with size summary\naws s3 ls s3:\u002F\u002Fmy-bucket\u002Fprefix\u002F --recursive --summarize --human-readable\n\n# Enable versioning\naws s3api put-bucket-versioning \\\n  --bucket my-bucket \\\n  --versioning-configuration Status=Enabled\n\n# Put bucket policy\naws s3api put-bucket-policy \\\n  --bucket my-bucket \\\n  --policy file:\u002F\u002Fbucket-policy.json\n\n# Check Block Public Access settings\naws s3api get-public-access-block --bucket my-bucket\n\n# Enable Transfer Acceleration\naws s3api put-bucket-accelerate-configuration \\\n  --bucket my-bucket \\\n  --accelerate-configuration Status=Enabled\n\n# S3 Select query on CSV\naws s3api select-object-content \\\n  --bucket my-bucket \\\n  --key data.csv \\\n  --expression \"SELECT s.name, s.age FROM s3object s WHERE s.age > '30'\" \\\n  --expression-type SQL \\\n  --input-serialization '{\"CSV\":{\"FileHeaderInfo\":\"USE\"}}' \\\n  --output-serialization '{\"CSV\":{}}' \\\n  output.csv\n","bash",[2003],{"type":43,"tag":73,"props":2004,"children":2005},{"__ignoreMap":470},[2006,2014,2046,2053,2061,2092,2099,2107,2143,2150,2158,2189,2196,2204,2239,2246,2254,2277,2294,2307,2314,2322,2342,2357,2370,2377,2386,2413,2421,2430,2451,2467,2480,2488,2497,2518,2534,2552,2578,2596,2624,2650],{"type":43,"tag":476,"props":2007,"children":2008},{"class":478,"line":479},[2009],{"type":43,"tag":476,"props":2010,"children":2011},{"style":1070},[2012],{"type":48,"value":2013},"# Create bucket\n",{"type":43,"tag":476,"props":2015,"children":2016},{"class":478,"line":489},[2017,2021,2026,2031,2036,2041],{"type":43,"tag":476,"props":2018,"children":2019},{"style":537},[2020],{"type":48,"value":25},{"type":43,"tag":476,"props":2022,"children":2023},{"style":556},[2024],{"type":48,"value":2025}," s3",{"type":43,"tag":476,"props":2027,"children":2028},{"style":556},[2029],{"type":48,"value":2030}," mb",{"type":43,"tag":476,"props":2032,"children":2033},{"style":556},[2034],{"type":48,"value":2035}," s3:\u002F\u002Fmy-bucket",{"type":43,"tag":476,"props":2037,"children":2038},{"style":556},[2039],{"type":48,"value":2040}," --region",{"type":43,"tag":476,"props":2042,"children":2043},{"style":556},[2044],{"type":48,"value":2045}," us-east-1\n",{"type":43,"tag":476,"props":2047,"children":2048},{"class":478,"line":519},[2049],{"type":43,"tag":476,"props":2050,"children":2051},{"emptyLinePlaceholder":1264},[2052],{"type":48,"value":1267},{"type":43,"tag":476,"props":2054,"children":2055},{"class":478,"line":528},[2056],{"type":43,"tag":476,"props":2057,"children":2058},{"style":1070},[2059],{"type":48,"value":2060},"# Sync local directory to S3\n",{"type":43,"tag":476,"props":2062,"children":2063},{"class":478,"line":571},[2064,2068,2072,2077,2082,2087],{"type":43,"tag":476,"props":2065,"children":2066},{"style":537},[2067],{"type":48,"value":25},{"type":43,"tag":476,"props":2069,"children":2070},{"style":556},[2071],{"type":48,"value":2025},{"type":43,"tag":476,"props":2073,"children":2074},{"style":556},[2075],{"type":48,"value":2076}," sync",{"type":43,"tag":476,"props":2078,"children":2079},{"style":556},[2080],{"type":48,"value":2081}," .\u002Flocal-dir",{"type":43,"tag":476,"props":2083,"children":2084},{"style":556},[2085],{"type":48,"value":2086}," s3:\u002F\u002Fmy-bucket\u002Fprefix\u002F",{"type":43,"tag":476,"props":2088,"children":2089},{"style":556},[2090],{"type":48,"value":2091}," --delete\n",{"type":43,"tag":476,"props":2093,"children":2094},{"class":478,"line":609},[2095],{"type":43,"tag":476,"props":2096,"children":2097},{"emptyLinePlaceholder":1264},[2098],{"type":48,"value":1267},{"type":43,"tag":476,"props":2100,"children":2101},{"class":478,"line":634},[2102],{"type":43,"tag":476,"props":2103,"children":2104},{"style":1070},[2105],{"type":48,"value":2106},"# Copy with storage class\n",{"type":43,"tag":476,"props":2108,"children":2109},{"class":478,"line":706},[2110,2114,2118,2123,2128,2133,2138],{"type":43,"tag":476,"props":2111,"children":2112},{"style":537},[2113],{"type":48,"value":25},{"type":43,"tag":476,"props":2115,"children":2116},{"style":556},[2117],{"type":48,"value":2025},{"type":43,"tag":476,"props":2119,"children":2120},{"style":556},[2121],{"type":48,"value":2122}," cp",{"type":43,"tag":476,"props":2124,"children":2125},{"style":556},[2126],{"type":48,"value":2127}," large-file.zip",{"type":43,"tag":476,"props":2129,"children":2130},{"style":556},[2131],{"type":48,"value":2132}," s3:\u002F\u002Fmy-bucket\u002F",{"type":43,"tag":476,"props":2134,"children":2135},{"style":556},[2136],{"type":48,"value":2137}," --storage-class",{"type":43,"tag":476,"props":2139,"children":2140},{"style":556},[2141],{"type":48,"value":2142}," STANDARD_IA\n",{"type":43,"tag":476,"props":2144,"children":2145},{"class":478,"line":773},[2146],{"type":43,"tag":476,"props":2147,"children":2148},{"emptyLinePlaceholder":1264},[2149],{"type":48,"value":1267},{"type":43,"tag":476,"props":2151,"children":2152},{"class":478,"line":782},[2153],{"type":43,"tag":476,"props":2154,"children":2155},{"style":1070},[2156],{"type":48,"value":2157},"# Presigned URL (temporary access, 1 hour default)\n",{"type":43,"tag":476,"props":2159,"children":2160},{"class":478,"line":833},[2161,2165,2169,2174,2179,2184],{"type":43,"tag":476,"props":2162,"children":2163},{"style":537},[2164],{"type":48,"value":25},{"type":43,"tag":476,"props":2166,"children":2167},{"style":556},[2168],{"type":48,"value":2025},{"type":43,"tag":476,"props":2170,"children":2171},{"style":556},[2172],{"type":48,"value":2173}," presign",{"type":43,"tag":476,"props":2175,"children":2176},{"style":556},[2177],{"type":48,"value":2178}," s3:\u002F\u002Fmy-bucket\u002Ffile.pdf",{"type":43,"tag":476,"props":2180,"children":2181},{"style":556},[2182],{"type":48,"value":2183}," --expires-in",{"type":43,"tag":476,"props":2185,"children":2186},{"style":647},[2187],{"type":48,"value":2188}," 3600\n",{"type":43,"tag":476,"props":2190,"children":2191},{"class":478,"line":884},[2192],{"type":43,"tag":476,"props":2193,"children":2194},{"emptyLinePlaceholder":1264},[2195],{"type":48,"value":1267},{"type":43,"tag":476,"props":2197,"children":2198},{"class":478,"line":935},[2199],{"type":43,"tag":476,"props":2200,"children":2201},{"style":1070},[2202],{"type":48,"value":2203},"# List objects with size summary\n",{"type":43,"tag":476,"props":2205,"children":2206},{"class":478,"line":26},[2207,2211,2215,2220,2224,2229,2234],{"type":43,"tag":476,"props":2208,"children":2209},{"style":537},[2210],{"type":48,"value":25},{"type":43,"tag":476,"props":2212,"children":2213},{"style":556},[2214],{"type":48,"value":2025},{"type":43,"tag":476,"props":2216,"children":2217},{"style":556},[2218],{"type":48,"value":2219}," ls",{"type":43,"tag":476,"props":2221,"children":2222},{"style":556},[2223],{"type":48,"value":2086},{"type":43,"tag":476,"props":2225,"children":2226},{"style":556},[2227],{"type":48,"value":2228}," --recursive",{"type":43,"tag":476,"props":2230,"children":2231},{"style":556},[2232],{"type":48,"value":2233}," --summarize",{"type":43,"tag":476,"props":2235,"children":2236},{"style":556},[2237],{"type":48,"value":2238}," --human-readable\n",{"type":43,"tag":476,"props":2240,"children":2241},{"class":478,"line":30},[2242],{"type":43,"tag":476,"props":2243,"children":2244},{"emptyLinePlaceholder":1264},[2245],{"type":48,"value":1267},{"type":43,"tag":476,"props":2247,"children":2248},{"class":478,"line":1533},[2249],{"type":43,"tag":476,"props":2250,"children":2251},{"style":1070},[2252],{"type":48,"value":2253},"# Enable versioning\n",{"type":43,"tag":476,"props":2255,"children":2256},{"class":478,"line":1541},[2257,2261,2266,2271],{"type":43,"tag":476,"props":2258,"children":2259},{"style":537},[2260],{"type":48,"value":25},{"type":43,"tag":476,"props":2262,"children":2263},{"style":556},[2264],{"type":48,"value":2265}," s3api",{"type":43,"tag":476,"props":2267,"children":2268},{"style":556},[2269],{"type":48,"value":2270}," put-bucket-versioning",{"type":43,"tag":476,"props":2272,"children":2274},{"style":2273},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[2275],{"type":48,"value":2276}," \\\n",{"type":43,"tag":476,"props":2278,"children":2279},{"class":478,"line":1549},[2280,2285,2290],{"type":43,"tag":476,"props":2281,"children":2282},{"style":556},[2283],{"type":48,"value":2284},"  --bucket",{"type":43,"tag":476,"props":2286,"children":2287},{"style":556},[2288],{"type":48,"value":2289}," my-bucket",{"type":43,"tag":476,"props":2291,"children":2292},{"style":2273},[2293],{"type":48,"value":2276},{"type":43,"tag":476,"props":2295,"children":2296},{"class":478,"line":1558},[2297,2302],{"type":43,"tag":476,"props":2298,"children":2299},{"style":556},[2300],{"type":48,"value":2301},"  --versioning-configuration",{"type":43,"tag":476,"props":2303,"children":2304},{"style":556},[2305],{"type":48,"value":2306}," Status=Enabled\n",{"type":43,"tag":476,"props":2308,"children":2309},{"class":478,"line":1566},[2310],{"type":43,"tag":476,"props":2311,"children":2312},{"emptyLinePlaceholder":1264},[2313],{"type":48,"value":1267},{"type":43,"tag":476,"props":2315,"children":2316},{"class":478,"line":1602},[2317],{"type":43,"tag":476,"props":2318,"children":2319},{"style":1070},[2320],{"type":48,"value":2321},"# Put bucket policy\n",{"type":43,"tag":476,"props":2323,"children":2324},{"class":478,"line":1638},[2325,2329,2333,2338],{"type":43,"tag":476,"props":2326,"children":2327},{"style":537},[2328],{"type":48,"value":25},{"type":43,"tag":476,"props":2330,"children":2331},{"style":556},[2332],{"type":48,"value":2265},{"type":43,"tag":476,"props":2334,"children":2335},{"style":556},[2336],{"type":48,"value":2337}," put-bucket-policy",{"type":43,"tag":476,"props":2339,"children":2340},{"style":2273},[2341],{"type":48,"value":2276},{"type":43,"tag":476,"props":2343,"children":2344},{"class":478,"line":1674},[2345,2349,2353],{"type":43,"tag":476,"props":2346,"children":2347},{"style":556},[2348],{"type":48,"value":2284},{"type":43,"tag":476,"props":2350,"children":2351},{"style":556},[2352],{"type":48,"value":2289},{"type":43,"tag":476,"props":2354,"children":2355},{"style":2273},[2356],{"type":48,"value":2276},{"type":43,"tag":476,"props":2358,"children":2359},{"class":478,"line":1730},[2360,2365],{"type":43,"tag":476,"props":2361,"children":2362},{"style":556},[2363],{"type":48,"value":2364},"  --policy",{"type":43,"tag":476,"props":2366,"children":2367},{"style":556},[2368],{"type":48,"value":2369}," file:\u002F\u002Fbucket-policy.json\n",{"type":43,"tag":476,"props":2371,"children":2372},{"class":478,"line":1813},[2373],{"type":43,"tag":476,"props":2374,"children":2375},{"emptyLinePlaceholder":1264},[2376],{"type":48,"value":1267},{"type":43,"tag":476,"props":2378,"children":2380},{"class":478,"line":2379},26,[2381],{"type":43,"tag":476,"props":2382,"children":2383},{"style":1070},[2384],{"type":48,"value":2385},"# Check Block Public Access settings\n",{"type":43,"tag":476,"props":2387,"children":2389},{"class":478,"line":2388},27,[2390,2394,2398,2403,2408],{"type":43,"tag":476,"props":2391,"children":2392},{"style":537},[2393],{"type":48,"value":25},{"type":43,"tag":476,"props":2395,"children":2396},{"style":556},[2397],{"type":48,"value":2265},{"type":43,"tag":476,"props":2399,"children":2400},{"style":556},[2401],{"type":48,"value":2402}," get-public-access-block",{"type":43,"tag":476,"props":2404,"children":2405},{"style":556},[2406],{"type":48,"value":2407}," --bucket",{"type":43,"tag":476,"props":2409,"children":2410},{"style":556},[2411],{"type":48,"value":2412}," my-bucket\n",{"type":43,"tag":476,"props":2414,"children":2416},{"class":478,"line":2415},28,[2417],{"type":43,"tag":476,"props":2418,"children":2419},{"emptyLinePlaceholder":1264},[2420],{"type":48,"value":1267},{"type":43,"tag":476,"props":2422,"children":2424},{"class":478,"line":2423},29,[2425],{"type":43,"tag":476,"props":2426,"children":2427},{"style":1070},[2428],{"type":48,"value":2429},"# Enable Transfer Acceleration\n",{"type":43,"tag":476,"props":2431,"children":2433},{"class":478,"line":2432},30,[2434,2438,2442,2447],{"type":43,"tag":476,"props":2435,"children":2436},{"style":537},[2437],{"type":48,"value":25},{"type":43,"tag":476,"props":2439,"children":2440},{"style":556},[2441],{"type":48,"value":2265},{"type":43,"tag":476,"props":2443,"children":2444},{"style":556},[2445],{"type":48,"value":2446}," put-bucket-accelerate-configuration",{"type":43,"tag":476,"props":2448,"children":2449},{"style":2273},[2450],{"type":48,"value":2276},{"type":43,"tag":476,"props":2452,"children":2454},{"class":478,"line":2453},31,[2455,2459,2463],{"type":43,"tag":476,"props":2456,"children":2457},{"style":556},[2458],{"type":48,"value":2284},{"type":43,"tag":476,"props":2460,"children":2461},{"style":556},[2462],{"type":48,"value":2289},{"type":43,"tag":476,"props":2464,"children":2465},{"style":2273},[2466],{"type":48,"value":2276},{"type":43,"tag":476,"props":2468,"children":2470},{"class":478,"line":2469},32,[2471,2476],{"type":43,"tag":476,"props":2472,"children":2473},{"style":556},[2474],{"type":48,"value":2475},"  --accelerate-configuration",{"type":43,"tag":476,"props":2477,"children":2478},{"style":556},[2479],{"type":48,"value":2306},{"type":43,"tag":476,"props":2481,"children":2483},{"class":478,"line":2482},33,[2484],{"type":43,"tag":476,"props":2485,"children":2486},{"emptyLinePlaceholder":1264},[2487],{"type":48,"value":1267},{"type":43,"tag":476,"props":2489,"children":2491},{"class":478,"line":2490},34,[2492],{"type":43,"tag":476,"props":2493,"children":2494},{"style":1070},[2495],{"type":48,"value":2496},"# S3 Select query on CSV\n",{"type":43,"tag":476,"props":2498,"children":2500},{"class":478,"line":2499},35,[2501,2505,2509,2514],{"type":43,"tag":476,"props":2502,"children":2503},{"style":537},[2504],{"type":48,"value":25},{"type":43,"tag":476,"props":2506,"children":2507},{"style":556},[2508],{"type":48,"value":2265},{"type":43,"tag":476,"props":2510,"children":2511},{"style":556},[2512],{"type":48,"value":2513}," select-object-content",{"type":43,"tag":476,"props":2515,"children":2516},{"style":2273},[2517],{"type":48,"value":2276},{"type":43,"tag":476,"props":2519,"children":2521},{"class":478,"line":2520},36,[2522,2526,2530],{"type":43,"tag":476,"props":2523,"children":2524},{"style":556},[2525],{"type":48,"value":2284},{"type":43,"tag":476,"props":2527,"children":2528},{"style":556},[2529],{"type":48,"value":2289},{"type":43,"tag":476,"props":2531,"children":2532},{"style":2273},[2533],{"type":48,"value":2276},{"type":43,"tag":476,"props":2535,"children":2537},{"class":478,"line":2536},37,[2538,2543,2548],{"type":43,"tag":476,"props":2539,"children":2540},{"style":556},[2541],{"type":48,"value":2542},"  --key",{"type":43,"tag":476,"props":2544,"children":2545},{"style":556},[2546],{"type":48,"value":2547}," data.csv",{"type":43,"tag":476,"props":2549,"children":2550},{"style":2273},[2551],{"type":48,"value":2276},{"type":43,"tag":476,"props":2553,"children":2555},{"class":478,"line":2554},38,[2556,2561,2565,2570,2574],{"type":43,"tag":476,"props":2557,"children":2558},{"style":556},[2559],{"type":48,"value":2560},"  --expression",{"type":43,"tag":476,"props":2562,"children":2563},{"style":483},[2564],{"type":48,"value":553},{"type":43,"tag":476,"props":2566,"children":2567},{"style":556},[2568],{"type":48,"value":2569},"SELECT s.name, s.age FROM s3object s WHERE s.age > '30'",{"type":43,"tag":476,"props":2571,"children":2572},{"style":483},[2573],{"type":48,"value":506},{"type":43,"tag":476,"props":2575,"children":2576},{"style":2273},[2577],{"type":48,"value":2276},{"type":43,"tag":476,"props":2579,"children":2581},{"class":478,"line":2580},39,[2582,2587,2592],{"type":43,"tag":476,"props":2583,"children":2584},{"style":556},[2585],{"type":48,"value":2586},"  --expression-type",{"type":43,"tag":476,"props":2588,"children":2589},{"style":556},[2590],{"type":48,"value":2591}," SQL",{"type":43,"tag":476,"props":2593,"children":2594},{"style":2273},[2595],{"type":48,"value":2276},{"type":43,"tag":476,"props":2597,"children":2599},{"class":478,"line":2598},40,[2600,2605,2610,2615,2620],{"type":43,"tag":476,"props":2601,"children":2602},{"style":556},[2603],{"type":48,"value":2604},"  --input-serialization",{"type":43,"tag":476,"props":2606,"children":2607},{"style":483},[2608],{"type":48,"value":2609}," '",{"type":43,"tag":476,"props":2611,"children":2612},{"style":556},[2613],{"type":48,"value":2614},"{\"CSV\":{\"FileHeaderInfo\":\"USE\"}}",{"type":43,"tag":476,"props":2616,"children":2617},{"style":483},[2618],{"type":48,"value":2619},"'",{"type":43,"tag":476,"props":2621,"children":2622},{"style":2273},[2623],{"type":48,"value":2276},{"type":43,"tag":476,"props":2625,"children":2627},{"class":478,"line":2626},41,[2628,2633,2637,2642,2646],{"type":43,"tag":476,"props":2629,"children":2630},{"style":556},[2631],{"type":48,"value":2632},"  --output-serialization",{"type":43,"tag":476,"props":2634,"children":2635},{"style":483},[2636],{"type":48,"value":2609},{"type":43,"tag":476,"props":2638,"children":2639},{"style":556},[2640],{"type":48,"value":2641},"{\"CSV\":{}}",{"type":43,"tag":476,"props":2643,"children":2644},{"style":483},[2645],{"type":48,"value":2619},{"type":43,"tag":476,"props":2647,"children":2648},{"style":2273},[2649],{"type":48,"value":2276},{"type":43,"tag":476,"props":2651,"children":2653},{"class":478,"line":2652},42,[2654],{"type":43,"tag":476,"props":2655,"children":2656},{"style":556},[2657],{"type":48,"value":2658},"  output.csv\n",{"type":43,"tag":51,"props":2660,"children":2662},{"id":2661},"anti-patterns",[2663],{"type":48,"value":2664},"Anti-Patterns",{"type":43,"tag":138,"props":2666,"children":2667},{},[2668,2678,2688,2698,2708,2718,2728,2738],{"type":43,"tag":62,"props":2669,"children":2670},{},[2671,2676],{"type":43,"tag":145,"props":2672,"children":2673},{},[2674],{"type":48,"value":2675},"Public buckets for internal data.",{"type":48,"value":2677}," Block Public Access should be on. Use presigned URLs or CloudFront with OAC for controlled access.",{"type":43,"tag":62,"props":2679,"children":2680},{},[2681,2686],{"type":43,"tag":145,"props":2682,"children":2683},{},[2684],{"type":48,"value":2685},"ACLs for access control.",{"type":48,"value":2687}," ACLs are legacy, hard to audit, and easy to misconfigure. Use IAM policies and bucket policies.",{"type":43,"tag":62,"props":2689,"children":2690},{},[2691,2696],{"type":43,"tag":145,"props":2692,"children":2693},{},[2694],{"type":48,"value":2695},"No lifecycle rules.",{"type":48,"value":2697}," Without lifecycle policies, storage costs grow unbounded. Incomplete multipart uploads are an invisible cost leak.",{"type":43,"tag":62,"props":2699,"children":2700},{},[2701,2706],{"type":43,"tag":145,"props":2702,"children":2703},{},[2704],{"type":48,"value":2705},"Single prefix for high-throughput workloads.",{"type":48,"value":2707}," Distribute objects across prefixes to maximize request rate.",{"type":43,"tag":62,"props":2709,"children":2710},{},[2711,2716],{"type":43,"tag":145,"props":2712,"children":2713},{},[2714],{"type":48,"value":2715},"Using S3 as a database.",{"type":48,"value":2717}," S3 is object storage, not a key-value store. No atomic updates, no conditional writes (except with object lock), no queries without Athena\u002FS3 Select.",{"type":43,"tag":62,"props":2719,"children":2720},{},[2721,2726],{"type":43,"tag":145,"props":2722,"children":2723},{},[2724],{"type":48,"value":2725},"Storing secrets in S3.",{"type":48,"value":2727}," Even with encryption, S3 is not designed for secrets management. Use Secrets Manager or SSM Parameter Store.",{"type":43,"tag":62,"props":2729,"children":2730},{},[2731,2736],{"type":43,"tag":145,"props":2732,"children":2733},{},[2734],{"type":48,"value":2735},"Ignoring data transfer costs.",{"type":48,"value":2737}," Cross-region and internet egress add up fast. Use CloudFront, S3 Transfer Acceleration, or VPC endpoints to reduce costs.",{"type":43,"tag":62,"props":2739,"children":2740},{},[2741,2746],{"type":43,"tag":145,"props":2742,"children":2743},{},[2744],{"type":48,"value":2745},"Not encrypting with KMS when compliance requires it.",{"type":48,"value":2747}," SSE-S3 encrypts data but provides no audit trail of key usage. Use SSE-KMS for regulated workloads.",{"type":43,"tag":2749,"props":2750,"children":2751},"style",{},[2752],{"type":48,"value":2753},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":2755,"total":2933},[2756,2775,2796,2806,2819,2832,2842,2852,2873,2888,2903,2918],{"slug":2757,"name":2757,"fn":2758,"description":2759,"org":2760,"tags":2761,"stars":2772,"repoUrl":2773,"updatedAt":2774},"agentcore-investigation","investigate Bedrock AgentCore runtime sessions","Investigate Bedrock AgentCore runtime sessions via CloudWatch Logs Insights — resolve session\u002Ftrace IDs, query OTEL spans, filter noise, build timelines. Use when debugging AgentCore agent sessions, tracing tool calls, or analyzing latency.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2762,2763,2766,2769],{"name":24,"slug":25,"type":16},{"name":2764,"slug":2765,"type":16},"Debugging","debugging",{"name":2767,"slug":2768,"type":16},"Logs","logs",{"name":2770,"slug":2771,"type":16},"Observability","observability",9427,"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fmcp","2026-07-12T08:37:22.601527",{"slug":2776,"name":2777,"fn":2778,"description":2779,"org":2780,"tags":2781,"stars":2772,"repoUrl":2773,"updatedAt":2795},"amazon-aurora-dsql","amazon aurora dsql","build applications with Aurora DSQL","Build with Aurora DSQL — manage schemas, execute queries, handle migrations, diagnose query plans, load data, and develop applications with a serverless, distributed SQL database. Covers IAM auth, multi-tenant patterns, MySQL-to-DSQL and PostgreSQL-to-DSQL schema conversion, FK replacement code generation, OCC retry patterns, ORM migration (Django\u002FHibernate\u002FRails), DDL operations, query plan explainability, SQL compatibility validation, and bulk data loading. Triggers on phrases like: DSQL, Aurora DSQL, create DSQL table, DSQL schema, migrate to DSQL, distributed SQL database, serverless PostgreSQL-compatible database, DSQL query plan, DSQL EXPLAIN ANALYZE, why is my DSQL query slow, DSQL foreign key, DSQL OCC retry, DSQL multi-region, load into DSQL, load CSV into DSQL, bulk load DSQL, aurora-dsql-loader.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2782,2785,2786,2789,2792],{"name":2783,"slug":2784,"type":16},"Aurora","aurora",{"name":24,"slug":25,"type":16},{"name":2787,"slug":2788,"type":16},"Database","database",{"name":2790,"slug":2791,"type":16},"Serverless","serverless",{"name":2793,"slug":2794,"type":16},"SQL","sql","2026-07-12T08:36:45.053393",{"slug":2797,"name":2798,"fn":2778,"description":2779,"org":2799,"tags":2800,"stars":2772,"repoUrl":2773,"updatedAt":2805},"aurora-dsql","aurora dsql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2801,2802,2803,2804],{"name":24,"slug":25,"type":16},{"name":2787,"slug":2788,"type":16},{"name":2790,"slug":2791,"type":16},{"name":2793,"slug":2794,"type":16},"2026-07-12T08:36:42.694299",{"slug":2807,"name":2808,"fn":2778,"description":2779,"org":2809,"tags":2810,"stars":2772,"repoUrl":2773,"updatedAt":2818},"aws-dsql","aws dsql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2811,2812,2813,2816,2817],{"name":24,"slug":25,"type":16},{"name":2787,"slug":2788,"type":16},{"name":2814,"slug":2815,"type":16},"Migration","migration",{"name":2790,"slug":2791,"type":16},{"name":2793,"slug":2794,"type":16},"2026-07-12T08:36:38.584057",{"slug":2820,"name":2821,"fn":2778,"description":2779,"org":2822,"tags":2823,"stars":2772,"repoUrl":2773,"updatedAt":2831},"distributed-postgres","distributed postgres",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2824,2825,2826,2829,2830],{"name":24,"slug":25,"type":16},{"name":2787,"slug":2788,"type":16},{"name":2827,"slug":2828,"type":16},"PostgreSQL","postgresql",{"name":2790,"slug":2791,"type":16},{"name":2793,"slug":2794,"type":16},"2026-07-12T08:36:46.530743",{"slug":2833,"name":2834,"fn":2778,"description":2779,"org":2835,"tags":2836,"stars":2772,"repoUrl":2773,"updatedAt":2841},"distributed-sql","distributed sql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2837,2838,2839,2840],{"name":24,"slug":25,"type":16},{"name":2787,"slug":2788,"type":16},{"name":2790,"slug":2791,"type":16},{"name":2793,"slug":2794,"type":16},"2026-07-12T08:36:48.104182",{"slug":2843,"name":2843,"fn":2778,"description":2779,"org":2844,"tags":2845,"stars":2772,"repoUrl":2773,"updatedAt":2851},"dsql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2846,2847,2848,2849,2850],{"name":24,"slug":25,"type":16},{"name":2787,"slug":2788,"type":16},{"name":2814,"slug":2815,"type":16},{"name":2790,"slug":2791,"type":16},{"name":2793,"slug":2794,"type":16},"2026-07-12T08:36:36.374512",{"slug":2853,"name":2853,"fn":2854,"description":2855,"org":2856,"tags":2857,"stars":2870,"repoUrl":2871,"updatedAt":2872},"cost-efficiency-analyzer","analyze cost efficiency and expenses","Analyzes cost structure, cost efficiency, and expense management from P&L data. Use when the user asks about costs, expenses, COGS, operating expenses, cost ratios, cost control, spending efficiency, margin compression from cost side, or wants to understand where money is going. Also use for \"are we spending too much\", \"cost breakdown\", \"expense analysis\", or \"how efficient are our operations\". NOT for revenue or top-line analysis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2858,2861,2864,2867],{"name":2859,"slug":2860,"type":16},"Accounting","accounting",{"name":2862,"slug":2863,"type":16},"Analytics","analytics",{"name":2865,"slug":2866,"type":16},"Cost Optimization","cost-optimization",{"name":2868,"slug":2869,"type":16},"Finance","finance",3176,"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fagentcore-samples","2026-07-12T08:40:03.29555",{"slug":2874,"name":2874,"fn":2875,"description":2876,"org":2877,"tags":2878,"stars":2870,"repoUrl":2871,"updatedAt":2887},"executive-financial-briefing","generate executive financial briefings","Generates a concise executive-level financial briefing or summary suitable for a CEO, CFO, or board presentation. Use when the user asks for a summary, briefing, executive summary, board update, financial overview, financial health check, or \"how is the business doing\". Covers the full P&L picture in one page. Also use for \"give me the highlights\", \"what do I need to know\", or \"quick financial update\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2879,2880,2881,2884],{"name":24,"slug":25,"type":16},{"name":2868,"slug":2869,"type":16},{"name":2882,"slug":2883,"type":16},"Management","management",{"name":2885,"slug":2886,"type":16},"Reporting","reporting","2026-07-12T08:40:02.066471",{"slug":2889,"name":2889,"fn":2890,"description":2891,"org":2892,"tags":2893,"stars":2870,"repoUrl":2871,"updatedAt":2902},"multi-quarter-trend-analysis","analyze multi-quarter financial trends","Analyzes financial trends across multiple quarters by comparing P&L metrics over time. Use when the user wants to see trends, patterns, trajectories, or directional movement across 3 or more quarters. Also use for \"how are we trending\", \"show me the trend\", \"track performance over time\", \"quarter over quarter comparison across all quarters\", or any multi-period longitudinal analysis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2894,2895,2896,2899],{"name":2862,"slug":2863,"type":16},{"name":2868,"slug":2869,"type":16},{"name":2897,"slug":2898,"type":16},"Financial Statements","financial-statements",{"name":2900,"slug":2901,"type":16},"Variance Analysis","variance-analysis","2026-07-12T08:40:00.79141",{"slug":2904,"name":2904,"fn":2905,"description":2906,"org":2907,"tags":2908,"stars":2870,"repoUrl":2871,"updatedAt":2917},"pdf","process and manipulate PDF documents","Use this skill whenever the user wants to do anything with PDF files. This includes reading or extracting text\u002Ftables from PDFs, combining or merging multiple PDFs into one, splitting PDFs apart, rotating pages, adding watermarks, creating new PDFs, filling PDF forms, encrypting\u002Fdecrypting PDFs, extracting images, and OCR on scanned PDFs to make them searchable. If the user mentions a .pdf file or asks to produce one, use this skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2909,2912,2915],{"name":2910,"slug":2911,"type":16},"Automation","automation",{"name":2913,"slug":2914,"type":16},"Documents","documents",{"name":2916,"slug":2904,"type":16},"PDF","2026-07-12T08:41:44.135656",{"slug":2919,"name":2919,"fn":2920,"description":2921,"org":2922,"tags":2923,"stars":2870,"repoUrl":2871,"updatedAt":2932},"quarterly-kpi-calculator","calculate quarterly financial KPIs","Calculates quarterly financial KPIs from P&L data. P&L figures can be provided directly by the user or fetched from the financial data MCP server. Use when the user wants KPI calculations such as Gross Margin %, EBITDA Margin %, Operating Expense Ratio, or Revenue Growth % QoQ. Also use for quarterly performance review, P&L analysis, or interpreting financial ratios against benchmarks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2924,2925,2928,2929],{"name":2859,"slug":2860,"type":16},{"name":2926,"slug":2927,"type":16},"Data Analysis","data-analysis",{"name":2868,"slug":2869,"type":16},{"name":2930,"slug":2931,"type":16},"KPI","kpi","2026-07-12T08:39:59.54971",150,{"items":2935,"total":2652},[2936,2950,2965,2977,2989,3002,3015],{"slug":2937,"name":2937,"fn":2938,"description":2939,"org":2940,"tags":2941,"stars":26,"repoUrl":27,"updatedAt":2949},"agentcore","design Amazon Bedrock AgentCore architectures","Deep-dive into Amazon Bedrock AgentCore platform design, service selection, deployment, and production operations. This skill should be used when the user asks to \"design an AgentCore architecture\", \"deploy agents on AgentCore\", \"configure AgentCore Runtime\", \"set up AgentCore Memory\", \"use AgentCore Gateway\", \"configure AgentCore Identity\", \"set up AgentCore Policy\", \"plan agent observability\", \"evaluate agent quality\", \"move agent PoC to production\", or mentions AgentCore, AgentCore Runtime, AgentCore Memory, AgentCore Gateway, AgentCore Identity, AgentCore Policy, AgentCore Evaluations, AgentCore Code Interpreter, AgentCore Browser, A2A protocol, or multi-agent orchestration on AWS.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2942,2945,2948],{"name":2943,"slug":2944,"type":16},"Agents","agents",{"name":2946,"slug":2947,"type":16},"Architecture","architecture",{"name":24,"slug":25,"type":16},"2026-07-12T08:40:11.108951",{"slug":2951,"name":2951,"fn":2952,"description":2953,"org":2954,"tags":2955,"stars":26,"repoUrl":27,"updatedAt":2964},"aidlc-lite","develop AI applications on AWS","Lightweight AI development lifecycle for building on AWS. A simplified take on the AI-DLC philosophy — think together, then build fast. Acts as a design partner that understands intent, proposes alternatives with trade-offs, and ships working code without the ceremony of full requirements\u002Fdesign\u002Fspec documents. Use when a founder says \"build X on AWS\", \"add Y to my stack\", \"scaffold an API\", or \"write the CDK for Z\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2956,2957,2960,2961],{"name":2943,"slug":2944,"type":16},{"name":2958,"slug":2959,"type":16},"AI Infrastructure","ai-infrastructure",{"name":24,"slug":25,"type":16},{"name":2962,"slug":2963,"type":16},"Engineering","engineering","2026-07-12T08:40:40.204103",{"slug":2966,"name":2966,"fn":2967,"description":2968,"org":2969,"tags":2970,"stars":26,"repoUrl":27,"updatedAt":2976},"architect-for-startups","advise on AWS architecture for startups","AWS architecture advisor tailored specifically for startups. Alters AWS architecture recommendations based on startup stage (pre-revenue through Series B+), team size, runway, and credits. ALWAYS use when asked about building on AWS, choosing services, planning infrastructure, managing costs with credits, or preparing architecture for fundraising.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2971,2972,2973],{"name":2946,"slug":2947,"type":16},{"name":24,"slug":25,"type":16},{"name":2974,"slug":2975,"type":16},"Strategy","strategy","2026-07-12T08:41:33.557354",{"slug":2978,"name":2978,"fn":2979,"description":2980,"org":2981,"tags":2982,"stars":26,"repoUrl":27,"updatedAt":2988},"aws-architect","design and review AWS architectures","Design and review AWS architectures following Well-Architected Framework principles. Use when planning new infrastructure, reviewing existing architectures, evaluating trade-offs between AWS services, or when asked about AWS best practices.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2983,2984,2985],{"name":2946,"slug":2947,"type":16},{"name":24,"slug":25,"type":16},{"name":2986,"slug":2987,"type":16},"Infrastructure","infrastructure","2026-07-12T08:40:57.630086",{"slug":2990,"name":2990,"fn":2991,"description":2992,"org":2993,"tags":2994,"stars":26,"repoUrl":27,"updatedAt":3001},"aws-compare","compare AWS architecture options","Compare 2-3 AWS architecture options side-by-side across cost, complexity, performance, security, and operational burden. Use when evaluating trade-offs between approaches or when the user is deciding between options.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2995,2996,2997,2998],{"name":2946,"slug":2947,"type":16},{"name":24,"slug":25,"type":16},{"name":2865,"slug":2866,"type":16},{"name":2999,"slug":3000,"type":16},"Security","security","2026-07-12T08:40:23.960287",{"slug":3003,"name":3003,"fn":3004,"description":3005,"org":3006,"tags":3007,"stars":26,"repoUrl":27,"updatedAt":3014},"aws-debug","debug AWS infrastructure and deployment failures","Debug AWS infrastructure issues, deployment failures, and runtime errors. Use when troubleshooting CloudFormation stack failures, Lambda errors, ECS task failures, permission issues, networking problems, or any AWS service misbehavior.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3008,3009,3010,3013],{"name":24,"slug":25,"type":16},{"name":2764,"slug":2765,"type":16},{"name":3011,"slug":3012,"type":16},"Deployment","deployment",{"name":2770,"slug":2771,"type":16},"2026-07-12T08:40:16.767171",{"slug":3016,"name":3016,"fn":3017,"description":3018,"org":3019,"tags":3020,"stars":26,"repoUrl":27,"updatedAt":3029},"aws-diagram","generate AWS architecture diagrams","Generate AWS architecture diagrams in Mermaid or ASCII from a description, existing IaC, or conversation context. Use when the user wants to visualize an architecture.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3021,3022,3023,3026],{"name":2946,"slug":2947,"type":16},{"name":24,"slug":25,"type":16},{"name":3024,"slug":3025,"type":16},"Diagrams","diagrams",{"name":3027,"slug":3028,"type":16},"Visualization","visualization","2026-07-12T08:40:43.26341"]