CINXE.COM
Introduction - Laravel Vapor
<!DOCTYPE html><html lang="en" class="dark"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><link rel="apple-touch-icon" type="image/png" sizes="180x180" href="https://mintlify.s3-us-west-1.amazonaws.com/vapor/_generated/favicon/apple-touch-icon.png?v=3"/><link rel="icon" type="image/png" sizes="32x32" href="https://mintlify.s3-us-west-1.amazonaws.com/vapor/_generated/favicon/favicon-32x32.png?v=3"/><link rel="icon" type="image/png" sizes="16x16" href="https://mintlify.s3-us-west-1.amazonaws.com/vapor/_generated/favicon/favicon-16x16.png?v=3"/><link rel="shortcut icon" type="image/x-icon" href="https://mintlify.s3-us-west-1.amazonaws.com/vapor/_generated/favicon/favicon.ico?v=3"/><meta name="msapplication-config" content="https://mintlify.s3-us-west-1.amazonaws.com/vapor/_generated/favicon/browserconfig.xml?v=3"/><meta name="apple-mobile-web-app-title" content="Laravel Vapor"/><meta name="application-name" content="Laravel Vapor"/><meta name="msapplication-TileColor" content="#00B1E4"/><meta name="theme-color" content="#ffffff"/><meta name="generator" content="Mintlify"/><link rel="sitemap" type="application/xml" href="/sitemap.xml"/><meta name="charset" content="utf-8"/><meta name="og:type" content="website"/><meta name="og:site_name" content="Laravel Vapor"/><meta name="twitter:card" content="summary_large_image"/><meta name="og:title" content="Introduction - Laravel Vapor"/><meta name="twitter:title" content="Introduction - Laravel Vapor"/><meta name="og:description" content="Manage your Laravel infrastructure on Vapor and fall in love with the scalability and simplicity of serverless."/><meta name="description" content="Manage your Laravel infrastructure on Vapor and fall in love with the scalability and simplicity of serverless."/><meta property="og:image" content="https://vapor.mintlify.app/_next/image?url=%2Fapi%2Fog%3Fdivision%3DDocumentation%26title%3DIntroduction%26description%3DManage%2Byour%2BLaravel%2Binfrastructure%2Bon%2BVapor%2Band%2Bfall%2Bin%2Blove%2Bwith%2Bthe%2Bscalability%2Band%2Bsimplicity%2Bof%2Bserverless.%26logoLight%3Dhttps%253A%252F%252Fmintlify.s3.us-west-1.amazonaws.com%252Fvapor%252Flogo%252Flight.svg%26logoDark%3Dhttps%253A%252F%252Fmintlify.s3.us-west-1.amazonaws.com%252Fvapor%252Flogo%252Fdark.svg%26primaryColor%3D%252300B1E4%26lightColor%3D%252300B1E4%26darkColor%3D%252300B1E4&w=1200&q=100"/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="630"/><meta property="twitter:image" content="https://vapor.mintlify.app/_next/image?url=%2Fapi%2Fog%3Fdivision%3DDocumentation%26title%3DIntroduction%26description%3DManage%2Byour%2BLaravel%2Binfrastructure%2Bon%2BVapor%2Band%2Bfall%2Bin%2Blove%2Bwith%2Bthe%2Bscalability%2Band%2Bsimplicity%2Bof%2Bserverless.%26logoLight%3Dhttps%253A%252F%252Fmintlify.s3.us-west-1.amazonaws.com%252Fvapor%252Flogo%252Flight.svg%26logoDark%3Dhttps%253A%252F%252Fmintlify.s3.us-west-1.amazonaws.com%252Fvapor%252Flogo%252Fdark.svg%26primaryColor%3D%252300B1E4%26lightColor%3D%252300B1E4%26darkColor%3D%252300B1E4&w=1200&q=100"/><meta property="twitter:image:width" content="1200"/><meta property="twitter:image:height" content="630"/><title>Introduction - Laravel Vapor</title><meta name="og:url" content="/introduction"/><link rel="canonical" href="/introduction"/><meta name="next-head-count" content="30"/><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.0/dist/katex.min.css" integrity="sha384-Xi8rHCmBmhbuyyhbI88391ZKP2dmfnOl4rT9ZfRI7mLTdk1wblIUnrIq35nqwEvC" crossorigin="anonymous"/><link rel="preload" href="/_next/static/media/a34f9d1faa5f3315-s.p.woff2" as="font" type="font/woff2" crossorigin="anonymous" data-next-font="size-adjust"/><link rel="preload" href="/_next/static/media/bb3ef058b751a6ad-s.p.woff2" as="font" type="font/woff2" crossorigin="anonymous" data-next-font="size-adjust"/><script id="font" data-nscript="beforeInteractive"> document.documentElement.style.setProperty('--font-family-headings-custom', 'Figtree'); document.documentElement.style.setProperty('--font-weight-headings-custom', ''); document.documentElement.style.setProperty('--font-family-body-custom', 'Figtree'); document.documentElement.style.setProperty('--font-weight-body-custom', ''); </script><script id="mode-toggle" data-nscript="beforeInteractive"> try { if (localStorage.isDarkMode === 'true') { document.documentElement.classList.add('dark'); } else if (localStorage.isDarkMode === 'false') { document.documentElement.classList.remove('dark'); } else if ((true && !('isDarkMode' in localStorage) && window.matchMedia('(prefers-color-scheme: dark)').matches) || false) { document.documentElement.classList.add('dark'); } else { document.documentElement.classList.remove('dark'); } } catch (_) {}</script><link rel="preload" href="/_next/static/css/92091111a37d343b.css" as="style"/><link rel="stylesheet" href="/_next/static/css/92091111a37d343b.css" data-n-g=""/><link rel="preload" href="/_next/static/css/8c76fb7d3768dfe7.css" as="style"/><link rel="stylesheet" href="/_next/static/css/8c76fb7d3768dfe7.css" data-n-p=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-ac680463e3e63367.js" defer=""></script><script src="/_next/static/chunks/framework-9ae01a5f4ade81f5.js" defer=""></script><script src="/_next/static/chunks/main-2103a0a044dd2f7a.js" defer=""></script><script src="/_next/static/chunks/pages/_app-a35d1e9cf048320e.js" defer=""></script><script src="/_next/static/chunks/2edb282b-a83f7ffd007bccf0.js" defer=""></script><script src="/_next/static/chunks/e893f787-f6a1094a35763a0d.js" defer=""></script><script src="/_next/static/chunks/086d643d-6f7196a364073d16.js" defer=""></script><script src="/_next/static/chunks/4005-67d7b51bc8183c30.js" defer=""></script><script src="/_next/static/chunks/5094-ca754b5bede84b22.js" defer=""></script><script src="/_next/static/chunks/9099-c02973bdd0433c79.js" defer=""></script><script src="/_next/static/chunks/7437-1b2111a84f74c921.js" defer=""></script><script src="/_next/static/chunks/pages/_sites/%5Bsubdomain%5D/%5B%5B...slug%5D%5D-5a93eb7b067ece06.js" defer=""></script><script src="/_next/static/W1amaoDhZ9U6AUK2vdaeu/_buildManifest.js" defer=""></script><script src="/_next/static/W1amaoDhZ9U6AUK2vdaeu/_ssgManifest.js" defer=""></script><style id="__jsx-4145347147">:root{--font-inter:'__Inter_e5ab12', '__Inter_Fallback_e5ab12';--font-jetbrains-mono:'__JetBrains_Mono_3c557b', '__JetBrains_Mono_Fallback_3c557b'}</style></head><div id="__next"><main class="jsx-4145347147"><link href="https://fonts.googleapis.com/css2?family=Figtree:wght@400;500;600;700;800&display=swap" rel="stylesheet"/><link href="https://fonts.googleapis.com/css2?family=Figtree:wght@400;500;600;700;800&display=swap" rel="stylesheet"/><style>:root { --primary: 0 177 228; --primary-light: 0 177 228; --primary-dark: 0 177 228; --background-light: 255 255 255; --background-dark: 9 12 15; --gray-50: 242 248 249; --gray-100: 238 243 244; --gray-200: 222 227 229; --gray-300: 206 211 212; --gray-400: 158 163 165; --gray-500: 111 117 118; --gray-600: 79 85 86; --gray-700: 62 67 69; --gray-800: 37 42 44; --gray-900: 22 28 29; --gray-950: 10 15 17; }</style><style>h1, h2, h3, h4 { font-weight: 600 !important; } .codeblock-dark div:not(:last-child) { color: #fafafa; } #footer > div > div:nth-of-type(n+2) { display: none; }</style><span class="fixed inset-0 bg-background-light dark:bg-background-dark -z-10"></span><span class="block absolute dark:hidden inset-0 overflow-hidden h-[64rem]" style="background:radial-gradient(49.63% 57.02% at 58.99% -7.2%, rgba(0, 177, 228, 0.1) 39.4%, rgba(0, 0, 0, 0) 100%)"><svg width="790" height="640" viewBox="0 0 790 718" fill="none" xmlns="http://www.w3.org/2000/svg" class="absolute pl-48 -top-16 left-1/2 -translate-x-1/2"><mask id="mask-light" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="0" y="-143" width="936" height="861"><ellipse cx="468.373" cy="287.536" rx="467.627" ry="430.464" fill="url(#radial-light)"></ellipse></mask><g mask="url(#mask-light)" class="fill-primary dark:fill-primary-light"><path d="M506.419 281.855L446.417 297.931V359.885L506.419 343.71V281.855Z" fill-opacity="0.05"></path><path d="M384.768 188.752L324.766 204.828V266.781L384.768 250.606V188.752Z" fill-opacity="0.05"></path><path d="M263.625 347.002L203.623 363.078V425.031L263.625 408.856V347.002Z" fill-opacity="0.05"></path><path d="M385.089 440.096L325.087 456.172V518.125L385.089 501.95V440.096Z" fill-opacity="0.05"></path><path d="M627.756 123.527L567.754 139.603V201.557L627.756 185.382V123.527Z" fill-opacity="0.05"></path><path d="M445.32 46.918L385.318 62.994V124.947L445.32 108.772V46.918Z" fill-opacity="0.05"></path><path d="M749.192 279.59L689.19 295.666V357.619L749.192 341.444V279.59Z" fill-opacity="0.05"></path><path d="M627.905 437.912L567.903 453.988V515.941L627.905 499.766V437.912Z" fill-opacity="0.05"></path><path d="M202.491 175.656L142.489 191.732V253.685L202.491 237.511V175.656Z" fill-opacity="0.05"></path><path fill-rule="evenodd" clip-rule="evenodd" d="M446.54 -79.1784L949.537 -213.956L949.278 -214.922L446.54 -80.2137V-87.9997H445.54V-79.9457L385.832 -63.947V-87.9997H384.832V-63.679L325.124 -47.6803V-87.9997H324.124V-47.4124L264.416 -31.4137V-87.9997H263.416V-31.1457L203.708 -15.147L203.708 -87.9997H202.708L202.708 -14.8791L143 1.11966L143 -87.9997H142L142 1.3876L-80.8521 61.1006L-80.5932 62.0666L142 2.42287V64.2363L-65.1402 119.739L-64.8814 120.705L142 65.2715L142 127.085L-49.4278 178.378L-49.1689 179.344L142 128.12V189.936L-33.7155 237.019L-33.4566 237.985L142 190.971V252.787L-18.0025 295.659L-17.7437 296.625L142 253.822V315.635L-2.29068 354.298L-2.03186 355.264L142 316.671V378.484L13.4218 412.937L13.6806 413.903L142 379.519V441.335L29.1341 471.577L29.3929 472.543L142 442.37V504.184L44.8466 530.216L45.1054 531.182L142 505.219V567.032L60.5591 588.855L60.8179 589.82L142 568.068V629.881L76.2715 647.493L76.5303 648.459L142 630.917V692.732L91.9838 706.134L92.2426 707.1L142 693.767V698.42H143V693.499L202.708 677.501V698.42H203.708V677.233L263.416 661.234V698.42H264.416V660.966L324.124 644.967V698.42H325.124V644.699L384.832 628.701V690.514L107.696 764.773L107.954 765.738L384.832 691.549V698.42H385.832V691.281L445.54 675.283V698.42H446.54V675.015L506.248 659.016V698.42H507.248V658.748L566.956 642.749V698.42H567.956V642.481L627.664 626.483V688.298L123.409 823.413L123.667 824.379L627.664 689.334V698.42H628.664V689.066L688.372 673.067V698.42H689.372V672.799L749.08 656.8V698.42H750.08V656.532L809.788 640.534V698.42H810.788V640.266L870.496 624.267V698.42H871.496V623.999L931.204 608V698.42H932.204V607.732L1153.8 548.357L1153.54 547.391L932.204 606.697V544.881L1138.08 489.716L1137.83 488.75L932.204 543.846V482.033L1122.37 431.077L1122.11 430.111L932.204 480.997V419.182L1106.66 372.437L1106.4 371.471L932.204 418.147V356.333L1090.95 313.798L1090.69 312.832L932.204 355.298V293.484L1075.24 255.159L1074.98 254.193L932.204 292.449V230.636L1059.52 196.521L1059.26 195.555L932.204 229.6V167.785L1043.81 137.88L1043.55 136.914L932.204 166.75V104.936L1028.1 79.2413L1027.84 78.2754L932.204 103.901V42.0874L1012.39 20.6027L1012.13 19.6367L932.204 41.0522V-20.7634L996.674 -38.0379L996.415 -39.0039L932.204 -21.7987L932.204 -83.6142L980.961 -96.6786L980.702 -97.6445L932.204 -84.6495V-87.9997H931.204V-84.3815L871.496 -68.3828V-87.9997H870.496V-68.1149L810.788 -52.1161V-87.9997H809.788V-51.8482L750.08 -35.8495V-87.9997H749.08V-35.5815L689.372 -19.5828L689.372 -81.3963L965.249 -155.317L964.99 -156.283L689.372 -82.4316V-87.9997H688.372V-82.1637L628.664 -66.1649V-87.9997H627.664V-65.897L567.956 -49.8983V-87.9997H566.956V-49.6303L507.248 -33.6316V-87.9997H506.248V-33.3637L446.54 -17.365L446.54 -79.1784ZM445.54 -78.9104L385.832 -62.9117L385.832 -1.09831L445.54 -17.097L445.54 -78.9104ZM384.832 -62.6438L325.124 -46.6451L325.124 15.1684L384.832 -0.830353L384.832 -62.6438ZM324.124 -46.3771L264.416 -30.3784L264.416 31.435L324.124 15.4363L324.124 -46.3771ZM263.416 -30.1104L203.708 -14.1117V47.7017L263.416 31.703L263.416 -30.1104ZM202.708 -13.8438L143 2.15492V63.9683L202.708 47.9696V-13.8438ZM628.664 -65.1297L688.372 -81.1284L688.372 -19.3149L628.664 -3.31616L628.664 -65.1297ZM567.956 -48.863L627.664 -64.8617L627.664 -3.04822L567.956 12.9505L567.956 -48.863ZM507.248 -32.5964L566.956 -48.5951L566.956 13.2184L507.248 29.2172L507.248 -32.5964ZM446.54 -16.3297L506.248 -32.3284L506.248 29.4851L446.54 45.4838V-16.3297ZM385.832 -0.0630493L445.54 -16.0618V45.7517L385.832 61.7505V-0.0630493ZM325.124 16.2036L384.832 0.20491V62.0184L325.124 78.0171V16.2036ZM264.416 32.4703L324.124 16.4716V78.2851L264.416 94.2838V32.4703ZM203.708 48.7369L263.416 32.7382V94.5517L203.708 110.55V48.7369ZM143 65.0036L202.708 49.0049V110.818L143 126.817L143 65.0036ZM931.204 -83.3463L871.496 -67.3475L871.496 -5.53207L931.204 -21.5308L931.204 -83.3463ZM870.496 -67.0796L810.788 -51.0809L810.788 10.7346L870.496 -5.26411L870.496 -67.0796ZM809.788 -50.8129L750.08 -34.8142L750.08 27.0013L809.788 11.0025L809.788 -50.8129ZM749.08 -34.5463L689.372 -18.5476V43.2679L749.08 27.2692L749.08 -34.5463ZM688.372 -18.2796L628.664 -2.2809V59.5346L688.372 43.5359V-18.2796ZM627.664 -2.01295L567.956 13.9858V75.8012L627.664 59.8025V-2.01295ZM566.956 14.2537L507.248 30.2524V92.0679L566.956 76.0692V14.2537ZM506.248 30.5204L446.54 46.5191V108.335L506.248 92.3358V30.5204ZM445.54 46.787L385.832 62.7857V124.601L445.54 108.603V46.787ZM384.832 63.0537L325.124 79.0524V140.868L384.832 124.869V63.0537ZM324.124 79.3203L264.416 95.319V157.135L324.124 141.136V79.3203ZM263.416 95.587L203.708 111.586V173.401L263.416 157.402V95.587ZM202.708 111.854L143 127.852V189.668L202.708 173.669V111.854ZM871.496 -4.49677L931.204 -20.4955V41.3201L871.496 57.3188V-4.49677ZM810.788 11.7699L870.496 -4.22882V57.5868L810.788 73.5855V11.7699ZM750.08 28.0365L809.788 12.0378V73.8534L750.08 89.8521V28.0365ZM689.372 44.3032L749.08 28.3045V90.1201L689.372 106.119V44.3032ZM628.664 60.5699L688.372 44.5711V106.387L628.664 122.385V60.5699ZM567.956 76.8365L627.664 60.8378V122.653L567.956 138.652V76.8365ZM507.248 93.1032L566.956 77.1045V138.92L507.248 154.919V93.1032ZM446.54 109.37L506.248 93.3711V155.187L446.54 171.185V109.37ZM385.832 125.636L445.54 109.638V171.453L385.832 187.452V125.636ZM325.124 141.903L384.832 125.904V187.72L325.124 203.719V141.903ZM264.416 158.17L324.124 142.171V203.987L264.416 219.985V158.17ZM203.708 174.436L263.416 158.438V220.253L203.708 236.252V174.436ZM143 190.703L202.708 174.704V236.52L143 252.519V190.703ZM143 253.554V315.367L202.708 299.369V237.555L143 253.554ZM203.708 237.287V299.101L263.416 283.102V221.289L203.708 237.287ZM264.416 221.021V282.834L324.124 266.835V205.022L264.416 221.021ZM325.124 204.754V266.567L384.832 250.569V188.755L325.124 204.754ZM385.832 188.487V250.301L445.54 234.302V172.489L385.832 188.487ZM446.54 172.221V234.034L506.248 218.035V156.222L446.54 172.221ZM507.248 155.954V217.767L566.956 201.769V139.955L507.248 155.954ZM567.956 139.687V201.501L627.664 185.502V123.689L567.956 139.687ZM628.664 123.421V185.234L688.372 169.235V107.422L628.664 123.421ZM689.372 107.154V168.967L749.08 152.969V91.1554L689.372 107.154ZM750.08 90.8874V152.701L809.788 136.702V74.8887L750.08 90.8874ZM810.788 74.6208V136.434L870.496 120.435V58.622L810.788 74.6208ZM871.496 58.3541V120.167L931.204 104.169V42.3554L871.496 58.3541ZM871.496 121.203L931.204 105.204V167.018L871.496 183.016V121.203ZM810.788 137.469L870.496 121.471V183.284L810.788 199.283V137.469ZM750.08 153.736L809.788 137.737V199.551L750.08 215.55V153.736ZM689.372 170.003L749.08 154.004V215.818L689.372 231.816V170.003ZM628.664 186.269L688.372 170.271V232.084L628.664 248.083V186.269ZM567.956 202.536L627.664 186.537V248.351L567.956 264.35V202.536ZM507.248 218.803L566.956 202.804V264.617L507.248 280.616V218.803ZM446.54 235.069L506.248 219.071V280.884L446.54 296.883V235.069ZM385.832 251.336L445.54 235.337V297.151L385.832 313.15V251.336ZM325.124 267.603L384.832 251.604V313.417L325.124 329.416V267.603ZM264.416 283.869L324.124 267.871V329.684L264.416 345.683V283.869ZM203.708 300.136L263.416 284.137V345.951L203.708 361.95V300.136ZM143 316.403L202.708 300.404V362.217L143 378.216V316.403ZM143 379.251V441.067L202.708 425.068V363.253L143 379.251ZM203.708 362.985V424.8L263.416 408.802V346.986L203.708 362.985ZM264.416 346.718V408.534L324.124 392.535V330.719L264.416 346.718ZM325.124 330.451V392.267L384.832 376.268V314.453L325.124 330.451ZM385.832 314.185V376L445.54 360.002V298.186L385.832 314.185ZM446.54 297.918V359.734L506.248 343.735V281.919L446.54 297.918ZM507.248 281.651V343.467L566.956 327.468V265.653L507.248 281.651ZM567.956 265.385V327.2L627.664 311.202V249.386L567.956 265.385ZM628.664 249.118V310.934L688.372 294.935V233.119L628.664 249.118ZM689.372 232.852V294.667L749.08 278.668V216.853L689.372 232.852ZM750.08 216.585V278.4L809.788 262.402V200.586L750.08 216.585ZM810.788 200.318V262.134L870.496 246.135V184.319L810.788 200.318ZM871.496 184.052V245.867L931.204 229.868V168.053L871.496 184.052ZM871.496 246.902L931.204 230.904V292.717L871.496 308.716V246.902ZM810.788 263.169L870.496 247.17V308.984L810.788 324.982V263.169ZM750.08 279.436L809.788 263.437V325.25L750.08 341.249V279.436ZM689.372 295.702L749.08 279.704V341.517L689.372 357.516V295.702ZM628.664 311.969L688.372 295.97V357.784L628.664 373.782V311.969ZM567.956 328.236L627.664 312.237V374.05L567.956 390.049V328.236ZM507.248 344.502L566.956 328.504V390.317L507.248 406.316V344.502ZM446.54 360.769L506.248 344.77V406.584L446.54 422.582V360.769ZM385.832 377.036L445.54 361.037V422.85L385.832 438.849V377.036ZM325.124 393.302L384.832 377.304V439.117L325.124 455.116V393.302ZM264.416 409.569L324.124 393.57V455.384L264.416 471.382V409.569ZM203.708 425.836L263.416 409.837V471.65L203.708 487.649V425.836ZM143 442.102L202.708 426.104V487.917L143 503.916V442.102ZM143 504.951V566.765L202.708 550.766V488.952L143 504.951ZM203.708 488.684V550.498L263.416 534.499V472.686L203.708 488.684ZM264.416 472.418V534.231L324.124 518.232V456.419L264.416 472.418ZM325.124 456.151V517.965L384.832 501.966V440.152L325.124 456.151ZM385.832 439.884V501.698L445.54 485.699V423.886L385.832 439.884ZM446.54 423.618V485.431L506.248 469.433V407.619L446.54 423.618ZM507.248 407.351V469.165L566.956 453.166V391.352L507.248 407.351ZM567.956 391.084V452.898L627.664 436.899V375.086L567.956 391.084ZM628.664 374.818V436.631L688.372 420.633V358.819L628.664 374.818ZM689.372 358.551V420.365L749.08 404.366V342.552L689.372 358.551ZM750.08 342.284V404.098L809.788 388.099V326.286L750.08 342.284ZM810.788 326.018V387.831L870.496 371.833V310.019L810.788 326.018ZM871.496 309.751V371.565L931.204 355.566V293.752L871.496 309.751ZM871.496 372.6L931.204 356.601V418.415L871.496 434.413V372.6ZM810.788 388.867L870.496 372.868V434.681L810.788 450.68V388.867ZM750.08 405.133L809.788 389.135V450.948L750.08 466.947V405.133ZM689.372 421.4L749.08 405.401V467.215L689.372 483.213V421.4ZM628.664 437.667L688.372 421.668V483.481L628.664 499.48V437.667ZM567.956 453.933L627.664 437.935V499.748L567.956 515.747V453.933ZM507.248 470.2L566.956 454.201V516.015L507.248 532.013V470.2ZM446.54 486.467L506.248 470.468V532.281L446.54 548.28V486.467ZM385.832 502.733L445.54 486.734V548.548L385.832 564.547V502.733ZM325.124 519L384.832 503.001V564.815L325.124 580.813V519ZM264.416 535.267L324.124 519.268V581.081L264.416 597.08V535.267ZM203.708 551.533L263.416 535.534V597.348L203.708 613.347V551.533ZM143 567.8L202.708 551.801V613.615L143 629.613V567.8ZM143 630.649V692.464L202.708 676.465V614.65L143 630.649ZM203.708 614.382V676.197L263.416 660.199V598.383L203.708 614.382ZM264.416 598.115V659.931L324.124 643.932V582.117L264.416 598.115ZM325.124 581.849V643.664L384.832 627.665V565.85L325.124 581.849ZM385.832 565.582V627.397L445.54 611.399V549.583L385.832 565.582ZM446.54 549.315V611.131L506.248 595.132V533.317L446.54 549.315ZM507.248 533.049V594.864L566.956 578.865V517.05L507.248 533.049ZM567.956 516.782V578.597L627.664 562.599V500.783L567.956 516.782ZM628.664 500.515V562.331L688.372 546.332V484.517L628.664 500.515ZM689.372 484.249V546.064L749.08 530.065V468.25L689.372 484.249ZM750.08 467.982V529.797L809.788 513.799V451.983L750.08 467.982ZM810.788 451.715V513.531L870.496 497.532V435.717L810.788 451.715ZM871.496 435.449V497.264L931.204 481.265V419.45L871.496 435.449ZM385.832 690.246V628.433L445.54 612.434V674.247L385.832 690.246ZM446.54 673.979V612.166L506.248 596.167V657.981L446.54 673.979ZM507.248 657.713V595.899L566.956 579.901V641.714L507.248 657.713ZM567.956 641.446V579.633L627.664 563.634V625.447L567.956 641.446ZM628.664 625.18V563.366L688.372 547.367V609.181L628.664 625.18ZM689.372 608.913V547.099L749.08 531.101V592.914L689.372 608.913ZM750.08 592.646V530.833L809.788 514.834V576.647L750.08 592.646ZM810.788 576.38V514.566L870.496 498.567V560.381L810.788 576.38ZM871.496 560.113V498.299L931.204 482.301V544.114L871.496 560.113ZM628.664 626.215V688.03L688.372 672.032V610.216L628.664 626.215ZM689.372 609.948V671.764L749.08 655.765V593.949L689.372 609.948ZM750.08 593.681V655.497L809.788 639.498V577.683L750.08 593.681ZM810.788 577.415V639.23L870.496 623.232V561.416L810.788 577.415ZM871.496 561.148V622.964L931.204 606.965V545.149L871.496 561.148Z" fill-opacity="0.1"></path></g><defs><radialGradient id="radial-light" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(468.373 287.536) rotate(90) scale(430.464 467.627)"><stop stop-color="#D9D9D9"></stop><stop offset="1" stop-opacity="0"></stop></radialGradient></defs></svg></span><span class="hidden absolute dark:block inset-0 overflow-hidden h-[64rem]" style="background:radial-gradient(49.63% 57.02% at 58.99% -7.2%, rgba(0, 177, 228, 0.1) 39.4%, rgba(0, 0, 0, 0) 100%)"><svg width="790" height="640" viewBox="0 0 790 718" fill="none" xmlns="http://www.w3.org/2000/svg" class="absolute pl-48 -top-16 left-1/2 -translate-x-1/2"><mask id="mask-dark" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="0" y="-143" width="936" height="861"><ellipse cx="468.373" cy="287.536" rx="467.627" ry="430.464" fill="url(#radial-dark)"></ellipse></mask><g mask="url(#mask-dark)" class="fill-primary dark:fill-primary-light"><path d="M506.419 281.855L446.417 297.931V359.885L506.419 343.71V281.855Z" fill-opacity="0.05"></path><path d="M384.768 188.752L324.766 204.828V266.781L384.768 250.606V188.752Z" fill-opacity="0.05"></path><path d="M263.625 347.002L203.623 363.078V425.031L263.625 408.856V347.002Z" fill-opacity="0.05"></path><path d="M385.089 440.096L325.087 456.172V518.125L385.089 501.95V440.096Z" fill-opacity="0.05"></path><path d="M627.756 123.527L567.754 139.603V201.557L627.756 185.382V123.527Z" fill-opacity="0.05"></path><path d="M445.32 46.918L385.318 62.994V124.947L445.32 108.772V46.918Z" fill-opacity="0.05"></path><path d="M749.192 279.59L689.19 295.666V357.619L749.192 341.444V279.59Z" fill-opacity="0.05"></path><path d="M627.905 437.912L567.903 453.988V515.941L627.905 499.766V437.912Z" fill-opacity="0.05"></path><path d="M202.491 175.656L142.489 191.732V253.685L202.491 237.511V175.656Z" fill-opacity="0.05"></path><path fill-rule="evenodd" clip-rule="evenodd" d="M446.54 -79.1784L949.537 -213.956L949.278 -214.922L446.54 -80.2137V-87.9997H445.54V-79.9457L385.832 -63.947V-87.9997H384.832V-63.679L325.124 -47.6803V-87.9997H324.124V-47.4124L264.416 -31.4137V-87.9997H263.416V-31.1457L203.708 -15.147L203.708 -87.9997H202.708L202.708 -14.8791L143 1.11966L143 -87.9997H142L142 1.3876L-80.8521 61.1006L-80.5932 62.0666L142 2.42287V64.2363L-65.1402 119.739L-64.8814 120.705L142 65.2715L142 127.085L-49.4278 178.378L-49.1689 179.344L142 128.12V189.936L-33.7155 237.019L-33.4566 237.985L142 190.971V252.787L-18.0025 295.659L-17.7437 296.625L142 253.822V315.635L-2.29068 354.298L-2.03186 355.264L142 316.671V378.484L13.4218 412.937L13.6806 413.903L142 379.519V441.335L29.1341 471.577L29.3929 472.543L142 442.37V504.184L44.8466 530.216L45.1054 531.182L142 505.219V567.032L60.5591 588.855L60.8179 589.82L142 568.068V629.881L76.2715 647.493L76.5303 648.459L142 630.917V692.732L91.9838 706.134L92.2426 707.1L142 693.767V698.42H143V693.499L202.708 677.501V698.42H203.708V677.233L263.416 661.234V698.42H264.416V660.966L324.124 644.967V698.42H325.124V644.699L384.832 628.701V690.514L107.696 764.773L107.954 765.738L384.832 691.549V698.42H385.832V691.281L445.54 675.283V698.42H446.54V675.015L506.248 659.016V698.42H507.248V658.748L566.956 642.749V698.42H567.956V642.481L627.664 626.483V688.298L123.409 823.413L123.667 824.379L627.664 689.334V698.42H628.664V689.066L688.372 673.067V698.42H689.372V672.799L749.08 656.8V698.42H750.08V656.532L809.788 640.534V698.42H810.788V640.266L870.496 624.267V698.42H871.496V623.999L931.204 608V698.42H932.204V607.732L1153.8 548.357L1153.54 547.391L932.204 606.697V544.881L1138.08 489.716L1137.83 488.75L932.204 543.846V482.033L1122.37 431.077L1122.11 430.111L932.204 480.997V419.182L1106.66 372.437L1106.4 371.471L932.204 418.147V356.333L1090.95 313.798L1090.69 312.832L932.204 355.298V293.484L1075.24 255.159L1074.98 254.193L932.204 292.449V230.636L1059.52 196.521L1059.26 195.555L932.204 229.6V167.785L1043.81 137.88L1043.55 136.914L932.204 166.75V104.936L1028.1 79.2413L1027.84 78.2754L932.204 103.901V42.0874L1012.39 20.6027L1012.13 19.6367L932.204 41.0522V-20.7634L996.674 -38.0379L996.415 -39.0039L932.204 -21.7987L932.204 -83.6142L980.961 -96.6786L980.702 -97.6445L932.204 -84.6495V-87.9997H931.204V-84.3815L871.496 -68.3828V-87.9997H870.496V-68.1149L810.788 -52.1161V-87.9997H809.788V-51.8482L750.08 -35.8495V-87.9997H749.08V-35.5815L689.372 -19.5828L689.372 -81.3963L965.249 -155.317L964.99 -156.283L689.372 -82.4316V-87.9997H688.372V-82.1637L628.664 -66.1649V-87.9997H627.664V-65.897L567.956 -49.8983V-87.9997H566.956V-49.6303L507.248 -33.6316V-87.9997H506.248V-33.3637L446.54 -17.365L446.54 -79.1784ZM445.54 -78.9104L385.832 -62.9117L385.832 -1.09831L445.54 -17.097L445.54 -78.9104ZM384.832 -62.6438L325.124 -46.6451L325.124 15.1684L384.832 -0.830353L384.832 -62.6438ZM324.124 -46.3771L264.416 -30.3784L264.416 31.435L324.124 15.4363L324.124 -46.3771ZM263.416 -30.1104L203.708 -14.1117V47.7017L263.416 31.703L263.416 -30.1104ZM202.708 -13.8438L143 2.15492V63.9683L202.708 47.9696V-13.8438ZM628.664 -65.1297L688.372 -81.1284L688.372 -19.3149L628.664 -3.31616L628.664 -65.1297ZM567.956 -48.863L627.664 -64.8617L627.664 -3.04822L567.956 12.9505L567.956 -48.863ZM507.248 -32.5964L566.956 -48.5951L566.956 13.2184L507.248 29.2172L507.248 -32.5964ZM446.54 -16.3297L506.248 -32.3284L506.248 29.4851L446.54 45.4838V-16.3297ZM385.832 -0.0630493L445.54 -16.0618V45.7517L385.832 61.7505V-0.0630493ZM325.124 16.2036L384.832 0.20491V62.0184L325.124 78.0171V16.2036ZM264.416 32.4703L324.124 16.4716V78.2851L264.416 94.2838V32.4703ZM203.708 48.7369L263.416 32.7382V94.5517L203.708 110.55V48.7369ZM143 65.0036L202.708 49.0049V110.818L143 126.817L143 65.0036ZM931.204 -83.3463L871.496 -67.3475L871.496 -5.53207L931.204 -21.5308L931.204 -83.3463ZM870.496 -67.0796L810.788 -51.0809L810.788 10.7346L870.496 -5.26411L870.496 -67.0796ZM809.788 -50.8129L750.08 -34.8142L750.08 27.0013L809.788 11.0025L809.788 -50.8129ZM749.08 -34.5463L689.372 -18.5476V43.2679L749.08 27.2692L749.08 -34.5463ZM688.372 -18.2796L628.664 -2.2809V59.5346L688.372 43.5359V-18.2796ZM627.664 -2.01295L567.956 13.9858V75.8012L627.664 59.8025V-2.01295ZM566.956 14.2537L507.248 30.2524V92.0679L566.956 76.0692V14.2537ZM506.248 30.5204L446.54 46.5191V108.335L506.248 92.3358V30.5204ZM445.54 46.787L385.832 62.7857V124.601L445.54 108.603V46.787ZM384.832 63.0537L325.124 79.0524V140.868L384.832 124.869V63.0537ZM324.124 79.3203L264.416 95.319V157.135L324.124 141.136V79.3203ZM263.416 95.587L203.708 111.586V173.401L263.416 157.402V95.587ZM202.708 111.854L143 127.852V189.668L202.708 173.669V111.854ZM871.496 -4.49677L931.204 -20.4955V41.3201L871.496 57.3188V-4.49677ZM810.788 11.7699L870.496 -4.22882V57.5868L810.788 73.5855V11.7699ZM750.08 28.0365L809.788 12.0378V73.8534L750.08 89.8521V28.0365ZM689.372 44.3032L749.08 28.3045V90.1201L689.372 106.119V44.3032ZM628.664 60.5699L688.372 44.5711V106.387L628.664 122.385V60.5699ZM567.956 76.8365L627.664 60.8378V122.653L567.956 138.652V76.8365ZM507.248 93.1032L566.956 77.1045V138.92L507.248 154.919V93.1032ZM446.54 109.37L506.248 93.3711V155.187L446.54 171.185V109.37ZM385.832 125.636L445.54 109.638V171.453L385.832 187.452V125.636ZM325.124 141.903L384.832 125.904V187.72L325.124 203.719V141.903ZM264.416 158.17L324.124 142.171V203.987L264.416 219.985V158.17ZM203.708 174.436L263.416 158.438V220.253L203.708 236.252V174.436ZM143 190.703L202.708 174.704V236.52L143 252.519V190.703ZM143 253.554V315.367L202.708 299.369V237.555L143 253.554ZM203.708 237.287V299.101L263.416 283.102V221.289L203.708 237.287ZM264.416 221.021V282.834L324.124 266.835V205.022L264.416 221.021ZM325.124 204.754V266.567L384.832 250.569V188.755L325.124 204.754ZM385.832 188.487V250.301L445.54 234.302V172.489L385.832 188.487ZM446.54 172.221V234.034L506.248 218.035V156.222L446.54 172.221ZM507.248 155.954V217.767L566.956 201.769V139.955L507.248 155.954ZM567.956 139.687V201.501L627.664 185.502V123.689L567.956 139.687ZM628.664 123.421V185.234L688.372 169.235V107.422L628.664 123.421ZM689.372 107.154V168.967L749.08 152.969V91.1554L689.372 107.154ZM750.08 90.8874V152.701L809.788 136.702V74.8887L750.08 90.8874ZM810.788 74.6208V136.434L870.496 120.435V58.622L810.788 74.6208ZM871.496 58.3541V120.167L931.204 104.169V42.3554L871.496 58.3541ZM871.496 121.203L931.204 105.204V167.018L871.496 183.016V121.203ZM810.788 137.469L870.496 121.471V183.284L810.788 199.283V137.469ZM750.08 153.736L809.788 137.737V199.551L750.08 215.55V153.736ZM689.372 170.003L749.08 154.004V215.818L689.372 231.816V170.003ZM628.664 186.269L688.372 170.271V232.084L628.664 248.083V186.269ZM567.956 202.536L627.664 186.537V248.351L567.956 264.35V202.536ZM507.248 218.803L566.956 202.804V264.617L507.248 280.616V218.803ZM446.54 235.069L506.248 219.071V280.884L446.54 296.883V235.069ZM385.832 251.336L445.54 235.337V297.151L385.832 313.15V251.336ZM325.124 267.603L384.832 251.604V313.417L325.124 329.416V267.603ZM264.416 283.869L324.124 267.871V329.684L264.416 345.683V283.869ZM203.708 300.136L263.416 284.137V345.951L203.708 361.95V300.136ZM143 316.403L202.708 300.404V362.217L143 378.216V316.403ZM143 379.251V441.067L202.708 425.068V363.253L143 379.251ZM203.708 362.985V424.8L263.416 408.802V346.986L203.708 362.985ZM264.416 346.718V408.534L324.124 392.535V330.719L264.416 346.718ZM325.124 330.451V392.267L384.832 376.268V314.453L325.124 330.451ZM385.832 314.185V376L445.54 360.002V298.186L385.832 314.185ZM446.54 297.918V359.734L506.248 343.735V281.919L446.54 297.918ZM507.248 281.651V343.467L566.956 327.468V265.653L507.248 281.651ZM567.956 265.385V327.2L627.664 311.202V249.386L567.956 265.385ZM628.664 249.118V310.934L688.372 294.935V233.119L628.664 249.118ZM689.372 232.852V294.667L749.08 278.668V216.853L689.372 232.852ZM750.08 216.585V278.4L809.788 262.402V200.586L750.08 216.585ZM810.788 200.318V262.134L870.496 246.135V184.319L810.788 200.318ZM871.496 184.052V245.867L931.204 229.868V168.053L871.496 184.052ZM871.496 246.902L931.204 230.904V292.717L871.496 308.716V246.902ZM810.788 263.169L870.496 247.17V308.984L810.788 324.982V263.169ZM750.08 279.436L809.788 263.437V325.25L750.08 341.249V279.436ZM689.372 295.702L749.08 279.704V341.517L689.372 357.516V295.702ZM628.664 311.969L688.372 295.97V357.784L628.664 373.782V311.969ZM567.956 328.236L627.664 312.237V374.05L567.956 390.049V328.236ZM507.248 344.502L566.956 328.504V390.317L507.248 406.316V344.502ZM446.54 360.769L506.248 344.77V406.584L446.54 422.582V360.769ZM385.832 377.036L445.54 361.037V422.85L385.832 438.849V377.036ZM325.124 393.302L384.832 377.304V439.117L325.124 455.116V393.302ZM264.416 409.569L324.124 393.57V455.384L264.416 471.382V409.569ZM203.708 425.836L263.416 409.837V471.65L203.708 487.649V425.836ZM143 442.102L202.708 426.104V487.917L143 503.916V442.102ZM143 504.951V566.765L202.708 550.766V488.952L143 504.951ZM203.708 488.684V550.498L263.416 534.499V472.686L203.708 488.684ZM264.416 472.418V534.231L324.124 518.232V456.419L264.416 472.418ZM325.124 456.151V517.965L384.832 501.966V440.152L325.124 456.151ZM385.832 439.884V501.698L445.54 485.699V423.886L385.832 439.884ZM446.54 423.618V485.431L506.248 469.433V407.619L446.54 423.618ZM507.248 407.351V469.165L566.956 453.166V391.352L507.248 407.351ZM567.956 391.084V452.898L627.664 436.899V375.086L567.956 391.084ZM628.664 374.818V436.631L688.372 420.633V358.819L628.664 374.818ZM689.372 358.551V420.365L749.08 404.366V342.552L689.372 358.551ZM750.08 342.284V404.098L809.788 388.099V326.286L750.08 342.284ZM810.788 326.018V387.831L870.496 371.833V310.019L810.788 326.018ZM871.496 309.751V371.565L931.204 355.566V293.752L871.496 309.751ZM871.496 372.6L931.204 356.601V418.415L871.496 434.413V372.6ZM810.788 388.867L870.496 372.868V434.681L810.788 450.68V388.867ZM750.08 405.133L809.788 389.135V450.948L750.08 466.947V405.133ZM689.372 421.4L749.08 405.401V467.215L689.372 483.213V421.4ZM628.664 437.667L688.372 421.668V483.481L628.664 499.48V437.667ZM567.956 453.933L627.664 437.935V499.748L567.956 515.747V453.933ZM507.248 470.2L566.956 454.201V516.015L507.248 532.013V470.2ZM446.54 486.467L506.248 470.468V532.281L446.54 548.28V486.467ZM385.832 502.733L445.54 486.734V548.548L385.832 564.547V502.733ZM325.124 519L384.832 503.001V564.815L325.124 580.813V519ZM264.416 535.267L324.124 519.268V581.081L264.416 597.08V535.267ZM203.708 551.533L263.416 535.534V597.348L203.708 613.347V551.533ZM143 567.8L202.708 551.801V613.615L143 629.613V567.8ZM143 630.649V692.464L202.708 676.465V614.65L143 630.649ZM203.708 614.382V676.197L263.416 660.199V598.383L203.708 614.382ZM264.416 598.115V659.931L324.124 643.932V582.117L264.416 598.115ZM325.124 581.849V643.664L384.832 627.665V565.85L325.124 581.849ZM385.832 565.582V627.397L445.54 611.399V549.583L385.832 565.582ZM446.54 549.315V611.131L506.248 595.132V533.317L446.54 549.315ZM507.248 533.049V594.864L566.956 578.865V517.05L507.248 533.049ZM567.956 516.782V578.597L627.664 562.599V500.783L567.956 516.782ZM628.664 500.515V562.331L688.372 546.332V484.517L628.664 500.515ZM689.372 484.249V546.064L749.08 530.065V468.25L689.372 484.249ZM750.08 467.982V529.797L809.788 513.799V451.983L750.08 467.982ZM810.788 451.715V513.531L870.496 497.532V435.717L810.788 451.715ZM871.496 435.449V497.264L931.204 481.265V419.45L871.496 435.449ZM385.832 690.246V628.433L445.54 612.434V674.247L385.832 690.246ZM446.54 673.979V612.166L506.248 596.167V657.981L446.54 673.979ZM507.248 657.713V595.899L566.956 579.901V641.714L507.248 657.713ZM567.956 641.446V579.633L627.664 563.634V625.447L567.956 641.446ZM628.664 625.18V563.366L688.372 547.367V609.181L628.664 625.18ZM689.372 608.913V547.099L749.08 531.101V592.914L689.372 608.913ZM750.08 592.646V530.833L809.788 514.834V576.647L750.08 592.646ZM810.788 576.38V514.566L870.496 498.567V560.381L810.788 576.38ZM871.496 560.113V498.299L931.204 482.301V544.114L871.496 560.113ZM628.664 626.215V688.03L688.372 672.032V610.216L628.664 626.215ZM689.372 609.948V671.764L749.08 655.765V593.949L689.372 609.948ZM750.08 593.681V655.497L809.788 639.498V577.683L750.08 593.681ZM810.788 577.415V639.23L870.496 623.232V561.416L810.788 577.415ZM871.496 561.148V622.964L931.204 606.965V545.149L871.496 561.148Z" fill-opacity="0.1"></path></g><defs><radialGradient id="radial-dark" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(468.373 287.536) rotate(90) scale(430.464 467.627)"><stop stop-color="#D9D9D9"></stop><stop offset="1" stop-opacity="0"></stop></radialGradient></defs></svg></span><div class="relative antialiased text-gray-500 dark:text-gray-400"><div id="navbar" class="z-30 fixed lg:sticky top-0 w-full"><div id="navbar-transition" class="absolute w-full h-full backdrop-blur flex-none transition-colors duration-500 border-b border-gray-500/5 dark:border-gray-300/[0.06] supports-backdrop-blur:bg-background-light/60 dark:bg-transparent"></div><div class="max-w-8xl mx-auto relative"><div class=""><div class="relative"><div class="flex items-center lg:px-12 h-16 min-w-0 mx-4 lg:mx-0"><div class="h-full relative flex-1 flex items-center gap-x-4 min-w-0 border-b border-gray-500/5 dark:border-gray-300/[0.06]"><div class="flex-1 flex items-center gap-x-4"><a href="https://vapor.laravel.com"><span class="sr-only">Laravel Vapor<!-- --> home page</span><img class="w-auto h-7 relative object-contain block dark:hidden" src="https://mintlify.s3.us-west-1.amazonaws.com/vapor/logo/light.svg" alt="light logo"/><img class="w-auto h-7 relative object-contain hidden dark:block" src="https://mintlify.s3.us-west-1.amazonaws.com/vapor/logo/dark.svg" alt="dark logo"/></a><div class="flex items-center gap-x-2"></div></div><button type="button" class="hidden lg:flex relative flex-1 pointer-events-auto rounded-xl w-full items-center text-sm leading-6 py-1.5 pl-3.5 pr-3 shadow-sm text-gray-400 dark:text-white/50 bg-background-light dark:bg-background-dark dark:brightness-[1.1] dark:ring-1 dark:hover:brightness-[1.25] ring-1 ring-gray-400/20 hover:ring-gray-600/25 dark:ring-gray-600/30 dark:hover:ring-gray-500/30 focus:outline-primary justify-between truncate gap-2 min-w-[43px]" id="search-bar-entry"><div class="flex items-center gap-3 min-w-[42px]"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-search min-w-4 flex-none text-gray-700 hover:text-gray-800 dark:text-gray-300 hover:dark:text-gray-200"><circle cx="11" cy="11" r="8"></circle><path d="m21 21-4.3-4.3"></path></svg><div class="truncate min-w-0">Search or ask...</div></div></button><div class="flex-1 relative hidden lg:flex items-center ml-auto justify-end space-x-4"><nav class="text-sm"><ul class="flex space-x-6 items-center"><li><a href="/cdn-cgi/l/email-protection#f78196879885b79b96859681929bd994989a" class="whitespace-nowrap font-medium text-gray-600 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" target="_blank">Support</a></li><li><a href="https://status.laravel.com/" class="whitespace-nowrap font-medium text-gray-600 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" target="_blank">Platform Status</a></li><li class="block lg:hidden"><a class="whitespace-nowrap font-medium text-gray-600 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" href="https://vapor.laravel.com">Dashboard</a></li><li class="whitespace-nowrap hidden lg:flex" id="topbar-cta-button"><a target="_blank" class="group px-4 py-1.5 relative inline-flex items-center text-sm font-medium" href="https://vapor.laravel.com"><span class="absolute inset-0 bg-primary-dark rounded-full group-hover:opacity-[0.9]"></span><div class="mr-0.5 space-x-2.5 flex items-center"><span class="z-10 text-white">Dashboard</span><svg width="3" height="24" viewBox="0 -9 3 24" class="h-5 rotate-0 overflow-visible text-white/90"><path d="M0 0L3 3L0 6" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"></path></svg></div></a></li></ul></nav><div class="flex items-center"><button class="group p-2 flex items-center justify-center" aria-label="Toggle dark mode"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" xmlns="http://www.w3.org/2000/svg" class="h-4 w-4 block text-gray-400 dark:hidden group-hover:text-gray-600"><g clip-path="url(#clip0_2880_7340)"><path d="M8 1.11133V2.00022" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path><path d="M12.8711 3.12891L12.2427 3.75735" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path><path d="M14.8889 8H14" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path><path d="M12.8711 12.8711L12.2427 12.2427" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path><path d="M8 14.8889V14" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path><path d="M3.12891 12.8711L3.75735 12.2427" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path><path d="M1.11133 8H2.00022" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path><path d="M3.12891 3.12891L3.75735 3.75735" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path><path d="M8.00043 11.7782C10.0868 11.7782 11.7782 10.0868 11.7782 8.00043C11.7782 5.91402 10.0868 4.22266 8.00043 4.22266C5.91402 4.22266 4.22266 5.91402 4.22266 8.00043C4.22266 10.0868 5.91402 11.7782 8.00043 11.7782Z" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path></g><defs><clipPath id="clip0_2880_7340"><rect width="16" height="16" fill="white"></rect></clipPath></defs></svg><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon h-4 w-4 hidden dark:block text-gray-500 dark:group-hover:text-gray-300"><path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"></path></svg></button></div></div><div class="flex lg:hidden items-center gap-2"><button type="button" class="text-gray-500 w-8 h-8 flex items-center justify-center hover:text-gray-600 dark:text-gray-400 dark:hover:text-gray-300" id="search-bar-entry-mobile"><span class="sr-only">Search...</span><svg class="h-4 w-4 bg-gray-500 dark:bg-gray-400 hover:bg-gray-600 dark:hover:bg-gray-300" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/solid/magnifying-glass.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/solid/magnifying-glass.svg);mask-repeat:no-repeat;mask-position:center"></svg></button><button aria-label="More actions" class="h-7 w-5 flex items-center justify-end"><svg class="h-4 w-4 bg-gray-500 dark:bg-gray-400 hover:bg-gray-600 dark:hover:bg-gray-300" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/solid/ellipsis-vertical.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/solid/ellipsis-vertical.svg);mask-repeat:no-repeat;mask-position:center"></svg></button></div></div></div><div class="flex items-center h-14 py-4 px-5 lg:hidden"><button type="button" class="text-gray-500 hover:text-gray-600 dark:text-gray-400 dark:hover:text-gray-300"><span class="sr-only">Navigation</span><svg class="h-4" fill="currentColor" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M0 96C0 78.3 14.3 64 32 64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 128 0 113.7 0 96zM0 256c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z"></path></svg></button><div class="ml-4 flex text-sm leading-6 whitespace-nowrap min-w-0 space-x-3"><div class="flex items-center space-x-3"><span>Get Started</span><svg width="3" height="24" viewBox="0 -9 3 24" class="h-5 rotate-0 overflow-visible fill-gray-400"><path d="M0 0L3 3L0 6" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"></path></svg></div><div class="font-semibold text-gray-900 truncate dark:text-gray-200">Introduction</div></div></div></div><div class="hidden lg:flex px-12 h-12"><div class="h-full flex text-sm space-x-6"><a class="group relative h-full flex items-center text-gray-800 dark:text-gray-200 font-semibold" href="/introduction">Documentation<div class="absolute bottom-0 h-[1.5px] w-full bg-primary dark:bg-primary-light"></div></a><a class="group relative h-full flex items-center font-medium text-gray-600 dark:text-gray-400 hover:text-gray-800 dark:hover:text-gray-300" href="/kb/troubleshooting">Knowledge Base<div class="absolute bottom-0 h-[1.5px] w-full group-hover:bg-gray-200 dark:group-hover:bg-gray-700"></div></a></div></div></div></div></div><div class="max-w-8xl px-4 mx-auto lg:px-8"><div class="z-20 hidden lg:block fixed bottom-0 right-auto w-[18rem]" id="sidebar" style="top:7rem"><div class="absolute inset-0 z-10 stable-scrollbar-gutter overflow-auto pr-8 pb-10" id="sidebar-content"><div class="relative lg:text-sm lg:leading-6"><div class="sticky top-0 h-8"></div><div id="navigation-items"><li class="list-none"><a href="https://discord.com/invite/laravel" target="_blank" rel="noreferrer" class="pl-4 group flex items-center lg:text-sm lg:leading-6 mb-5 sm:mb-4 font-medium text-gray-600 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300"><div class="mr-4 rounded-md p-1 shadow-sm text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 group-hover:brightness-100 group-hover:ring-0 ring-1 ring-gray-950/5 dark:ring-gray-700/40"><svg class="h-4 w-4 secondary-opacity group-hover:fill-primary-dark group-hover:bg-white bg-gray-400 dark:bg-gray-500" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/brands/discord.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/brands/discord.svg);mask-repeat:no-repeat;mask-position:center"></svg></div>Community</a></li><li class="list-none"><a href="https://blog.laravel.com/vapor" target="_blank" rel="noreferrer" class="pl-4 group flex items-center lg:text-sm lg:leading-6 mb-5 sm:mb-4 font-medium text-gray-600 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300"><div class="mr-4 rounded-md p-1 shadow-sm text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 group-hover:brightness-100 group-hover:ring-0 ring-1 ring-gray-950/5 dark:ring-gray-700/40"><svg class="h-4 w-4 secondary-opacity group-hover:fill-primary-dark group-hover:bg-white bg-gray-400 dark:bg-gray-500" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/duotone/newspaper.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/duotone/newspaper.svg);mask-repeat:no-repeat;mask-position:center"></svg></div>Blog</a></li><div class="mt-12 lg:mt-8"><h5 class="pl-4 mb-3.5 lg:mb-2.5 font-semibold text-gray-900 dark:text-gray-200">Get Started</h5><ul><li id="/introduction" class="relative scroll-m-4 first:scroll-m-20"><a class="group mt-2 lg:mt-0 flex items-center pr-3 py-1.5 cursor-pointer focus:outline-primary dark:focus:outline-primary-light gap-x-3 rounded-xl bg-primary/10 text-primary font-semibold dark:text-primary-light dark:bg-primary-light/10" style="padding-left:1rem" href="/introduction"><div class="flex-1 flex items-center space-x-2.5"><div>Introduction</div></div></a></li></ul></div><div class="mt-12 lg:mt-8"><h5 class="pl-4 mb-3.5 lg:mb-2.5 font-semibold text-gray-900 dark:text-gray-200">Projects</h5><ul><li id="/projects/the-basics" class="relative scroll-m-4 first:scroll-m-20"><a class="group mt-2 lg:mt-0 flex items-center pr-3 py-1.5 cursor-pointer focus:outline-primary dark:focus:outline-primary-light gap-x-3 rounded-xl hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/projects/the-basics"><div class="flex-1 flex items-center space-x-2.5"><div>The Basics</div></div></a></li><li id="/projects/environments" class="relative scroll-m-4 first:scroll-m-20"><a class="group mt-2 lg:mt-0 flex items-center pr-3 py-1.5 cursor-pointer focus:outline-primary dark:focus:outline-primary-light gap-x-3 rounded-xl hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/projects/environments"><div class="flex-1 flex items-center space-x-2.5"><div>Environments</div></div></a></li><li id="/projects/deployments" class="relative scroll-m-4 first:scroll-m-20"><a class="group mt-2 lg:mt-0 flex items-center pr-3 py-1.5 cursor-pointer focus:outline-primary dark:focus:outline-primary-light gap-x-3 rounded-xl hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/projects/deployments"><div class="flex-1 flex items-center space-x-2.5"><div>Deployments</div></div></a></li><li id="/projects/development" class="relative scroll-m-4 first:scroll-m-20"><a class="group mt-2 lg:mt-0 flex items-center pr-3 py-1.5 cursor-pointer focus:outline-primary dark:focus:outline-primary-light gap-x-3 rounded-xl hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/projects/development"><div class="flex-1 flex items-center space-x-2.5"><div>Development</div></div></a></li><li id="/projects/domains" class="relative scroll-m-4 first:scroll-m-20"><a class="group mt-2 lg:mt-0 flex items-center pr-3 py-1.5 cursor-pointer focus:outline-primary dark:focus:outline-primary-light gap-x-3 rounded-xl hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/projects/domains"><div class="flex-1 flex items-center space-x-2.5"><div>Domains</div></div></a></li></ul></div><div class="mt-12 lg:mt-8"><h5 class="pl-4 mb-3.5 lg:mb-2.5 font-semibold text-gray-900 dark:text-gray-200">Resources</h5><ul><li id="/resources/queues" class="relative scroll-m-4 first:scroll-m-20"><a class="group mt-2 lg:mt-0 flex items-center pr-3 py-1.5 cursor-pointer focus:outline-primary dark:focus:outline-primary-light gap-x-3 rounded-xl hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/resources/queues"><div class="flex-1 flex items-center space-x-2.5"><div>Queues</div></div></a></li><li id="/resources/storage" class="relative scroll-m-4 first:scroll-m-20"><a class="group mt-2 lg:mt-0 flex items-center pr-3 py-1.5 cursor-pointer focus:outline-primary dark:focus:outline-primary-light gap-x-3 rounded-xl hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/resources/storage"><div class="flex-1 flex items-center space-x-2.5"><div>Storage</div></div></a></li><li id="/resources/networks" class="relative scroll-m-4 first:scroll-m-20"><a class="group mt-2 lg:mt-0 flex items-center pr-3 py-1.5 cursor-pointer focus:outline-primary dark:focus:outline-primary-light gap-x-3 rounded-xl hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/resources/networks"><div class="flex-1 flex items-center space-x-2.5"><div>Networks</div></div></a></li><li id="/resources/databases" class="relative scroll-m-4 first:scroll-m-20"><a class="group mt-2 lg:mt-0 flex items-center pr-3 py-1.5 cursor-pointer focus:outline-primary dark:focus:outline-primary-light gap-x-3 rounded-xl hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/resources/databases"><div class="flex-1 flex items-center space-x-2.5"><div>Databases</div></div></a></li><li id="/resources/caches" class="relative scroll-m-4 first:scroll-m-20"><a class="group mt-2 lg:mt-0 flex items-center pr-3 py-1.5 cursor-pointer focus:outline-primary dark:focus:outline-primary-light gap-x-3 rounded-xl hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/resources/caches"><div class="flex-1 flex items-center space-x-2.5"><div>Caches</div></div></a></li><li id="/resources/logs" class="relative scroll-m-4 first:scroll-m-20"><a class="group mt-2 lg:mt-0 flex items-center pr-3 py-1.5 cursor-pointer focus:outline-primary dark:focus:outline-primary-light gap-x-3 rounded-xl hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/resources/logs"><div class="flex-1 flex items-center space-x-2.5"><div>Logs</div></div></a></li></ul></div><div class="mt-12 lg:mt-8"><h5 class="pl-4 mb-3.5 lg:mb-2.5 font-semibold text-gray-900 dark:text-gray-200">Integrations</h5><ul><li id="/integrations/sentry" class="relative scroll-m-4 first:scroll-m-20"><a class="group mt-2 lg:mt-0 flex items-center pr-3 py-1.5 cursor-pointer focus:outline-primary dark:focus:outline-primary-light gap-x-3 rounded-xl hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/integrations/sentry"><div class="flex-1 flex items-center space-x-2.5"><div>Sentry</div></div></a></li></ul></div></div></div></div></div><div class="" id="content-container"><div class="flex flex-row gap-12 box-border w-full pt-40 lg:pt-10"><div class="relative grow box-border flex-col w-full mx-auto px-1 lg:pl-[23.7rem] lg:-ml-12 xl:w-[calc(100%-28rem)]" id="content-area"><header id="header" class="relative"><div class="mt-0.5 space-y-2.5"><div class="eyebrow h-5 text-primary dark:text-primary-light text-sm font-semibold">Get Started</div><div class="flex items-center relative"><h1 id="page-title" class="inline-block text-2xl sm:text-3xl font-bold text-gray-900 tracking-tight dark:text-gray-200">Introduction</h1></div></div><div class="mt-2 text-lg prose prose-gray dark:prose-invert"><p>Manage your Laravel infrastructure on Vapor and fall in love with the scalability and simplicity of serverless.</p></div></header><div class="flex flex-col gap-8"></div><div class="relative mt-8 prose prose-gray dark:prose-invert"><div class="not-prose grid gap-x-4 sm:grid-cols-2"><a class="card block font-normal group relative my-2 ring-2 ring-transparent rounded-2xl bg-white dark:bg-background-dark border border-gray-950/10 dark:border-white/10 overflow-hidden w-full cursor-pointer hover:!border-primary dark:hover:!border-primary-light" target="_blank" rel="noreferrer" href="https://vapor.laravel.com/register"><div class="px-6 py-5 relative"><div id="card-link-arrow-icon" class="absolute text-gray-400 dark:text-gray-500 group-hover:text-primary dark:group-hover:text-primary-light top-5 right-5"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-up-right w-4 h-4"><path d="M7 7h10v10"></path><path d="M7 17 17 7"></path></svg></div><div class="h-6 w-6 fill-gray-800 dark:fill-gray-100 text-gray-800 dark:text-gray-100"><svg class="h-6 w-6 bg-primary dark:bg-primary-light" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/user-plus.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/user-plus.svg);mask-repeat:no-repeat;mask-position:center"></svg></div><div><h2 class="not-prose font-semibold text-base text-gray-800 dark:text-white mt-4" contenteditable="false">Create An Account</h2><div class="prose mt-1 font-normal text-sm leading-6 text-gray-600 dark:text-gray-400"><p>Create your Vapor account today</p></div></div></div></a><a class="card block font-normal group relative my-2 ring-2 ring-transparent rounded-2xl bg-white dark:bg-background-dark border border-gray-950/10 dark:border-white/10 overflow-hidden w-full cursor-pointer hover:!border-primary dark:hover:!border-primary-light" target="_blank" rel="noreferrer" href="https://laracasts.com/series/serverless-laravel"><div class="px-6 py-5 relative"><div id="card-link-arrow-icon" class="absolute text-gray-400 dark:text-gray-500 group-hover:text-primary dark:group-hover:text-primary-light top-5 right-5"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-up-right w-4 h-4"><path d="M7 7h10v10"></path><path d="M7 17 17 7"></path></svg></div><div class="h-6 w-6 fill-gray-800 dark:fill-gray-100 text-gray-800 dark:text-gray-100"><svg class="h-6 w-6 bg-primary dark:bg-primary-light" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/circle-play.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/circle-play.svg);mask-repeat:no-repeat;mask-position:center"></svg></div><div><h2 class="not-prose font-semibold text-base text-gray-800 dark:text-white mt-4" contenteditable="false">Watch More</h2><div class="prose mt-1 font-normal text-sm leading-6 text-gray-600 dark:text-gray-400"><p>Watch the free Vapor series on Laracasts</p></div></div></div></a></div> <h2 class="flex whitespace-pre-wrap group font-semibold" id="what-is-vapor%3F"><div class="absolute"><a href="#what-is-vapor%3F" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100" aria-label="Navigate to header"><div class="w-6 h-6 rounded-md flex items-center justify-center shadow-sm text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20"><svg xmlns="http://www.w3.org/2000/svg" fill="gray" height="12px" viewBox="0 0 576 512"><path d="M0 256C0 167.6 71.6 96 160 96h72c13.3 0 24 10.7 24 24s-10.7 24-24 24H160C98.1 144 48 194.1 48 256s50.1 112 112 112h72c13.3 0 24 10.7 24 24s-10.7 24-24 24H160C71.6 416 0 344.4 0 256zm576 0c0 88.4-71.6 160-160 160H344c-13.3 0-24-10.7-24-24s10.7-24 24-24h72c61.9 0 112-50.1 112-112s-50.1-112-112-112H344c-13.3 0-24-10.7-24-24s10.7-24 24-24h72c88.4 0 160 71.6 160 160zM184 232H392c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z"></path></svg></div></a></div><span class="cursor-pointer">What Is Vapor?</span></h2> <p>Laravel Vapor is an auto-scaling, serverless deployment platform for Laravel, powered by AWS Lambda. Manage your Laravel infrastructure on Vapor and fall in love with the scalability and simplicity of serverless.</p> <p>Vapor abstracts the complexity of managing Laravel applications on AWS Lambda, as well as interfacing those applications with SQS queues, databases, Redis clusters, networks, CloudFront CDN, and more. Some highlights of Vapor’s features include:</p> <ul> <li> <p>Auto-scaling web / queue infrastructure fine tuned for Laravel</p> </li> <li> <p>Zero-downtime deployments and rollbacks</p> </li> <li> <p>Environment variable / secret management</p> </li> <li> <p>Database management, including point-in-time restores and scaling</p> </li> <li> <p>Redis Cache management, including cluster scaling</p> </li> <li> <p>Database and cache tunnels, allowing for easy local inspection</p> </li> <li> <p>Automatic uploading of assets to Cloudfront CDN during deployment</p> </li> <li> <p>Unique, Vapor assigned vanity URLs for each environment, allowing immediate inspection</p> </li> <li> <p>Custom application domains</p> </li> <li> <p>DNS management</p> </li> <li> <p>Certificate management and renewal</p> </li> <li> <p>Application, database, and cache metrics</p> </li> <li> <p>CI friendly</p> </li> </ul> <p><strong>In short, you can think of Vapor as</strong> <a href="https://forge.laravel.com" target="_blank" rel="noreferrer">Laravel Forge</a> <strong>for serverless technology.</strong></p> <h2 class="flex whitespace-pre-wrap group font-semibold" id="requirements"><div class="absolute"><a href="#requirements" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100" aria-label="Navigate to header"><div class="w-6 h-6 rounded-md flex items-center justify-center shadow-sm text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20"><svg xmlns="http://www.w3.org/2000/svg" fill="gray" height="12px" viewBox="0 0 576 512"><path d="M0 256C0 167.6 71.6 96 160 96h72c13.3 0 24 10.7 24 24s-10.7 24-24 24H160C98.1 144 48 194.1 48 256s50.1 112 112 112h72c13.3 0 24 10.7 24 24s-10.7 24-24 24H160C71.6 416 0 344.4 0 256zm576 0c0 88.4-71.6 160-160 160H344c-13.3 0-24-10.7-24-24s10.7-24 24-24h72c61.9 0 112-50.1 112-112s-50.1-112-112-112H344c-13.3 0-24-10.7-24-24s10.7-24 24-24h72c88.4 0 160 71.6 160 160zM184 232H392c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z"></path></svg></div></a></div><span class="cursor-pointer">Requirements</span></h2> <p>Vapor requires that your application be compatible with PHP 7.3+ and Laravel 6.0+.</p> <h2 class="flex whitespace-pre-wrap group font-semibold" id="account-creation"><div class="absolute"><a href="#account-creation" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100" aria-label="Navigate to header"><div class="w-6 h-6 rounded-md flex items-center justify-center shadow-sm text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20"><svg xmlns="http://www.w3.org/2000/svg" fill="gray" height="12px" viewBox="0 0 576 512"><path d="M0 256C0 167.6 71.6 96 160 96h72c13.3 0 24 10.7 24 24s-10.7 24-24 24H160C98.1 144 48 194.1 48 256s50.1 112 112 112h72c13.3 0 24 10.7 24 24s-10.7 24-24 24H160C71.6 416 0 344.4 0 256zm576 0c0 88.4-71.6 160-160 160H344c-13.3 0-24-10.7-24-24s10.7-24 24-24h72c61.9 0 112-50.1 112-112s-50.1-112-112-112H344c-13.3 0-24-10.7-24-24s10.7-24 24-24h72c88.4 0 160 71.6 160 160zM184 232H392c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z"></path></svg></div></a></div><span class="cursor-pointer">Account Creation</span></h2> <p>Before integrating Vapor into your application, you should create a Vapor account. If you are just collaborating with others on their projects, you are not required to have a Vapor subscription. To create and manage your own projects, you will need a Vapor subscription.</p> <h2 class="flex whitespace-pre-wrap group font-semibold" id="installing-the-vapor-cli"><div class="absolute"><a href="#installing-the-vapor-cli" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100" aria-label="Navigate to header"><div class="w-6 h-6 rounded-md flex items-center justify-center shadow-sm text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20"><svg xmlns="http://www.w3.org/2000/svg" fill="gray" height="12px" viewBox="0 0 576 512"><path d="M0 256C0 167.6 71.6 96 160 96h72c13.3 0 24 10.7 24 24s-10.7 24-24 24H160C98.1 144 48 194.1 48 256s50.1 112 112 112h72c13.3 0 24 10.7 24 24s-10.7 24-24 24H160C71.6 416 0 344.4 0 256zm576 0c0 88.4-71.6 160-160 160H344c-13.3 0-24-10.7-24-24s10.7-24 24-24h72c61.9 0 112-50.1 112-112s-50.1-112-112-112H344c-13.3 0-24-10.7-24-24s10.7-24 24-24h72c88.4 0 160 71.6 160 160zM184 232H392c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z"></path></svg></div></a></div><span class="cursor-pointer">Installing The Vapor CLI</span></h2> <p>You will deploy your Laravel Vapor applications using the <a href="https://github.com/laravel/vapor-cli" target="_blank" rel="noreferrer">Vapor CLI</a>. This CLI may be installed globally or on a per-project basis using Composer:</p> <div class="mt-5 mb-8 not-prose rounded-2xl relative group text-gray-50 bg-[#0F1117] dark:bg-codeblock ring-1 ring-transparent dark:ring-gray-800/50 codeblock-dark"><div class="min-w-full relative text-sm leading-6 children:!my-0 children:!shadow-none children:!bg-transparent transition-[height] duration-300 ease-in-out" style="font-variant-ligatures:none;height:auto"><div class="overflow-x-auto h-full p-5 [&>pre>code]:pr-[3rem] [&>pre>code>span.line-highlight]:min-w-[calc(100%+3rem)] overflow-y-hidden scrollbar-thin scrollbar-thumb-rounded scrollbar-thumb-white/20 dark:scrollbar-thumb-white/20 hover:scrollbar-thumb-white/25 dark:hover:scrollbar-thumb-white/25 active:scrollbar-thumb-white/25 dark:active:scrollbar-thumb-white/25"><pre class="language-bash"><code class="language-bash"><span class=""><span class="token function">composer</span> require laravel/vapor-cli --update-with-dependencies</span> <!-- --> <span class=""><span class="token function">composer</span> global require laravel/vapor-cli --update-with-dependencies</span> </code></pre></div></div></div> <p>When the CLI is installed per project, you will likely need to execute it via the <code>vendor/bin</code> directory of your project, which is where Composer installs executables. For example, to view all of the available Vapor CLI commands, you may use the <code>list</code> command:</p> <div class="mt-5 mb-8 not-prose rounded-2xl relative group text-gray-50 bg-[#0F1117] dark:bg-codeblock ring-1 ring-transparent dark:ring-gray-800/50 codeblock-dark"><div class="min-w-full relative text-sm leading-6 children:!my-0 children:!shadow-none children:!bg-transparent transition-[height] duration-300 ease-in-out" style="font-variant-ligatures:none;height:auto"><div class="overflow-x-auto h-full p-5 [&>pre>code]:pr-[3rem] [&>pre>code>span.line-highlight]:min-w-[calc(100%+3rem)] overflow-y-hidden scrollbar-thin scrollbar-thumb-rounded scrollbar-thumb-white/20 dark:scrollbar-thumb-white/20 hover:scrollbar-thumb-white/25 dark:hover:scrollbar-thumb-white/25 active:scrollbar-thumb-white/25 dark:active:scrollbar-thumb-white/25"><pre class="language-bash"><code class="language-bash"><span class="">php vendor/bin/vapor list</span> </code></pre></div></div></div> <div class="callout my-4 px-5 py-4 overflow-hidden rounded-2xl flex gap-3 border border-sky-500/20 bg-sky-50/50 dark:border-sky-500/30 dark:bg-sky-500/10" data-callout-type="note"><div class="mt-0.5 w-4"><svg width="14" height="14" viewBox="0 0 14 14" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="w-4 h-4 text-sky-500" aria-label="Note"><path fill-rule="evenodd" clip-rule="evenodd" d="M7 1.3C10.14 1.3 12.7 3.86 12.7 7C12.7 10.14 10.14 12.7 7 12.7C5.48908 12.6974 4.0408 12.096 2.97241 11.0276C1.90403 9.9592 1.30264 8.51092 1.3 7C1.3 3.86 3.86 1.3 7 1.3ZM7 0C3.14 0 0 3.14 0 7C0 10.86 3.14 14 7 14C10.86 14 14 10.86 14 7C14 3.14 10.86 0 7 0ZM8 3H6V8H8V3ZM8 9H6V11H8V9Z"></path></svg></div><div class="text-sm prose min-w-0 w-full text-sky-900 dark:text-sky-200"><p>To save keystrokes when interacting with per-project installations of the Vapor CLI, you may add a shell alias to your operating system that aliases the <code>vapor</code> command to <code>php vendor/bin/vapor</code>.</p></div></div> <p>To learn more about a command and its arguments, execute the <code>help</code> command with the name of the command you wish to explore:</p> <div class="mt-5 mb-8 not-prose rounded-2xl relative group text-gray-50 bg-[#0F1117] dark:bg-codeblock ring-1 ring-transparent dark:ring-gray-800/50 codeblock-dark"><div class="min-w-full relative text-sm leading-6 children:!my-0 children:!shadow-none children:!bg-transparent transition-[height] duration-300 ease-in-out" style="font-variant-ligatures:none;height:auto"><div class="overflow-x-auto h-full p-5 [&>pre>code]:pr-[3rem] [&>pre>code>span.line-highlight]:min-w-[calc(100%+3rem)] overflow-y-hidden scrollbar-thin scrollbar-thumb-rounded scrollbar-thumb-white/20 dark:scrollbar-thumb-white/20 hover:scrollbar-thumb-white/25 dark:hover:scrollbar-thumb-white/25 active:scrollbar-thumb-white/25 dark:active:scrollbar-thumb-white/25"><pre class="language-bash"><code class="language-bash"><span class="">php vendor/bin/vapor <span class="token builtin class-name">help</span> deploy</span> </code></pre></div></div></div> <h3 class="flex whitespace-pre-wrap group font-semibold" id="logging-in"><div class="absolute"><a href="#logging-in" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100" aria-label="Navigate to header"><div class="w-6 h-6 rounded-md flex items-center justify-center shadow-sm text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20"><svg xmlns="http://www.w3.org/2000/svg" fill="gray" height="12px" viewBox="0 0 576 512"><path d="M0 256C0 167.6 71.6 96 160 96h72c13.3 0 24 10.7 24 24s-10.7 24-24 24H160C98.1 144 48 194.1 48 256s50.1 112 112 112h72c13.3 0 24 10.7 24 24s-10.7 24-24 24H160C71.6 416 0 344.4 0 256zm576 0c0 88.4-71.6 160-160 160H344c-13.3 0-24-10.7-24-24s10.7-24 24-24h72c61.9 0 112-50.1 112-112s-50.1-112-112-112H344c-13.3 0-24-10.7-24-24s10.7-24 24-24h72c88.4 0 160 71.6 160 160zM184 232H392c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z"></path></svg></div></a></div><span class="cursor-pointer">Logging In</span></h3> <p>After you have installed the Vapor CLI, you should authenticate with your Vapor account using the <code>login</code> command:</p> <div class="mt-5 mb-8 not-prose rounded-2xl relative group text-gray-50 bg-[#0F1117] dark:bg-codeblock ring-1 ring-transparent dark:ring-gray-800/50 codeblock-dark"><div class="min-w-full relative text-sm leading-6 children:!my-0 children:!shadow-none children:!bg-transparent transition-[height] duration-300 ease-in-out" style="font-variant-ligatures:none;height:auto"><div class="overflow-x-auto h-full p-5 [&>pre>code]:pr-[3rem] [&>pre>code>span.line-highlight]:min-w-[calc(100%+3rem)] overflow-y-hidden scrollbar-thin scrollbar-thumb-rounded scrollbar-thumb-white/20 dark:scrollbar-thumb-white/20 hover:scrollbar-thumb-white/25 dark:hover:scrollbar-thumb-white/25 active:scrollbar-thumb-white/25 dark:active:scrollbar-thumb-white/25"><pre class="language-bash"><code class="language-bash"><span class="">vapor login</span> </code></pre></div></div></div> <h2 class="flex whitespace-pre-wrap group font-semibold" id="installing-the-vapor-core"><div class="absolute"><a href="#installing-the-vapor-core" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100" aria-label="Navigate to header"><div class="w-6 h-6 rounded-md flex items-center justify-center shadow-sm text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20"><svg xmlns="http://www.w3.org/2000/svg" fill="gray" height="12px" viewBox="0 0 576 512"><path d="M0 256C0 167.6 71.6 96 160 96h72c13.3 0 24 10.7 24 24s-10.7 24-24 24H160C98.1 144 48 194.1 48 256s50.1 112 112 112h72c13.3 0 24 10.7 24 24s-10.7 24-24 24H160C71.6 416 0 344.4 0 256zm576 0c0 88.4-71.6 160-160 160H344c-13.3 0-24-10.7-24-24s10.7-24 24-24h72c61.9 0 112-50.1 112-112s-50.1-112-112-112H344c-13.3 0-24-10.7-24-24s10.7-24 24-24h72c88.4 0 160 71.6 160 160zM184 232H392c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z"></path></svg></div></a></div><span class="cursor-pointer">Installing The Vapor Core</span></h2> <p>The <code>laravel/vapor-core</code> <a href="https://github.com/laravel/vapor-core" target="_blank" rel="noreferrer">package</a> must be installed as a dependency of every Laravel application that is deployed using Vapor. This package contains various Vapor runtime files and a service provider to allow your application to run on Vapor. You may install the Vapor Core into your project using Composer:</p> <div class="mt-5 mb-8 not-prose rounded-2xl relative group text-gray-50 bg-[#0F1117] dark:bg-codeblock ring-1 ring-transparent dark:ring-gray-800/50 codeblock-dark"><div class="min-w-full relative text-sm leading-6 children:!my-0 children:!shadow-none children:!bg-transparent transition-[height] duration-300 ease-in-out" style="font-variant-ligatures:none;height:auto"><div class="overflow-x-auto h-full p-5 [&>pre>code]:pr-[3rem] [&>pre>code>span.line-highlight]:min-w-[calc(100%+3rem)] overflow-y-hidden scrollbar-thin scrollbar-thumb-rounded scrollbar-thumb-white/20 dark:scrollbar-thumb-white/20 hover:scrollbar-thumb-white/25 dark:hover:scrollbar-thumb-white/25 active:scrollbar-thumb-white/25 dark:active:scrollbar-thumb-white/25"><pre class="language-bash"><code class="language-bash"><span class=""><span class="token function">composer</span> require laravel/vapor-core --update-with-dependencies</span> </code></pre></div></div></div> <h2 class="flex whitespace-pre-wrap group font-semibold" id="sandbox-accounts"><div class="absolute"><a href="#sandbox-accounts" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100" aria-label="Navigate to header"><div class="w-6 h-6 rounded-md flex items-center justify-center shadow-sm text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20"><svg xmlns="http://www.w3.org/2000/svg" fill="gray" height="12px" viewBox="0 0 576 512"><path d="M0 256C0 167.6 71.6 96 160 96h72c13.3 0 24 10.7 24 24s-10.7 24-24 24H160C98.1 144 48 194.1 48 256s50.1 112 112 112h72c13.3 0 24 10.7 24 24s-10.7 24-24 24H160C71.6 416 0 344.4 0 256zm576 0c0 88.4-71.6 160-160 160H344c-13.3 0-24-10.7-24-24s10.7-24 24-24h72c61.9 0 112-50.1 112-112s-50.1-112-112-112H344c-13.3 0-24-10.7-24-24s10.7-24 24-24h72c88.4 0 160 71.6 160 160zM184 232H392c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z"></path></svg></div></a></div><span class="cursor-pointer">Sandbox Accounts</span></h2> <p>After creating a Vapor account, your account will be on our free “sandbox” plan, which allows you to experience the power of Vapor without the upfront commitment of subscribing to a paid plan. A sandbox account allows you to provision services such as networks, databases, and caches. You may add a single project which, once deployed, will be accessible via an <a href="https://docs.aws.amazon.com/lambda/latest/dg/lambda-urls.html" target="_blank" rel="noreferrer">AWS Lambda function URL</a>.</p> <div class="callout my-4 px-5 py-4 overflow-hidden rounded-2xl flex gap-3 border border-amber-500/20 bg-amber-50/50 dark:border-amber-500/30 dark:bg-amber-500/10" data-callout-type="warning"><div class="mt-0.5 w-4"><svg class="flex-none w-5 h-5 text-amber-400 dark:text-amber-300/80" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" aria-label="Warning"><path stroke-linecap="round" stroke-linejoin="round" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"></path></svg></div><div class="text-sm prose min-w-0 w-full text-amber-900 dark:text-amber-200"><p>Sandbox projects may not utilize API Gateway versions, load balancers, firewalls, or custom domains. To utilize these features, you will need to choose a subscription plan.</p></div></div> <h2 class="flex whitespace-pre-wrap group font-semibold" id="teams"><div class="absolute"><a href="#teams" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100" aria-label="Navigate to header"><div class="w-6 h-6 rounded-md flex items-center justify-center shadow-sm text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20"><svg xmlns="http://www.w3.org/2000/svg" fill="gray" height="12px" viewBox="0 0 576 512"><path d="M0 256C0 167.6 71.6 96 160 96h72c13.3 0 24 10.7 24 24s-10.7 24-24 24H160C98.1 144 48 194.1 48 256s50.1 112 112 112h72c13.3 0 24 10.7 24 24s-10.7 24-24 24H160C71.6 416 0 344.4 0 256zm576 0c0 88.4-71.6 160-160 160H344c-13.3 0-24-10.7-24-24s10.7-24 24-24h72c61.9 0 112-50.1 112-112s-50.1-112-112-112H344c-13.3 0-24-10.7-24-24s10.7-24 24-24h72c88.4 0 160 71.6 160 160zM184 232H392c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z"></path></svg></div></a></div><span class="cursor-pointer">Teams</span></h2> <p>When you create your Vapor account, a “Personal” team is automatically created for you. You can rename this team in your team settings. All projects, databases, caches, and other Vapor resources belong to a team. You are free to create as many teams as you wish via the Vapor UI or the <code>team</code> CLI command. There is no additional charge for creating teams, and they serve as a great way to organize your projects by client or topic.</p> <h3 class="flex whitespace-pre-wrap group font-semibold" id="current-team-%26-switching-teams"><div class="absolute"><a href="#current-team-%26-switching-teams" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100" aria-label="Navigate to header"><div class="w-6 h-6 rounded-md flex items-center justify-center shadow-sm text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20"><svg xmlns="http://www.w3.org/2000/svg" fill="gray" height="12px" viewBox="0 0 576 512"><path d="M0 256C0 167.6 71.6 96 160 96h72c13.3 0 24 10.7 24 24s-10.7 24-24 24H160C98.1 144 48 194.1 48 256s50.1 112 112 112h72c13.3 0 24 10.7 24 24s-10.7 24-24 24H160C71.6 416 0 344.4 0 256zm576 0c0 88.4-71.6 160-160 160H344c-13.3 0-24-10.7-24-24s10.7-24 24-24h72c61.9 0 112-50.1 112-112s-50.1-112-112-112H344c-13.3 0-24-10.7-24-24s10.7-24 24-24h72c88.4 0 160 71.6 160 160zM184 232H392c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z"></path></svg></div></a></div><span class="cursor-pointer">Current Team & Switching Teams</span></h3> <p>When managing Vapor resources via the CLI, you will need to be aware of your currently active team. You may view your current team using the <code>team:current</code> command:</p> <div class="mt-5 mb-8 not-prose rounded-2xl relative group text-gray-50 bg-[#0F1117] dark:bg-codeblock ring-1 ring-transparent dark:ring-gray-800/50 codeblock-dark"><div class="min-w-full relative text-sm leading-6 children:!my-0 children:!shadow-none children:!bg-transparent transition-[height] duration-300 ease-in-out" style="font-variant-ligatures:none;height:auto"><div class="overflow-x-auto h-full p-5 [&>pre>code]:pr-[3rem] [&>pre>code>span.line-highlight]:min-w-[calc(100%+3rem)] overflow-y-hidden scrollbar-thin scrollbar-thumb-rounded scrollbar-thumb-white/20 dark:scrollbar-thumb-white/20 hover:scrollbar-thumb-white/25 dark:hover:scrollbar-thumb-white/25 active:scrollbar-thumb-white/25 dark:active:scrollbar-thumb-white/25"><pre class="language-bash"><code class="language-bash"><span class="">vapor team:current</span> </code></pre></div></div></div> <p>To change your active team, you may use the <code>team:switch</code> command:</p> <div class="mt-5 mb-8 not-prose rounded-2xl relative group text-gray-50 bg-[#0F1117] dark:bg-codeblock ring-1 ring-transparent dark:ring-gray-800/50 codeblock-dark"><div class="min-w-full relative text-sm leading-6 children:!my-0 children:!shadow-none children:!bg-transparent transition-[height] duration-300 ease-in-out" style="font-variant-ligatures:none;height:auto"><div class="overflow-x-auto h-full p-5 [&>pre>code]:pr-[3rem] [&>pre>code>span.line-highlight]:min-w-[calc(100%+3rem)] overflow-y-hidden scrollbar-thin scrollbar-thumb-rounded scrollbar-thumb-white/20 dark:scrollbar-thumb-white/20 hover:scrollbar-thumb-white/25 dark:hover:scrollbar-thumb-white/25 active:scrollbar-thumb-white/25 dark:active:scrollbar-thumb-white/25"><pre class="language-bash"><code class="language-bash"><span class="">vapor team:switch</span> </code></pre></div></div></div> <h3 class="flex whitespace-pre-wrap group font-semibold" id="collaborators"><div class="absolute"><a href="#collaborators" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100" aria-label="Navigate to header"><div class="w-6 h-6 rounded-md flex items-center justify-center shadow-sm text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20"><svg xmlns="http://www.w3.org/2000/svg" fill="gray" height="12px" viewBox="0 0 576 512"><path d="M0 256C0 167.6 71.6 96 160 96h72c13.3 0 24 10.7 24 24s-10.7 24-24 24H160C98.1 144 48 194.1 48 256s50.1 112 112 112h72c13.3 0 24 10.7 24 24s-10.7 24-24 24H160C71.6 416 0 344.4 0 256zm576 0c0 88.4-71.6 160-160 160H344c-13.3 0-24-10.7-24-24s10.7-24 24-24h72c61.9 0 112-50.1 112-112s-50.1-112-112-112H344c-13.3 0-24-10.7-24-24s10.7-24 24-24h72c88.4 0 160 71.6 160 160zM184 232H392c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z"></path></svg></div></a></div><span class="cursor-pointer">Collaborators</span></h3> <p>You can invite more people to your team via the “Team Settings” menu in the Vapor UI, or using the <code>team:add</code> CLI command. When you add a new collaborator to your team via the Vapor UI, you may select the permissions to assign to that person. For example, you can prevent a given team member from deleting databases or caches.</p> <p>You may remove collaborators from your team using the Vapor UI or <code>team:remove</code> CLI command.</p> <h2 class="flex whitespace-pre-wrap group font-semibold" id="linking-with-aws"><div class="absolute"><a href="#linking-with-aws" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100" aria-label="Navigate to header"><div class="w-6 h-6 rounded-md flex items-center justify-center shadow-sm text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20"><svg xmlns="http://www.w3.org/2000/svg" fill="gray" height="12px" viewBox="0 0 576 512"><path d="M0 256C0 167.6 71.6 96 160 96h72c13.3 0 24 10.7 24 24s-10.7 24-24 24H160C98.1 144 48 194.1 48 256s50.1 112 112 112h72c13.3 0 24 10.7 24 24s-10.7 24-24 24H160C71.6 416 0 344.4 0 256zm576 0c0 88.4-71.6 160-160 160H344c-13.3 0-24-10.7-24-24s10.7-24 24-24h72c61.9 0 112-50.1 112-112s-50.1-112-112-112H344c-13.3 0-24-10.7-24-24s10.7-24 24-24h72c88.4 0 160 71.6 160 160zM184 232H392c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z"></path></svg></div></a></div><span class="cursor-pointer">Linking With AWS</span></h2> <p>In order to deploy projects or create other resources using Vapor, you will need to link an active AWS account on your team’s settings management page.</p> <h3 class="flex whitespace-pre-wrap group font-semibold" id="creating-an-iam-role"><div class="absolute"><a href="#creating-an-iam-role" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100" aria-label="Navigate to header"><div class="w-6 h-6 rounded-md flex items-center justify-center shadow-sm text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20"><svg xmlns="http://www.w3.org/2000/svg" fill="gray" height="12px" viewBox="0 0 576 512"><path d="M0 256C0 167.6 71.6 96 160 96h72c13.3 0 24 10.7 24 24s-10.7 24-24 24H160C98.1 144 48 194.1 48 256s50.1 112 112 112h72c13.3 0 24 10.7 24 24s-10.7 24-24 24H160C71.6 416 0 344.4 0 256zm576 0c0 88.4-71.6 160-160 160H344c-13.3 0-24-10.7-24-24s10.7-24 24-24h72c61.9 0 112-50.1 112-112s-50.1-112-112-112H344c-13.3 0-24-10.7-24-24s10.7-24 24-24h72c88.4 0 160 71.6 160 160zM184 232H392c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z"></path></svg></div></a></div><span class="cursor-pointer">Creating An IAM Role</span></h3> <p>To create a new IAM role, navigate to the IAM service on your AWS dashboard. Once you are in the IAM dashboard, you may select “Roles” from the left-side navigation panel and click the “Create Role” button.</p> <p>The process for creating the role is outlined in these steps:</p> <ol> <li>Choose “AWS account” as the trusted entity type, and select “Another AWS account.”</li> <li>Enter the “Vapor Account ID” from the Vapor dashboard, then click “Next.”</li> <li>In the “Permissions policies” section, either grant full administrator access by selecting the <code>AdministratorAccess</code> policy or create a custom policy with the <a href="/introduction#permissions">specific permissions</a> required by Vapor. After selecting a policy, click “Next.”</li> <li>In the “Name, review, and create” section, provide a name and description for the role.</li> <li>Update the “Trust policy” under “Select trusted entities” by enabling the “Require external ID” checkbox and entering the “Team External ID” shown in the Vapor dashboard.</li> <li>Complete the process by creating the role.</li> <li>Copy the role ARN displayed in the AWS dashboard and add it to your AWS credentials in Vapor.</li> </ol> <h4 class="flex whitespace-pre-wrap group font-semibold" id="permissions"><div class="absolute"><a href="#permissions" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100" aria-label="Navigate to header"><div class="w-6 h-6 rounded-md flex items-center justify-center shadow-sm text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20"><svg xmlns="http://www.w3.org/2000/svg" fill="gray" height="12px" viewBox="0 0 576 512"><path d="M0 256C0 167.6 71.6 96 160 96h72c13.3 0 24 10.7 24 24s-10.7 24-24 24H160C98.1 144 48 194.1 48 256s50.1 112 112 112h72c13.3 0 24 10.7 24 24s-10.7 24-24 24H160C71.6 416 0 344.4 0 256zm576 0c0 88.4-71.6 160-160 160H344c-13.3 0-24-10.7-24-24s10.7-24 24-24h72c61.9 0 112-50.1 112-112s-50.1-112-112-112H344c-13.3 0-24-10.7-24-24s10.7-24 24-24h72c88.4 0 160 71.6 160 160zM184 232H392c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z"></path></svg></div></a></div><span class="cursor-pointer">Permissions</span></h4> <div class="callout my-4 px-5 py-4 overflow-hidden rounded-2xl flex gap-3 border border-sky-500/20 bg-sky-50/50 dark:border-sky-500/30 dark:bg-sky-500/10" data-callout-type="note"><div class="mt-0.5 w-4"><svg width="14" height="14" viewBox="0 0 14 14" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="w-4 h-4 text-sky-500" aria-label="Note"><path fill-rule="evenodd" clip-rule="evenodd" d="M7 1.3C10.14 1.3 12.7 3.86 12.7 7C12.7 10.14 10.14 12.7 7 12.7C5.48908 12.6974 4.0408 12.096 2.97241 11.0276C1.90403 9.9592 1.30264 8.51092 1.3 7C1.3 3.86 3.86 1.3 7 1.3ZM7 0C3.14 0 0 3.14 0 7C0 10.86 3.14 14 7 14C10.86 14 14 10.86 14 7C14 3.14 10.86 0 7 0ZM8 3H6V8H8V3ZM8 9H6V11H8V9Z"></path></svg></div><div class="text-sm prose min-w-0 w-full text-sky-900 dark:text-sky-200"><p>Since Vapor manages many types of resources across more than a dozen AWS services, it may be convenient to create a role with the <code>AdministratorAccess</code> policy. If desired, you may create a separate AWS account to house this role and contain all of your Vapor resources.</p></div></div> <p>On the permissions management screen, you may grant full administrator access to the IAM role by selecting the “AdministratorAccess” policy. Or, you would prefer to not provide administrator access to Vapor, you may instead create a custom permission policy with the specific permissions needed by Vapor.</p> <p>It is necessary to create two policies due to the policy size limit set by AWS. To do so, select “Create policy” from the “Permissions policies” panel. Choose the JSON option and provide the first permission definition below. Then, follow the same process to create another policy using the second definition listed below. Once the policies have been defined, you may attach them to your new IAM role:</p> <div class="mt-5 mb-8 not-prose rounded-2xl relative group text-gray-50 bg-[#0F1117] dark:bg-codeblock ring-1 ring-transparent dark:ring-gray-800/50 codeblock-dark"><div class="min-w-full relative text-sm leading-6 children:!my-0 children:!shadow-none children:!bg-transparent transition-[height] duration-300 ease-in-out" style="font-variant-ligatures:none;height:auto"><div class="overflow-x-auto h-full p-5 [&>pre>code]:pr-[3rem] [&>pre>code>span.line-highlight]:min-w-[calc(100%+3rem)] overflow-y-hidden scrollbar-thin scrollbar-thumb-rounded scrollbar-thumb-white/20 dark:scrollbar-thumb-white/20 hover:scrollbar-thumb-white/25 dark:hover:scrollbar-thumb-white/25 active:scrollbar-thumb-white/25 dark:active:scrollbar-thumb-white/25"><pre class="language-json"><code class="language-json"><span class=""><span class="token punctuation">{</span></span> <span class=""> <span class="token property">"Version"</span><span class="token operator">:</span> <span class="token string">"2012-10-17"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token property">"Statement"</span><span class="token operator">:</span> <span class="token punctuation">[</span></span> <span class=""> <span class="token punctuation">{</span></span> <span class=""> <span class="token property">"Sid"</span><span class="token operator">:</span> <span class="token string">"VaporPolicy"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token property">"Effect"</span><span class="token operator">:</span> <span class="token string">"Allow"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token property">"Action"</span><span class="token operator">:</span> <span class="token punctuation">[</span></span> <span class=""> <span class="token string">"acm:AddTagsToCertificate"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"acm:DeleteCertificate"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"acm:DescribeCertificate"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"acm:ImportCertificate"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"acm:RequestCertificate"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"apigateway:DELETE"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"apigateway:GET"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"apigateway:PATCH"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"apigateway:POST"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"apigateway:PUT"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"apigateway:SetWebACL"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"budgets:ModifyBudget"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"budgets:ViewBudget"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"cloudformation:CreateStack"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"cloudformation:DeleteStack"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"cloudformation:DescribeStacks"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"cloudformation:UpdateStack"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"cloudfront:CreateOriginAccessControl"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"cloudfront:CreateDistribution"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"cloudfront:DeleteDistribution"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"cloudfront:GetDistribution"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"cloudfront:GetDistributionConfig"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"cloudfront:UpdateDistribution"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"cloudwatch:DeleteAlarms"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"cloudwatch:GetMetricStatistics"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"cloudwatch:PutMetricAlarm"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"dynamodb:CreateTable"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"dynamodb:DescribeTable"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"dynamodb:DescribeTimeToLive"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"dynamodb:TagResource"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"dynamodb:UpdateTimeToLive"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:AllocateAddress"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:AssociateAddress"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:AssociateRouteTable"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:AttachInternetGateway"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:AuthorizeSecurityGroupIngress"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:CreateInternetGateway"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:CreateNatGateway"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:CreateRoute"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:CreateRouteTable"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:CreateSubnet"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:CreateTags"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:CreateVpc"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:CreateVpcEndpoint"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:DeleteInternetGateway"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:DeleteKeyPair"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:DeleteNatGateway"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:DeleteRoute"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:DeleteRouteTable"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:DeleteSubnet"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:DeleteVolume"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:DeleteVpc"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:DeleteVpcEndpoints"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:DescribeAddresses"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:DescribeAvailabilityZones"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:DescribeImages"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:DescribeInstanceAttribute"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:DescribeInstances"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:DescribeInternetGateways"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:DescribeKeyPairs"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:DescribeNatGateways"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:DescribeNetworkAcls"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:DescribeRegions"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:DescribeRouteTables"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:DescribeSecurityGroupRules"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:DescribeSecurityGroups"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:DescribeSnapshots"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:DescribeSubnets"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:DescribeTransitGatewayRouteTables"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:DescribeTransitGatewayVpcAttachments"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:DescribeTransitGateways"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:DescribeVolumes"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:DescribeVpcEndpoints"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:DescribeVpcs"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:DetachInternetGateway"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:DisassociateRouteTable"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:ImportKeyPair"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:ModifySubnetAttribute"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:ModifyVpcAttribute"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:ReleaseAddress"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:RevokeSecurityGroupEgress"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:RevokeSecurityGroupIngress"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:RunInstances"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ec2:TerminateInstances"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ecr:BatchCheckLayerAvailability"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ecr:BatchDeleteImage"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ecr:CompleteLayerUpload"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ecr:CreateRepository"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ecr:DeleteRepository"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ecr:GetAuthorizationToken"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ecr:GetRepositoryPolicy"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ecr:InitiateLayerUpload"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ecr:PutImage"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ecr:SetRepositoryPolicy"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ecr:UploadLayerPart"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"elasticache:AddTagsToResource"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"elasticache:CreateCacheSubnetGroup"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"elasticache:CreateReplicationGroup"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"elasticache:CreateServerlessCache"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"elasticache:DeleteCacheSubnetGroup"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"elasticache:DeleteReplicationGroup"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"elasticache:DeleteServerlessCache"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"elasticache:DescribeCacheSubnetGroups"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"elasticache:DescribeReplicationGroups"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"elasticache:DescribeServerlessCaches"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"elasticache:ListTagsForResource"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"elasticache:ModifyReplicationGroupShardConfiguration"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"elasticache:ModifyServerlessCache"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"elasticloadbalancing:AddListenerCertificates"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"elasticloadbalancing:AddTags"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"elasticloadbalancing:CreateListener"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"elasticloadbalancing:CreateLoadBalancer"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"elasticloadbalancing:CreateRule"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"elasticloadbalancing:CreateTargetGroup"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"elasticloadbalancing:DeleteLoadBalancer"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"elasticloadbalancing:DescribeLoadBalancers"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"elasticloadbalancing:DescribeRules"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"elasticloadbalancing:DescribeTargetGroups"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"elasticloadbalancing:ModifyListener"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"elasticloadbalancing:ModifyRule"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"elasticloadbalancing:ModifyTargetGroupAttributes"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"elasticloadbalancing:RegisterTargets"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"elasticloadbalancing:SetWebAcl"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"events:DeleteRule"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"events:DescribeRule"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"events:ListTargetsByRule"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"events:PutRule"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"events:PutTargets"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"events:RemoveTargets"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"iam:CreateRole"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"iam:CreateServiceLinkedRole"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"iam:GetRole"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"iam:GetUser"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"iam:PassRole"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"iam:PutRolePolicy"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"iam:UpdateAssumeRolePolicy"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"kms:CreateGrant"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"kms:Decrypt"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"kms:DescribeKey"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"kms:Encrypt"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"kms:GenerateDataKey"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"lambda:AddPermission"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"lambda:CreateAlias"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"lambda:CreateEventSourceMapping"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"lambda:CreateFunction"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"lambda:CreateFunctionUrlConfig"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"lambda:DeleteFunction"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"lambda:DeleteFunctionConcurrency"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"lambda:DeleteProvisionedConcurrencyConfig"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"lambda:GetAccountSettings"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"lambda:GetAlias"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"lambda:GetFunction"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"lambda:GetFunctionUrlConfig"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"lambda:GetLayerVersion"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"lambda:GetPolicy"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"lambda:InvokeFunction"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"lambda:ListEventSourceMappings"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"lambda:ListVersionsByFunction"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"lambda:PublishVersion"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"lambda:PutFunctionConcurrency"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"lambda:PutFunctionEventInvokeConfig"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"lambda:PutProvisionedConcurrencyConfig"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"lambda:TagResource"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"lambda:UpdateAlias"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"lambda:UpdateEventSourceMapping"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"lambda:UpdateFunctionCode"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"lambda:UpdateFunctionConfiguration"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"logs:FilterLogEvents"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"rds:AddTagsToResource"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"rds:CreateDBCluster"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"rds:CreateDBInstance"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"rds:CreateDBProxy"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"rds:CreateDBSubnetGroup"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"rds:DeleteDBCluster"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"rds:DeleteDBInstance"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"rds:DeleteDBProxy"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"rds:DeleteDBSubnetGroup"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"rds:DescribeDBClusters"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"rds:DescribeDBEngineVersions"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"rds:DescribeDBInstances"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"rds:DescribeDBProxies"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"rds:DescribeDBSubnetGroups"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"rds:ListTagsForResource"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"rds:ModifyDBCluster"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"rds:ModifyDBInstance"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"rds:RegisterDBProxyTargets"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"rds:RestoreDBInstanceToPointInTime"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"route53:ChangeResourceRecordSets"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"route53:CreateHostedZone"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"route53:GetHostedZone"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"route53:ListHostedZonesByName"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"route53:ListResourceRecordSets"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"s3:CreateBucket"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"s3:DeleteBucket"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"s3:DeleteBucketPolicy"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"s3:DeleteObject"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"s3:GetBucketCORS"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"s3:GetBucketLocation"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"s3:GetBucketTagging"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"s3:GetBucketVersioning"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"s3:GetObject"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"s3:ListAllMyBuckets"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"s3:ListBucket"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"s3:PutBucketCORS"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"s3:PutBucketOwnershipControls"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"s3:PutBucketPublicAccessBlock"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"s3:PutLifecycleConfiguration"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"s3:PutObject"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"s3:PutObjectAcl"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"s3:PutBucketPolicy"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"secretsmanager:CreateSecret"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"secretsmanager:DeleteSecret"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"secretsmanager:GetSecretValue"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"secretsmanager:TagResource"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"servicequotas:GetServiceQuota"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ses:VerifyDomainDkim"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ses:VerifyDomainIdentity"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"sns:ConfirmSubscription"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"sns:CreateTopic"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"sns:GetTopicAttributes"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"sns:ListSubscriptionsByTopic"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"sns:SetTopicAttributes"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"sns:Subscribe"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"sns:TagResource"</span></span> <span class=""> <span class="token punctuation">]</span><span class="token punctuation">,</span></span> <span class=""> <span class="token property">"Resource"</span><span class="token operator">:</span> <span class="token string">"*"</span></span> <span class=""> <span class="token punctuation">}</span></span> <span class=""> <span class="token punctuation">]</span></span> <span class=""><span class="token punctuation">}</span></span> </code></pre></div></div></div> <div class="mt-5 mb-8 not-prose rounded-2xl relative group text-gray-50 bg-[#0F1117] dark:bg-codeblock ring-1 ring-transparent dark:ring-gray-800/50 codeblock-dark"><div class="min-w-full relative text-sm leading-6 children:!my-0 children:!shadow-none children:!bg-transparent transition-[height] duration-300 ease-in-out" style="font-variant-ligatures:none;height:auto"><div class="overflow-x-auto h-full p-5 [&>pre>code]:pr-[3rem] [&>pre>code>span.line-highlight]:min-w-[calc(100%+3rem)] overflow-y-hidden scrollbar-thin scrollbar-thumb-rounded scrollbar-thumb-white/20 dark:scrollbar-thumb-white/20 hover:scrollbar-thumb-white/25 dark:hover:scrollbar-thumb-white/25 active:scrollbar-thumb-white/25 dark:active:scrollbar-thumb-white/25"><pre class="language-json"><code class="language-json"><span class=""><span class="token punctuation">{</span></span> <span class=""> <span class="token property">"Version"</span><span class="token operator">:</span> <span class="token string">"2012-10-17"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token property">"Statement"</span><span class="token operator">:</span> <span class="token punctuation">[</span></span> <span class=""> <span class="token punctuation">{</span></span> <span class=""> <span class="token property">"Sid"</span><span class="token operator">:</span> <span class="token string">"VaporPolicy"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token property">"Effect"</span><span class="token operator">:</span> <span class="token string">"Allow"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token property">"Action"</span><span class="token operator">:</span> <span class="token punctuation">[</span></span> <span class=""> <span class="token string">"sqs:CreateQueue"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"sqs:DeleteQueue"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"sqs:GetQueueAttributes"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"sqs:GetQueueUrl"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"sqs:SetQueueAttributes"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ssm:DeleteParameter"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ssm:DeleteParameters"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ssm:PutParameter"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"ssm:UpdateServiceSetting"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"wafv2:AssociateWebACL"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"wafv2:CreateWebACL"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"wafv2:DeleteWebACL"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"wafv2:GetWebACL"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"wafv2:ListResourcesForWebACL"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"wafv2:TagResource"</span><span class="token punctuation">,</span></span> <span class=""> <span class="token string">"wafv2:UpdateWebACL"</span></span> <span class=""> <span class="token punctuation">]</span><span class="token punctuation">,</span></span> <span class=""> <span class="token property">"Resource"</span><span class="token operator">:</span> <span class="token string">"*"</span></span> <span class=""> <span class="token punctuation">}</span></span> <span class=""> <span class="token punctuation">]</span></span> <span class=""><span class="token punctuation">}</span></span> </code></pre></div></div></div> <div class="callout my-4 px-5 py-4 overflow-hidden rounded-2xl flex gap-3 border border-amber-500/20 bg-amber-50/50 dark:border-amber-500/30 dark:bg-amber-500/10" data-callout-type="warning"><div class="mt-0.5 w-4"><svg class="flex-none w-5 h-5 text-amber-400 dark:text-amber-300/80" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" aria-label="Warning"><path stroke-linecap="round" stroke-linejoin="round" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"></path></svg></div><div class="text-sm prose min-w-0 w-full text-amber-900 dark:text-amber-200"><p>It’s probable this list of permissions will change as we add new features to Vapor, which may result in unexpected errors if your policy is not kept up to date.</p></div></div> <h4 class="flex whitespace-pre-wrap group font-semibold" id="defining-your-aws-budget"><div class="absolute"><a href="#defining-your-aws-budget" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100" aria-label="Navigate to header"><div class="w-6 h-6 rounded-md flex items-center justify-center shadow-sm text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20"><svg xmlns="http://www.w3.org/2000/svg" fill="gray" height="12px" viewBox="0 0 576 512"><path d="M0 256C0 167.6 71.6 96 160 96h72c13.3 0 24 10.7 24 24s-10.7 24-24 24H160C98.1 144 48 194.1 48 256s50.1 112 112 112h72c13.3 0 24 10.7 24 24s-10.7 24-24 24H160C71.6 416 0 344.4 0 256zm576 0c0 88.4-71.6 160-160 160H344c-13.3 0-24-10.7-24-24s10.7-24 24-24h72c61.9 0 112-50.1 112-112s-50.1-112-112-112H344c-13.3 0-24-10.7-24-24s10.7-24 24-24h72c88.4 0 160 71.6 160 160zM184 232H392c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z"></path></svg></div></a></div><span class="cursor-pointer">Defining Your AWS Budget</span></h4> <p>When linking your AWS account to Vapor, it is important to stay informed about your AWS costs. This can be done directly in the AWS Console using the AWS Budgets service. In addition, you can use Vapor’s managed budgets to define your monthly AWS budget in USD, while also configuring multiple alarms directly on the “Team Settings > AWS Accounts” screen of the Vapor UI. At this time, up to five alarms can be configured:</p> <ul> <li> <p>Actual cost > 85%</p> </li> <li> <p>Actual cost > 100%</p> </li> <li> <p>Actual cost > 200%</p> </li> <li> <p>Actual cost > 500%</p> </li> <li> <p>Forecasted cost > 100%</p> </li> </ul> <p>Each alarm can be triggered once per monthly billing period. When an alarm is triggered, the team owner will receive an email, allowing them to act quickly and avoid unexpected charges.</p> <h4 class="flex whitespace-pre-wrap group font-semibold" id="aws-service-limits"><div class="absolute"><a href="#aws-service-limits" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100" aria-label="Navigate to header"><div class="w-6 h-6 rounded-md flex items-center justify-center shadow-sm text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20"><svg xmlns="http://www.w3.org/2000/svg" fill="gray" height="12px" viewBox="0 0 576 512"><path d="M0 256C0 167.6 71.6 96 160 96h72c13.3 0 24 10.7 24 24s-10.7 24-24 24H160C98.1 144 48 194.1 48 256s50.1 112 112 112h72c13.3 0 24 10.7 24 24s-10.7 24-24 24H160C71.6 416 0 344.4 0 256zm576 0c0 88.4-71.6 160-160 160H344c-13.3 0-24-10.7-24-24s10.7-24 24-24h72c61.9 0 112-50.1 112-112s-50.1-112-112-112H344c-13.3 0-24-10.7-24-24s10.7-24 24-24h72c88.4 0 160 71.6 160 160zM184 232H392c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z"></path></svg></div></a></div><span class="cursor-pointer">AWS Service Limits</span></h4> <p>AWS Service Limits can be increased through the following options:</p> <div class="[&>div]:border-0 [&>div]:rounded-none [&>div>button]:rounded-none [&>div]:mb-0 overflow-hidden mt-0 mb-3 rounded-xl prose prose-gray dark:prose-invert divide-y divide-inherit border dark:border-gray-800/50"><div role="button" class="border-standard rounded-2xl mb-3 overflow-hidden bg-background-light dark:bg-codeblock cursor-default"><button class="relative not-prose flex flex-row items-center content-center w-full py-4 px-5 space-x-2 hover:bg-gray-100 hover:dark:bg-gray-800 rounded-t-xl" aria-controls="from-the-aws-console accordion children" aria-expanded="false"><div id="from-the-aws-console" class="absolute -top-[8rem]"></div><div class="mr-0.5"><svg class="h-3 w-3 transition bg-gray-700 dark:bg-gray-400 duration-75" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/solid/caret-right.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/solid/caret-right.svg);mask-repeat:no-repeat;mask-position:center"></svg></div><div class="leading-tight text-left" contenteditable="false"><p class="m-0 font-medium text-gray-900 dark:text-gray-200">From the AWS console</p></div></button><div id="from-the-aws-console accordion children" role="contentinfo" class="mt-2 mb-4 mx-6 hidden overflow-x-auto cursor-default"><ol> <li>Open the Service Quotas console.</li> <li>In the navigation pane, choose AWS services.</li> <li>Select a service.</li> <li>Select a quota.</li> <li>Follow the directions to request a quota increase.</li> </ol></div></div><div role="button" class="border-standard rounded-2xl mb-3 overflow-hidden bg-background-light dark:bg-codeblock cursor-default"><button class="relative not-prose flex flex-row items-center content-center w-full py-4 px-5 space-x-2 hover:bg-gray-100 hover:dark:bg-gray-800 rounded-t-xl" aria-controls="from-the-aws-cli accordion children" aria-expanded="false"><div id="from-the-aws-cli" class="absolute -top-[8rem]"></div><div class="mr-0.5"><svg class="h-3 w-3 transition bg-gray-700 dark:bg-gray-400 duration-75" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/solid/caret-right.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/solid/caret-right.svg);mask-repeat:no-repeat;mask-position:center"></svg></div><div class="leading-tight text-left" contenteditable="false"><p class="m-0 font-medium text-gray-900 dark:text-gray-200">From the AWS CLI</p></div></button><div id="from-the-aws-cli accordion children" role="contentinfo" class="mt-2 mb-4 mx-6 hidden overflow-x-auto cursor-default"><ol> <li>Use the <a href="https://docs.aws.amazon.com/cli/latest/reference/service-quotas/request-service-quota-increase.html" target="_blank" rel="noreferrer">request-service-quota-increase</a> AWS CLI command.</li> </ol></div></div><div role="button" class="border-standard rounded-2xl mb-3 overflow-hidden bg-background-light dark:bg-codeblock cursor-default"><button class="relative not-prose flex flex-row items-center content-center w-full py-4 px-5 space-x-2 hover:bg-gray-100 hover:dark:bg-gray-800 rounded-t-xl" aria-controls="from-a-support-case accordion children" aria-expanded="false"><div id="from-a-support-case" class="absolute -top-[8rem]"></div><div class="mr-0.5"><svg class="h-3 w-3 transition bg-gray-700 dark:bg-gray-400 duration-75" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/solid/caret-right.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/solid/caret-right.svg);mask-repeat:no-repeat;mask-position:center"></svg></div><div class="leading-tight text-left" contenteditable="false"><p class="m-0 font-medium text-gray-900 dark:text-gray-200">From a support case</p></div></button><div id="from-a-support-case accordion children" role="contentinfo" class="mt-2 mb-4 mx-6 hidden overflow-x-auto cursor-default"><ul> <li>If a service is not yet available in Service Quotas, use the AWS Support Center Console to create a <a href="https://support.console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase" target="_blank" rel="noreferrer">service quota increase case</a>.</li> <li>If the service is available in Service Quotas, AWS recommends that you use the <a href="https://console.aws.amazon.com/servicequotas/home" target="_blank" rel="noreferrer">Service Quotas console</a> instead of creating a support case.</li> </ul></div></div></div> <div class="callout my-4 px-5 py-4 overflow-hidden rounded-2xl flex gap-3 border border-sky-500/20 bg-sky-50/50 dark:border-sky-500/30 dark:bg-sky-500/10" data-callout-type="note"><div class="mt-0.5 w-4"><svg width="14" height="14" viewBox="0 0 14 14" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="w-4 h-4 text-sky-500" aria-label="Note"><path fill-rule="evenodd" clip-rule="evenodd" d="M7 1.3C10.14 1.3 12.7 3.86 12.7 7C12.7 10.14 10.14 12.7 7 12.7C5.48908 12.6974 4.0408 12.096 2.97241 11.0276C1.90403 9.9592 1.30264 8.51092 1.3 7C1.3 3.86 3.86 1.3 7 1.3ZM7 0C3.14 0 0 3.14 0 7C0 10.86 3.14 14 7 14C10.86 14 14 10.86 14 7C14 3.14 10.86 0 7 0ZM8 3H6V8H8V3ZM8 9H6V11H8V9Z"></path></svg></div><div class="text-sm prose min-w-0 w-full text-sky-900 dark:text-sky-200"><p>For additional information, refer to the following AWS documentation:</p><ul> <li><a href="https://docs.aws.amazon.com/servicequotas/latest/userguide/request-quota-increase.html" target="_blank" rel="noreferrer">Requesting a quota increase</a> in the <em>Service Quotas User Guide</em>.</li> <li><a href="https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html" target="_blank" rel="noreferrer">AWS Service Quotas reference</a>.</li> </ul></div></div> <h2 class="flex whitespace-pre-wrap group font-semibold" id="notification-methods"><div class="absolute"><a href="#notification-methods" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100" aria-label="Navigate to header"><div class="w-6 h-6 rounded-md flex items-center justify-center shadow-sm text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20"><svg xmlns="http://www.w3.org/2000/svg" fill="gray" height="12px" viewBox="0 0 576 512"><path d="M0 256C0 167.6 71.6 96 160 96h72c13.3 0 24 10.7 24 24s-10.7 24-24 24H160C98.1 144 48 194.1 48 256s50.1 112 112 112h72c13.3 0 24 10.7 24 24s-10.7 24-24 24H160C71.6 416 0 344.4 0 256zm576 0c0 88.4-71.6 160-160 160H344c-13.3 0-24-10.7-24-24s10.7-24 24-24h72c61.9 0 112-50.1 112-112s-50.1-112-112-112H344c-13.3 0-24-10.7-24-24s10.7-24 24-24h72c88.4 0 160 71.6 160 160zM184 232H392c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z"></path></svg></div></a></div><span class="cursor-pointer">Notification Methods</span></h2> <h3 class="flex whitespace-pre-wrap group font-semibold" id="slack"><div class="absolute"><a href="#slack" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100" aria-label="Navigate to header"><div class="w-6 h-6 rounded-md flex items-center justify-center shadow-sm text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20"><svg xmlns="http://www.w3.org/2000/svg" fill="gray" height="12px" viewBox="0 0 576 512"><path d="M0 256C0 167.6 71.6 96 160 96h72c13.3 0 24 10.7 24 24s-10.7 24-24 24H160C98.1 144 48 194.1 48 256s50.1 112 112 112h72c13.3 0 24 10.7 24 24s-10.7 24-24 24H160C71.6 416 0 344.4 0 256zm576 0c0 88.4-71.6 160-160 160H344c-13.3 0-24-10.7-24-24s10.7-24 24-24h72c61.9 0 112-50.1 112-112s-50.1-112-112-112H344c-13.3 0-24-10.7-24-24s10.7-24 24-24h72c88.4 0 160 71.6 160 160zM184 232H392c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z"></path></svg></div></a></div><span class="cursor-pointer">Slack</span></h3> <p>In order to receive notifications via Slack, you will need to <a href="https://api.slack.com/apps" target="_blank" rel="noreferrer">create a Slack App</a> and select the workspace to which the Slack App should be installed.</p> <p>Once the Slack App has been created, visit the <strong>Incoming Webhooks</strong> settings pane of your App under the “Features” sidebar. Then, activate the Incoming Webhooks feature using the activation switch.</p> <p>Once activated, you can create a new Incoming Webhook using the <strong>Add New Webhook to Workspace</strong> button. Finally, you should copy the Webhook URL provided by Slack and insert into your team’s <a href="https://vapor.laravel.com/app/team/settings/notification-methods" target="_blank" rel="noreferrer">Notifications Settings</a>. </p> <h2 class="flex whitespace-pre-wrap group font-semibold" id="legal-and-compliance"><div class="absolute"><a href="#legal-and-compliance" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100" aria-label="Navigate to header"><div class="w-6 h-6 rounded-md flex items-center justify-center shadow-sm text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20"><svg xmlns="http://www.w3.org/2000/svg" fill="gray" height="12px" viewBox="0 0 576 512"><path d="M0 256C0 167.6 71.6 96 160 96h72c13.3 0 24 10.7 24 24s-10.7 24-24 24H160C98.1 144 48 194.1 48 256s50.1 112 112 112h72c13.3 0 24 10.7 24 24s-10.7 24-24 24H160C71.6 416 0 344.4 0 256zm576 0c0 88.4-71.6 160-160 160H344c-13.3 0-24-10.7-24-24s10.7-24 24-24h72c61.9 0 112-50.1 112-112s-50.1-112-112-112H344c-13.3 0-24-10.7-24-24s10.7-24 24-24h72c88.4 0 160 71.6 160 160zM184 232H392c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z"></path></svg></div></a></div><span class="cursor-pointer">Legal and Compliance</span></h2> <p>Our <a href="https://vapor.laravel.com/terms" target="_blank" rel="noreferrer">Terms of Service</a> and <a href="https://vapor.laravel.com/privacy" target="_blank" rel="noreferrer">Privacy Policy</a> provide details on the terms, conditions, and privacy practices for using Laravel Vapor.</p></div><div class="leading-6 mt-14"><div class="pb-16 w-full"><div class="flex flex-col gap-y-4 xl:flex-col xl:gap-6 min-[1400px]:flex-row md:flex-row md:justify-end"><div class="flex flex-row gap-5 items-center grow justify-between md:justify-start xl:justify-between min-[1400px]:justify-start"><p class="text-sm text-gray-600 dark:text-gray-400">Was this page helpful?</p><div class="flex flex-row gap-3 items-center"><button class="px-3.5 py-2 flex flex-row gap-3 items-center border-standard rounded-xl text-gray-600 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300 bg-white/50 dark:bg-codeblock/50 hover:border-gray-500 hover:dark:border-gray-500"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" class="fill-current"><path d="M10.1187 1.08741C8.925 0.746789 7.67813 1.43741 7.3375 2.63116L7.15938 3.25616C7.04375 3.66241 6.83438 4.03741 6.55 4.34991L4.94688 6.11241C4.66875 6.41866 4.69062 6.89366 4.99687 7.17179C5.30312 7.44991 5.77813 7.42804 6.05625 7.12179L7.65938 5.35929C8.1 4.87491 8.42188 4.29679 8.6 3.66866L8.77812 3.04366C8.89062 2.64679 9.30625 2.41554 9.70625 2.52804C10.1063 2.64054 10.3344 3.05616 10.2219 3.45616L10.0437 4.08116C9.86562 4.70304 9.58437 5.29054 9.2125 5.81554C9.05 6.04366 9.03125 6.34366 9.15938 6.59366C9.2875 6.84366 9.54375 6.99991 9.825 6.99991H14C14.275 6.99991 14.5 7.22491 14.5 7.49991C14.5 7.71241 14.3656 7.89679 14.175 7.96866C13.9438 8.05616 13.7688 8.24992 13.7094 8.49054C13.65 8.73117 13.7125 8.98429 13.875 9.16866C13.9531 9.25616 14 9.37179 14 9.49991C14 9.74366 13.825 9.94679 13.5938 9.99054C13.3375 10.0405 13.1219 10.2187 13.0312 10.4624C12.9406 10.7062 12.9813 10.9843 13.1438 11.1905C13.2094 11.2749 13.25 11.3812 13.25 11.4999C13.25 11.7093 13.1187 11.8937 12.9312 11.9655C12.5719 12.1062 12.3781 12.4937 12.4812 12.8655C12.4937 12.9062 12.5 12.953 12.5 12.9999C12.5 13.2749 12.275 13.4999 12 13.4999H8.95312C8.55937 13.4999 8.17188 13.3843 7.84375 13.1655L5.91563 11.8812C5.57188 11.6499 5.10625 11.7437 4.875 12.0905C4.64375 12.4374 4.7375 12.8999 5.08437 13.1312L7.0125 14.4155C7.5875 14.7999 8.2625 15.003 8.95312 15.003H12C13.0844 15.003 13.9656 14.1405 14 13.0655C14.4563 12.6999 14.75 12.1374 14.75 11.503C14.75 11.3624 14.7344 11.228 14.7094 11.0968C15.1906 10.7312 15.5 10.153 15.5 9.50304C15.5 9.29991 15.4688 9.10304 15.4125 8.91866C15.775 8.55304 16 8.05304 16 7.49991C16 6.39679 15.1063 5.49991 14 5.49991H11.1156C11.2625 5.17491 11.3875 4.83741 11.4844 4.49366L11.6625 3.86866C12.0031 2.67491 11.3125 1.42804 10.1187 1.08741ZM1 5.99991C0.446875 5.99991 0 6.44679 0 6.99991V13.9999C0 14.553 0.446875 14.9999 1 14.9999H3C3.55313 14.9999 4 14.553 4 13.9999V6.99991C4 6.44679 3.55313 5.99991 3 5.99991H1Z"></path></svg><small class="text-sm font-normal leading-4 ">Yes</small></button><button class="px-3.5 py-2 flex flex-row gap-3 items-center border-standard rounded-xl text-gray-600 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300 bg-white/50 dark:bg-codeblock/50 hover:border-gray-500 hover:dark:border-gray-500"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" class="fill-current"><path d="M10.1187 14.9124C8.925 15.253 7.67813 14.5624 7.3375 13.3687L7.15938 12.7437C7.04375 12.3374 6.83438 11.9624 6.55 11.6499L4.94688 9.8874C4.66875 9.58115 4.69062 9.10615 4.99687 8.82803C5.30312 8.5499 5.77813 8.57178 6.05625 8.87803L7.65938 10.6405C8.1 11.1249 8.42188 11.703 8.6 12.3312L8.77812 12.9562C8.89062 13.353 9.30625 13.5843 9.70625 13.4718C10.1063 13.3593 10.3344 12.9437 10.2219 12.5437L10.0437 11.9187C9.86562 11.2968 9.58437 10.7093 9.2125 10.1843C9.05 9.95615 9.03125 9.65615 9.15938 9.40615C9.2875 9.15615 9.54375 8.9999 9.825 8.9999H14C14.275 8.9999 14.5 8.7749 14.5 8.4999C14.5 8.2874 14.3656 8.10303 14.175 8.03115C13.9438 7.94365 13.7688 7.7499 13.7094 7.50928C13.65 7.26865 13.7125 7.01553 13.875 6.83115C13.9531 6.74365 14 6.62803 14 6.4999C14 6.25615 13.825 6.05303 13.5938 6.00928C13.3375 5.95928 13.1219 5.78115 13.0312 5.53428C12.9406 5.2874 12.9813 5.0124 13.1438 4.80615C13.2094 4.72178 13.25 4.61553 13.25 4.49678C13.25 4.2874 13.1187 4.10303 12.9312 4.03115C12.5719 3.89053 12.3781 3.50303 12.4812 3.13115C12.4937 3.09053 12.5 3.04365 12.5 2.99678C12.5 2.72178 12.275 2.49678 12 2.49678H8.95312C8.55937 2.49678 8.17188 2.6124 7.84375 2.83115L5.91563 4.11553C5.57188 4.34678 5.10625 4.25303 4.875 3.90615C4.64375 3.55928 4.7375 3.09678 5.08437 2.86553L7.0125 1.58115C7.5875 1.19678 8.2625 0.993652 8.95312 0.993652H12C13.0844 0.993652 13.9656 1.85615 14 2.93115C14.4563 3.29678 14.75 3.85928 14.75 4.49365C14.75 4.63428 14.7344 4.76865 14.7094 4.8999C15.1906 5.26553 15.5 5.84365 15.5 6.49365C15.5 6.69678 15.4688 6.89365 15.4125 7.07803C15.775 7.44678 16 7.94678 16 8.4999C16 9.60303 15.1063 10.4999 14 10.4999H11.1156C11.2625 10.8249 11.3875 11.1624 11.4844 11.5062L11.6625 12.1312C12.0031 13.3249 11.3125 14.5718 10.1187 14.9124ZM1 11.9999C0.446875 11.9999 0 11.553 0 10.9999V3.9999C0 3.44678 0.446875 2.9999 1 2.9999H3C3.55313 2.9999 4 3.44678 4 3.9999V10.9999C4 11.553 3.55313 11.9999 3 11.9999H1Z"></path></svg><small class="text-sm font-normal leading-4 ">No</small></button></div></div><div class="flex flex-row gap-3 justify-end"></div></div></div><div id="pagination" class="mb-12 px-0.5 flex items-center text-sm font-semibold text-gray-700 dark:text-gray-200"><a class="flex items-center ml-auto space-x-3 group" href="/projects/the-basics"><span class="group-hover:text-gray-900 dark:group-hover:text-white">The Basics</span><svg viewBox="0 0 3 6" class="rotate-180 h-1.5 stroke-gray-400 overflow-visible group-hover:stroke-gray-600 dark:group-hover:stroke-gray-300"><path d="M3 0L0 3L3 6" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></a></div></div></div><div class="hidden xl:flex self-start sticky xl:flex-col h-[calc(100vh-9.5rem)] top-[9.5rem]" id="content-side-layout"><div class="z-10 hidden xl:flex pl-10 box-border w-[19rem] max-h-full" id="table-of-contents"><div id="table-of-contents-content" class="text-gray-600 text-sm leading-6 w-[16.5rem] overflow-y-auto space-y-2 pb-4 -mt-10 pt-10"><div class="text-gray-700 dark:text-gray-300 font-medium flex items-center space-x-2"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="2" xmlns="http://www.w3.org/2000/svg" class="h-3 w-3"><path d="M2.44434 12.6665H13.5554" stroke-linecap="round" stroke-linejoin="round"></path><path d="M2.44434 3.3335H13.5554" stroke-linecap="round" stroke-linejoin="round"></path><path d="M2.44434 8H7.33323" stroke-linecap="round" stroke-linejoin="round"></path></svg><span>On this page</span></div><ul><li class="relative"><a href="#what-is-vapor%3F" class="py-1 block font-medium hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300">What Is Vapor?</a></li><li class="relative"><a href="#requirements" class="py-1 block font-medium hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300">Requirements</a></li><li class="relative"><a href="#account-creation" class="py-1 block font-medium hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300">Account Creation</a></li><li class="relative"><a href="#installing-the-vapor-cli" class="py-1 block font-medium hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300">Installing The Vapor CLI</a></li><li class="relative"><a style="margin-left:1rem" href="#logging-in" class="group flex items-start py-1 whitespace-pre-wrap text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300">Logging In</a></li><li class="relative"><a href="#installing-the-vapor-core" class="py-1 block font-medium hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300">Installing The Vapor Core</a></li><li class="relative"><a href="#sandbox-accounts" class="py-1 block font-medium hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300">Sandbox Accounts</a></li><li class="relative"><a href="#teams" class="py-1 block font-medium hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300">Teams</a></li><li class="relative"><a style="margin-left:1rem" href="#current-team-%26-switching-teams" class="group flex items-start py-1 whitespace-pre-wrap text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300">Current Team & Switching Teams</a></li><li class="relative"><a style="margin-left:1rem" href="#collaborators" class="group flex items-start py-1 whitespace-pre-wrap text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300">Collaborators</a></li><li class="relative"><a href="#linking-with-aws" class="py-1 block font-medium hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300">Linking With AWS</a></li><li class="relative"><a style="margin-left:1rem" href="#creating-an-iam-role" class="group flex items-start py-1 whitespace-pre-wrap text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300">Creating An IAM Role</a></li><li class="relative"><a style="margin-left:2rem" href="#permissions" class="group flex items-start py-1 whitespace-pre-wrap text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300">Permissions</a></li><li class="relative"><a style="margin-left:2rem" href="#defining-your-aws-budget" class="group flex items-start py-1 whitespace-pre-wrap text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300">Defining Your AWS Budget</a></li><li class="relative"><a style="margin-left:2rem" href="#aws-service-limits" class="group flex items-start py-1 whitespace-pre-wrap text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300">AWS Service Limits</a></li><li class="relative"><a href="#notification-methods" class="py-1 block font-medium hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300">Notification Methods</a></li><li class="relative"><a style="margin-left:1rem" href="#slack" class="group flex items-start py-1 whitespace-pre-wrap text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300">Slack</a></li><li class="relative"><a href="#legal-and-compliance" class="py-1 block font-medium hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300">Legal and Compliance</a></li></ul></div></div></div></div></div></div><footer id="footer" class="flex flex-col items-center mx-auto border-t border-gray-100 dark:border-gray-800/50"><div class="flex w-full flex-col gap-12 justify-between px-8 py-16 md:py-20 lg:py-28 max-w-[984px] z-0"><div class="flex flex-col md:flex-row gap-8 justify-between min-h-[76px]"><div class="flex md:flex-col justify-between items-center md:items-start min-w-16 md:min-w-20 lg:min-w-48 md:gap-y-24"><a href="https://vapor.laravel.com"><span class="sr-only">Laravel Vapor<!-- --> home page</span><img class="w-auto relative object-contain block dark:hidden max-w-48 h-[26px]" src="https://mintlify.s3.us-west-1.amazonaws.com/vapor/logo/light.svg" alt="light logo"/><img class="w-auto relative object-contain hidden dark:block max-w-48 h-[26px]" src="https://mintlify.s3.us-west-1.amazonaws.com/vapor/logo/dark.svg" alt="dark logo"/></a><div class="flex gap-3 min-w-[140px] max-w-[492px] flex-wrap h-fit md:hidden justify-end"><a href="https://x.com/laravelphp" target="_blank"><span class="sr-only">x</span><svg class="w-5 h-5 bg-gray-500 dark:bg-gray-600 hover:bg-gray-600 dark:hover:bg-gray-500" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/brands/x-twitter.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/brands/x-twitter.svg);mask-repeat:no-repeat;mask-position:center"></svg></a><a href="https://github.com/laravel" target="_blank"><span class="sr-only">github</span><svg class="w-5 h-5 bg-gray-500 dark:bg-gray-600 hover:bg-gray-600 dark:hover:bg-gray-500" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/brands/github.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/brands/github.svg);mask-repeat:no-repeat;mask-position:center"></svg></a><a href="https://discord.com/invite/laravel" target="_blank"><span class="sr-only">discord</span><svg class="w-5 h-5 bg-gray-500 dark:bg-gray-600 hover:bg-gray-600 dark:hover:bg-gray-500" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/brands/discord.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/brands/discord.svg);mask-repeat:no-repeat;mask-position:center"></svg></a><a href="https://linkedin.com/company/laravel" target="_blank"><span class="sr-only">linkedin</span><svg class="w-5 h-5 bg-gray-500 dark:bg-gray-600 hover:bg-gray-600 dark:hover:bg-gray-500" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/brands/linkedin.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/brands/linkedin.svg);mask-repeat:no-repeat;mask-position:center"></svg></a></div></div><div class="flex flex-col sm:grid max-md:!grid-cols-2 gap-8 flex-1" style="grid-template-columns:repeat(2, minmax(0, 1fr))"><div class="flex flex-col gap-4 flex-1 whitespace-nowrap w-full md:items-center"><div class="flex gap-4 flex-col"><p class="text-sm font-semibold text-gray-950 dark:text-white mb-1">Platform</p><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://vapor.laravel.com/" target="_blank" rel="noreferrer">Dashboard</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://status.laravel.com/" target="_blank" rel="noreferrer">Status</a></div></div><div class="flex flex-col gap-4 flex-1 whitespace-nowrap w-full md:items-center"><div class="flex gap-4 flex-col"><p class="text-sm font-semibold text-gray-950 dark:text-white mb-1">Legal and Compliance</p><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://vapor.laravel.com/terms" target="_blank" rel="noreferrer">Term of Service</a><a class="text-sm max-w-36 whitespace-normal md:truncate text-gray-950/50 dark:text-white/50 hover:text-gray-950/70 dark:hover:text-white/70" href="https://vapor.laravel.com/privacy" target="_blank" rel="noreferrer">Privacy Policy</a></div></div></div><div class="gap-3 min-w-[140px] max-w-[492px] flex-wrap hidden md:flex justify-end"><a href="https://x.com/laravelphp" target="_blank"><span class="sr-only">x</span><svg class="w-5 h-5 bg-gray-500 dark:bg-gray-600 hover:bg-gray-600 dark:hover:bg-gray-500" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/brands/x-twitter.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/brands/x-twitter.svg);mask-repeat:no-repeat;mask-position:center"></svg></a><a href="https://github.com/laravel" target="_blank"><span class="sr-only">github</span><svg class="w-5 h-5 bg-gray-500 dark:bg-gray-600 hover:bg-gray-600 dark:hover:bg-gray-500" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/brands/github.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/brands/github.svg);mask-repeat:no-repeat;mask-position:center"></svg></a><a href="https://discord.com/invite/laravel" target="_blank"><span class="sr-only">discord</span><svg class="w-5 h-5 bg-gray-500 dark:bg-gray-600 hover:bg-gray-600 dark:hover:bg-gray-500" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/brands/discord.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/brands/discord.svg);mask-repeat:no-repeat;mask-position:center"></svg></a><a href="https://linkedin.com/company/laravel" target="_blank"><span class="sr-only">linkedin</span><svg class="w-5 h-5 bg-gray-500 dark:bg-gray-600 hover:bg-gray-600 dark:hover:bg-gray-500" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/brands/linkedin.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/brands/linkedin.svg);mask-repeat:no-repeat;mask-position:center"></svg></a></div></div></div></footer></div></main></div><script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"mdxSource":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n a: \"a\",\n code: \"code\",\n em: \"em\",\n li: \"li\",\n ol: \"ol\",\n p: \"p\",\n pre: \"pre\",\n span: \"span\",\n strong: \"strong\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n }, {Accordion, AccordionGroup, Card, CardGroup, CodeBlock, Heading, Note, Warning} = _components;\n if (!Accordion) _missingMdxReference(\"Accordion\", true);\n if (!AccordionGroup) _missingMdxReference(\"AccordionGroup\", true);\n if (!Card) _missingMdxReference(\"Card\", true);\n if (!CardGroup) _missingMdxReference(\"CardGroup\", true);\n if (!CodeBlock) _missingMdxReference(\"CodeBlock\", true);\n if (!Heading) _missingMdxReference(\"Heading\", true);\n if (!Note) _missingMdxReference(\"Note\", true);\n if (!Warning) _missingMdxReference(\"Warning\", true);\n return _jsxs(_Fragment, {\n children: [_jsxs(CardGroup, {\n cols: 2,\n children: [_jsx(Card, {\n title: \"Create An Account\",\n icon: \"user-plus\",\n href: \"https://vapor.laravel.com/register\",\n children: _jsx(_components.p, {\n children: \"Create your Vapor account today\"\n })\n }), _jsx(Card, {\n title: \"Watch More\",\n icon: \"circle-play\",\n href: \"https://laracasts.com/series/serverless-laravel\",\n children: _jsx(_components.p, {\n children: \"Watch the free Vapor series on Laracasts\"\n })\n })]\n }), \"\\n\", _jsx(Heading, {\n level: \"2\",\n id: \"what-is-vapor%3F\",\n children: \"What Is Vapor?\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"Laravel Vapor is an auto-scaling, serverless deployment platform for Laravel, powered by AWS Lambda. Manage your Laravel infrastructure on Vapor and fall in love with the scalability and simplicity of serverless.\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"Vapor abstracts the complexity of managing Laravel applications on AWS Lambda, as well as interfacing those applications with SQS queues, databases, Redis clusters, networks, CloudFront CDN, and more. Some highlights of Vapor’s features include:\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsx(_components.p, {\n children: \"Auto-scaling web / queue infrastructure fine tuned for Laravel\"\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsx(_components.p, {\n children: \"Zero-downtime deployments and rollbacks\"\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsx(_components.p, {\n children: \"Environment variable / secret management\"\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsx(_components.p, {\n children: \"Database management, including point-in-time restores and scaling\"\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsx(_components.p, {\n children: \"Redis Cache management, including cluster scaling\"\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsx(_components.p, {\n children: \"Database and cache tunnels, allowing for easy local inspection\"\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsx(_components.p, {\n children: \"Automatic uploading of assets to Cloudfront CDN during deployment\"\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsx(_components.p, {\n children: \"Unique, Vapor assigned vanity URLs for each environment, allowing immediate inspection\"\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsx(_components.p, {\n children: \"Custom application domains\"\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsx(_components.p, {\n children: \"DNS management\"\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsx(_components.p, {\n children: \"Certificate management and renewal\"\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsx(_components.p, {\n children: \"Application, database, and cache metrics\"\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsx(_components.p, {\n children: \"CI friendly\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"In short, you can think of Vapor as\"\n }), \" \", _jsx(_components.a, {\n href: \"https://forge.laravel.com\",\n children: \"Laravel Forge\"\n }), \" \", _jsx(_components.strong, {\n children: \"for serverless technology.\"\n })]\n }), \"\\n\", _jsx(Heading, {\n level: \"2\",\n id: \"requirements\",\n children: \"Requirements\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"Vapor requires that your application be compatible with PHP 7.3+ and Laravel 6.0+.\"\n }), \"\\n\", _jsx(Heading, {\n level: \"2\",\n id: \"account-creation\",\n children: \"Account Creation\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"Before integrating Vapor into your application, you should create a Vapor account. If you are just collaborating with others on their projects, you are not required to have a Vapor subscription. To create and manage your own projects, you will need a Vapor subscription.\"\n }), \"\\n\", _jsx(Heading, {\n level: \"2\",\n id: \"installing-the-vapor-cli\",\n children: \"Installing The Vapor CLI\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"You will deploy your Laravel Vapor applications using the \", _jsx(_components.a, {\n href: \"https://github.com/laravel/vapor-cli\",\n children: \"Vapor CLI\"\n }), \". This CLI may be installed globally or on a per-project basis using Composer:\"]\n }), \"\\n\", _jsx(CodeBlock, {\n filename: \"\",\n expandable: \"false\",\n children: _jsx(_components.pre, {\n className: \"language-bash\",\n children: _jsxs(_components.code, {\n className: \"language-bash\",\n children: [_jsxs(_components.span, {\n className: \"\",\n children: [_jsx(_components.span, {\n className: \"token function\",\n children: \"composer\"\n }), \" require laravel/vapor-cli --update-with-dependencies\"]\n }), \"\\n\", \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [_jsx(_components.span, {\n className: \"token function\",\n children: \"composer\"\n }), \" global require laravel/vapor-cli --update-with-dependencies\"]\n }), \"\\n\"]\n })\n })\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"When the CLI is installed per project, you will likely need to execute it via the \", _jsx(_components.code, {\n children: \"vendor/bin\"\n }), \" directory of your project, which is where Composer installs executables. For example, to view all of the available Vapor CLI commands, you may use the \", _jsx(_components.code, {\n children: \"list\"\n }), \" command:\"]\n }), \"\\n\", _jsx(CodeBlock, {\n filename: \"\",\n expandable: \"false\",\n children: _jsx(_components.pre, {\n className: \"language-bash\",\n children: _jsxs(_components.code, {\n className: \"language-bash\",\n children: [_jsx(_components.span, {\n className: \"\",\n children: \"php vendor/bin/vapor list\"\n }), \"\\n\"]\n })\n })\n }), \"\\n\", _jsx(Note, {\n children: _jsxs(_components.p, {\n children: [\"To save keystrokes when interacting with per-project installations of the Vapor CLI, you may add a shell alias to your operating system that aliases the \", _jsx(_components.code, {\n children: \"vapor\"\n }), \" command to \", _jsx(_components.code, {\n children: \"php vendor/bin/vapor\"\n }), \".\"]\n })\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"To learn more about a command and its arguments, execute the \", _jsx(_components.code, {\n children: \"help\"\n }), \" command with the name of the command you wish to explore:\"]\n }), \"\\n\", _jsx(CodeBlock, {\n filename: \"\",\n expandable: \"false\",\n children: _jsx(_components.pre, {\n className: \"language-bash\",\n children: _jsxs(_components.code, {\n className: \"language-bash\",\n children: [_jsxs(_components.span, {\n className: \"\",\n children: [\"php vendor/bin/vapor \", _jsx(_components.span, {\n className: \"token builtin class-name\",\n children: \"help\"\n }), \" deploy\"]\n }), \"\\n\"]\n })\n })\n }), \"\\n\", _jsx(Heading, {\n level: \"3\",\n id: \"logging-in\",\n children: \"Logging In\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"After you have installed the Vapor CLI, you should authenticate with your Vapor account using the \", _jsx(_components.code, {\n children: \"login\"\n }), \" command:\"]\n }), \"\\n\", _jsx(CodeBlock, {\n filename: \"\",\n expandable: \"false\",\n children: _jsx(_components.pre, {\n className: \"language-bash\",\n children: _jsxs(_components.code, {\n className: \"language-bash\",\n children: [_jsx(_components.span, {\n className: \"\",\n children: \"vapor login\"\n }), \"\\n\"]\n })\n })\n }), \"\\n\", _jsx(Heading, {\n level: \"2\",\n id: \"installing-the-vapor-core\",\n children: \"Installing The Vapor Core\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"The \", _jsx(_components.code, {\n children: \"laravel/vapor-core\"\n }), \" \", _jsx(_components.a, {\n href: \"https://github.com/laravel/vapor-core\",\n children: \"package\"\n }), \" must be installed as a dependency of every Laravel application that is deployed using Vapor. This package contains various Vapor runtime files and a service provider to allow your application to run on Vapor. You may install the Vapor Core into your project using Composer:\"]\n }), \"\\n\", _jsx(CodeBlock, {\n filename: \"\",\n expandable: \"false\",\n children: _jsx(_components.pre, {\n className: \"language-bash\",\n children: _jsxs(_components.code, {\n className: \"language-bash\",\n children: [_jsxs(_components.span, {\n className: \"\",\n children: [_jsx(_components.span, {\n className: \"token function\",\n children: \"composer\"\n }), \" require laravel/vapor-core --update-with-dependencies\"]\n }), \"\\n\"]\n })\n })\n }), \"\\n\", _jsx(Heading, {\n level: \"2\",\n id: \"sandbox-accounts\",\n children: \"Sandbox Accounts\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"After creating a Vapor account, your account will be on our free “sandbox” plan, which allows you to experience the power of Vapor without the upfront commitment of subscribing to a paid plan. A sandbox account allows you to provision services such as networks, databases, and caches. You may add a single project which, once deployed, will be accessible via an \", _jsx(_components.a, {\n href: \"https://docs.aws.amazon.com/lambda/latest/dg/lambda-urls.html\",\n children: \"AWS Lambda function URL\"\n }), \".\"]\n }), \"\\n\", _jsx(Warning, {\n children: _jsx(_components.p, {\n children: \"Sandbox projects may not utilize API Gateway versions, load balancers, firewalls, or custom domains. To utilize these features, you will need to choose a subscription plan.\"\n })\n }), \"\\n\", _jsx(Heading, {\n level: \"2\",\n id: \"teams\",\n children: \"Teams\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"When you create your Vapor account, a “Personal” team is automatically created for you. You can rename this team in your team settings. All projects, databases, caches, and other Vapor resources belong to a team. You are free to create as many teams as you wish via the Vapor UI or the \", _jsx(_components.code, {\n children: \"team\"\n }), \" CLI command. There is no additional charge for creating teams, and they serve as a great way to organize your projects by client or topic.\"]\n }), \"\\n\", _jsx(Heading, {\n level: \"3\",\n id: \"current-team-%26-switching-teams\",\n children: \"Current Team \u0026 Switching Teams\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"When managing Vapor resources via the CLI, you will need to be aware of your currently active team. You may view your current team using the \", _jsx(_components.code, {\n children: \"team:current\"\n }), \" command:\"]\n }), \"\\n\", _jsx(CodeBlock, {\n filename: \"\",\n expandable: \"false\",\n children: _jsx(_components.pre, {\n className: \"language-bash\",\n children: _jsxs(_components.code, {\n className: \"language-bash\",\n children: [_jsx(_components.span, {\n className: \"\",\n children: \"vapor team:current\"\n }), \"\\n\"]\n })\n })\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"To change your active team, you may use the \", _jsx(_components.code, {\n children: \"team:switch\"\n }), \" command:\"]\n }), \"\\n\", _jsx(CodeBlock, {\n filename: \"\",\n expandable: \"false\",\n children: _jsx(_components.pre, {\n className: \"language-bash\",\n children: _jsxs(_components.code, {\n className: \"language-bash\",\n children: [_jsx(_components.span, {\n className: \"\",\n children: \"vapor team:switch\"\n }), \"\\n\"]\n })\n })\n }), \"\\n\", _jsx(Heading, {\n level: \"3\",\n id: \"collaborators\",\n children: \"Collaborators\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"You can invite more people to your team via the “Team Settings” menu in the Vapor UI, or using the \", _jsx(_components.code, {\n children: \"team:add\"\n }), \" CLI command. When you add a new collaborator to your team via the Vapor UI, you may select the permissions to assign to that person. For example, you can prevent a given team member from deleting databases or caches.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"You may remove collaborators from your team using the Vapor UI or \", _jsx(_components.code, {\n children: \"team:remove\"\n }), \" CLI command.\"]\n }), \"\\n\", _jsx(Heading, {\n level: \"2\",\n id: \"linking-with-aws\",\n children: \"Linking With AWS\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"In order to deploy projects or create other resources using Vapor, you will need to link an active AWS account on your team’s settings management page.\"\n }), \"\\n\", _jsx(Heading, {\n level: \"3\",\n id: \"creating-an-iam-role\",\n children: \"Creating An IAM Role\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"To create a new IAM role, navigate to the IAM service on your AWS dashboard. Once you are in the IAM dashboard, you may select “Roles” from the left-side navigation panel and click the “Create Role” button.\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"The process for creating the role is outlined in these steps:\"\n }), \"\\n\", _jsxs(_components.ol, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Choose “AWS account” as the trusted entity type, and select “Another AWS account.”\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Enter the “Vapor Account ID” from the Vapor dashboard, then click “Next.”\"\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"In the “Permissions policies” section, either grant full administrator access by selecting the \", _jsx(_components.code, {\n children: \"AdministratorAccess\"\n }), \" policy or create a custom policy with the \", _jsx(_components.a, {\n href: \"/introduction#permissions\",\n children: \"specific permissions\"\n }), \" required by Vapor. After selecting a policy, click “Next.”\"]\n }), \"\\n\", _jsx(_components.li, {\n children: \"In the “Name, review, and create” section, provide a name and description for the role.\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Update the “Trust policy” under “Select trusted entities” by enabling the “Require external ID” checkbox and entering the “Team External ID” shown in the Vapor dashboard.\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Complete the process by creating the role.\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Copy the role ARN displayed in the AWS dashboard and add it to your AWS credentials in Vapor.\"\n }), \"\\n\"]\n }), \"\\n\", _jsx(Heading, {\n level: \"4\",\n id: \"permissions\",\n children: \"Permissions\"\n }), \"\\n\", _jsx(Note, {\n children: _jsxs(_components.p, {\n children: [\"Since Vapor manages many types of resources across more than a dozen AWS services, it may be convenient to create a role with the \", _jsx(_components.code, {\n children: \"AdministratorAccess\"\n }), \" policy. If desired, you may create a separate AWS account to house this role and contain all of your Vapor resources.\"]\n })\n }), \"\\n\", _jsx(_components.p, {\n children: \"On the permissions management screen, you may grant full administrator access to the IAM role by selecting the “AdministratorAccess” policy. Or, you would prefer to not provide administrator access to Vapor, you may instead create a custom permission policy with the specific permissions needed by Vapor.\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"It is necessary to create two policies due to the policy size limit set by AWS. To do so, select “Create policy” from the “Permissions policies” panel. Choose the JSON option and provide the first permission definition below. Then, follow the same process to create another policy using the second definition listed below. Once the policies have been defined, you may attach them to your new IAM role:\"\n }), \"\\n\", _jsx(CodeBlock, {\n filename: \"\",\n expandable: \"false\",\n children: _jsx(_components.pre, {\n className: \"language-json\",\n children: _jsxs(_components.code, {\n className: \"language-json\",\n children: [_jsx(_components.span, {\n className: \"\",\n children: _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"{\"\n })\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token property\",\n children: \"\\\"Version\\\"\"\n }), _jsx(_components.span, {\n className: \"token operator\",\n children: \":\"\n }), \" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"2012-10-17\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token property\",\n children: \"\\\"Statement\\\"\"\n }), _jsx(_components.span, {\n className: \"token operator\",\n children: \":\"\n }), \" \", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"[\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"{\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token property\",\n children: \"\\\"Sid\\\"\"\n }), _jsx(_components.span, {\n className: \"token operator\",\n children: \":\"\n }), \" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"VaporPolicy\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token property\",\n children: \"\\\"Effect\\\"\"\n }), _jsx(_components.span, {\n className: \"token operator\",\n children: \":\"\n }), \" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"Allow\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token property\",\n children: \"\\\"Action\\\"\"\n }), _jsx(_components.span, {\n className: \"token operator\",\n children: \":\"\n }), \" \", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"[\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"acm:AddTagsToCertificate\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"acm:DeleteCertificate\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"acm:DescribeCertificate\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"acm:ImportCertificate\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"acm:RequestCertificate\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"apigateway:DELETE\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"apigateway:GET\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"apigateway:PATCH\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"apigateway:POST\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"apigateway:PUT\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"apigateway:SetWebACL\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"budgets:ModifyBudget\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"budgets:ViewBudget\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"cloudformation:CreateStack\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"cloudformation:DeleteStack\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"cloudformation:DescribeStacks\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"cloudformation:UpdateStack\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"cloudfront:CreateOriginAccessControl\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"cloudfront:CreateDistribution\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"cloudfront:DeleteDistribution\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"cloudfront:GetDistribution\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"cloudfront:GetDistributionConfig\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"cloudfront:UpdateDistribution\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"cloudwatch:DeleteAlarms\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"cloudwatch:GetMetricStatistics\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"cloudwatch:PutMetricAlarm\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"dynamodb:CreateTable\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"dynamodb:DescribeTable\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"dynamodb:DescribeTimeToLive\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"dynamodb:TagResource\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"dynamodb:UpdateTimeToLive\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:AllocateAddress\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:AssociateAddress\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:AssociateRouteTable\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:AttachInternetGateway\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:AuthorizeSecurityGroupIngress\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:CreateInternetGateway\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:CreateNatGateway\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:CreateRoute\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:CreateRouteTable\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:CreateSubnet\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:CreateTags\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:CreateVpc\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:CreateVpcEndpoint\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DeleteInternetGateway\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DeleteKeyPair\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DeleteNatGateway\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DeleteRoute\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DeleteRouteTable\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DeleteSubnet\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DeleteVolume\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DeleteVpc\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DeleteVpcEndpoints\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DescribeAddresses\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DescribeAvailabilityZones\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DescribeImages\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DescribeInstanceAttribute\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DescribeInstances\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DescribeInternetGateways\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DescribeKeyPairs\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DescribeNatGateways\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DescribeNetworkAcls\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DescribeRegions\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DescribeRouteTables\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DescribeSecurityGroupRules\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DescribeSecurityGroups\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DescribeSnapshots\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DescribeSubnets\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DescribeTransitGatewayRouteTables\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DescribeTransitGatewayVpcAttachments\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DescribeTransitGateways\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DescribeVolumes\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DescribeVpcEndpoints\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DescribeVpcs\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DetachInternetGateway\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DisassociateRouteTable\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:ImportKeyPair\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:ModifySubnetAttribute\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:ModifyVpcAttribute\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:ReleaseAddress\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:RevokeSecurityGroupEgress\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:RevokeSecurityGroupIngress\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:RunInstances\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:TerminateInstances\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ecr:BatchCheckLayerAvailability\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ecr:BatchDeleteImage\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ecr:CompleteLayerUpload\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ecr:CreateRepository\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ecr:DeleteRepository\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ecr:GetAuthorizationToken\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ecr:GetRepositoryPolicy\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ecr:InitiateLayerUpload\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ecr:PutImage\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ecr:SetRepositoryPolicy\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ecr:UploadLayerPart\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticache:AddTagsToResource\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticache:CreateCacheSubnetGroup\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticache:CreateReplicationGroup\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticache:CreateServerlessCache\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticache:DeleteCacheSubnetGroup\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticache:DeleteReplicationGroup\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticache:DeleteServerlessCache\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticache:DescribeCacheSubnetGroups\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticache:DescribeReplicationGroups\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticache:DescribeServerlessCaches\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticache:ListTagsForResource\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticache:ModifyReplicationGroupShardConfiguration\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticache:ModifyServerlessCache\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticloadbalancing:AddListenerCertificates\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticloadbalancing:AddTags\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticloadbalancing:CreateListener\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticloadbalancing:CreateLoadBalancer\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticloadbalancing:CreateRule\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticloadbalancing:CreateTargetGroup\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticloadbalancing:DeleteLoadBalancer\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticloadbalancing:DescribeLoadBalancers\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticloadbalancing:DescribeRules\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticloadbalancing:DescribeTargetGroups\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticloadbalancing:ModifyListener\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticloadbalancing:ModifyRule\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticloadbalancing:ModifyTargetGroupAttributes\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticloadbalancing:RegisterTargets\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticloadbalancing:SetWebAcl\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"events:DeleteRule\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"events:DescribeRule\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"events:ListTargetsByRule\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"events:PutRule\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"events:PutTargets\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"events:RemoveTargets\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"iam:CreateRole\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"iam:CreateServiceLinkedRole\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"iam:GetRole\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"iam:GetUser\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"iam:PassRole\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"iam:PutRolePolicy\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"iam:UpdateAssumeRolePolicy\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"kms:CreateGrant\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"kms:Decrypt\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"kms:DescribeKey\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"kms:Encrypt\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"kms:GenerateDataKey\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:AddPermission\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:CreateAlias\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:CreateEventSourceMapping\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:CreateFunction\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:CreateFunctionUrlConfig\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:DeleteFunction\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:DeleteFunctionConcurrency\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:DeleteProvisionedConcurrencyConfig\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:GetAccountSettings\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:GetAlias\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:GetFunction\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:GetFunctionUrlConfig\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:GetLayerVersion\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:GetPolicy\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:InvokeFunction\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:ListEventSourceMappings\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:ListVersionsByFunction\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:PublishVersion\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:PutFunctionConcurrency\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:PutFunctionEventInvokeConfig\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:PutProvisionedConcurrencyConfig\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:TagResource\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:UpdateAlias\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:UpdateEventSourceMapping\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:UpdateFunctionCode\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:UpdateFunctionConfiguration\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"logs:FilterLogEvents\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"rds:AddTagsToResource\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"rds:CreateDBCluster\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"rds:CreateDBInstance\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"rds:CreateDBProxy\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"rds:CreateDBSubnetGroup\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"rds:DeleteDBCluster\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"rds:DeleteDBInstance\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"rds:DeleteDBProxy\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"rds:DeleteDBSubnetGroup\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"rds:DescribeDBClusters\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"rds:DescribeDBEngineVersions\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"rds:DescribeDBInstances\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"rds:DescribeDBProxies\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"rds:DescribeDBSubnetGroups\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"rds:ListTagsForResource\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"rds:ModifyDBCluster\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"rds:ModifyDBInstance\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"rds:RegisterDBProxyTargets\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"rds:RestoreDBInstanceToPointInTime\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"route53:ChangeResourceRecordSets\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"route53:CreateHostedZone\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"route53:GetHostedZone\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"route53:ListHostedZonesByName\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"route53:ListResourceRecordSets\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"s3:CreateBucket\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"s3:DeleteBucket\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"s3:DeleteBucketPolicy\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"s3:DeleteObject\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"s3:GetBucketCORS\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"s3:GetBucketLocation\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"s3:GetBucketTagging\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"s3:GetBucketVersioning\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"s3:GetObject\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"s3:ListAllMyBuckets\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"s3:ListBucket\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"s3:PutBucketCORS\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"s3:PutBucketOwnershipControls\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"s3:PutBucketPublicAccessBlock\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"s3:PutLifecycleConfiguration\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"s3:PutObject\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"s3:PutObjectAcl\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"s3:PutBucketPolicy\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"secretsmanager:CreateSecret\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"secretsmanager:DeleteSecret\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"secretsmanager:GetSecretValue\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"secretsmanager:TagResource\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"servicequotas:GetServiceQuota\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ses:VerifyDomainDkim\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ses:VerifyDomainIdentity\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"sns:ConfirmSubscription\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"sns:CreateTopic\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"sns:GetTopicAttributes\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"sns:ListSubscriptionsByTopic\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"sns:SetTopicAttributes\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"sns:Subscribe\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"sns:TagResource\\\"\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"]\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token property\",\n children: \"\\\"Resource\\\"\"\n }), _jsx(_components.span, {\n className: \"token operator\",\n children: \":\"\n }), \" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"*\\\"\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"}\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"]\"\n })]\n }), \"\\n\", _jsx(_components.span, {\n className: \"\",\n children: _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"}\"\n })\n }), \"\\n\"]\n })\n })\n }), \"\\n\", _jsx(CodeBlock, {\n filename: \"\",\n expandable: \"false\",\n children: _jsx(_components.pre, {\n className: \"language-json\",\n children: _jsxs(_components.code, {\n className: \"language-json\",\n children: [_jsx(_components.span, {\n className: \"\",\n children: _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"{\"\n })\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token property\",\n children: \"\\\"Version\\\"\"\n }), _jsx(_components.span, {\n className: \"token operator\",\n children: \":\"\n }), \" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"2012-10-17\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token property\",\n children: \"\\\"Statement\\\"\"\n }), _jsx(_components.span, {\n className: \"token operator\",\n children: \":\"\n }), \" \", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"[\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"{\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token property\",\n children: \"\\\"Sid\\\"\"\n }), _jsx(_components.span, {\n className: \"token operator\",\n children: \":\"\n }), \" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"VaporPolicy\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token property\",\n children: \"\\\"Effect\\\"\"\n }), _jsx(_components.span, {\n className: \"token operator\",\n children: \":\"\n }), \" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"Allow\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token property\",\n children: \"\\\"Action\\\"\"\n }), _jsx(_components.span, {\n className: \"token operator\",\n children: \":\"\n }), \" \", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"[\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"sqs:CreateQueue\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"sqs:DeleteQueue\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"sqs:GetQueueAttributes\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"sqs:GetQueueUrl\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"sqs:SetQueueAttributes\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ssm:DeleteParameter\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ssm:DeleteParameters\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ssm:PutParameter\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ssm:UpdateServiceSetting\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"wafv2:AssociateWebACL\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"wafv2:CreateWebACL\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"wafv2:DeleteWebACL\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"wafv2:GetWebACL\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"wafv2:ListResourcesForWebACL\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"wafv2:TagResource\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"wafv2:UpdateWebACL\\\"\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"]\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token property\",\n children: \"\\\"Resource\\\"\"\n }), _jsx(_components.span, {\n className: \"token operator\",\n children: \":\"\n }), \" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"*\\\"\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"}\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"]\"\n })]\n }), \"\\n\", _jsx(_components.span, {\n className: \"\",\n children: _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"}\"\n })\n }), \"\\n\"]\n })\n })\n }), \"\\n\", _jsx(Warning, {\n children: _jsx(_components.p, {\n children: \"It’s probable this list of permissions will change as we add new features to Vapor, which may result in unexpected errors if your policy is not kept up to date.\"\n })\n }), \"\\n\", _jsx(Heading, {\n level: \"4\",\n id: \"defining-your-aws-budget\",\n children: \"Defining Your AWS Budget\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"When linking your AWS account to Vapor, it is important to stay informed about your AWS costs. This can be done directly in the AWS Console using the AWS Budgets service. In addition, you can use Vapor’s managed budgets to define your monthly AWS budget in USD, while also configuring multiple alarms directly on the “Team Settings \u003e AWS Accounts” screen of the Vapor UI. At this time, up to five alarms can be configured:\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsx(_components.p, {\n children: \"Actual cost \u003e 85%\"\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsx(_components.p, {\n children: \"Actual cost \u003e 100%\"\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsx(_components.p, {\n children: \"Actual cost \u003e 200%\"\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsx(_components.p, {\n children: \"Actual cost \u003e 500%\"\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsx(_components.p, {\n children: \"Forecasted cost \u003e 100%\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.p, {\n children: \"Each alarm can be triggered once per monthly billing period. When an alarm is triggered, the team owner will receive an email, allowing them to act quickly and avoid unexpected charges.\"\n }), \"\\n\", _jsx(Heading, {\n level: \"4\",\n id: \"aws-service-limits\",\n children: \"AWS Service Limits\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"AWS Service Limits can be increased through the following options:\"\n }), \"\\n\", _jsxs(AccordionGroup, {\n children: [_jsx(Accordion, {\n title: \"From the AWS console\",\n children: _jsxs(_components.ol, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Open the Service Quotas console.\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"In the navigation pane, choose AWS services.\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Select a service.\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Select a quota.\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Follow the directions to request a quota increase.\"\n }), \"\\n\"]\n })\n }), _jsx(Accordion, {\n title: \"From the AWS CLI\",\n children: _jsxs(_components.ol, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"Use the \", _jsx(_components.a, {\n href: \"https://docs.aws.amazon.com/cli/latest/reference/service-quotas/request-service-quota-increase.html\",\n children: \"request-service-quota-increase\"\n }), \" AWS CLI command.\"]\n }), \"\\n\"]\n })\n }), _jsx(Accordion, {\n title: \"From a support case\",\n children: _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"If a service is not yet available in Service Quotas, use the AWS Support Center Console to create a \", _jsx(_components.a, {\n href: \"https://support.console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase\",\n children: \"service quota increase case\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"If the service is available in Service Quotas, AWS recommends that you use the \", _jsx(_components.a, {\n href: \"https://console.aws.amazon.com/servicequotas/home\",\n children: \"Service Quotas console\"\n }), \" instead of creating a support case.\"]\n }), \"\\n\"]\n })\n })]\n }), \"\\n\", _jsxs(Note, {\n children: [_jsx(_components.p, {\n children: \"For additional information, refer to the following AWS documentation:\"\n }), _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.a, {\n href: \"https://docs.aws.amazon.com/servicequotas/latest/userguide/request-quota-increase.html\",\n children: \"Requesting a quota increase\"\n }), \" in the \", _jsx(_components.em, {\n children: \"Service Quotas User Guide\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.a, {\n href: \"https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html\",\n children: \"AWS Service Quotas reference\"\n }), \".\"]\n }), \"\\n\"]\n })]\n }), \"\\n\", _jsx(Heading, {\n level: \"2\",\n id: \"notification-methods\",\n children: \"Notification Methods\"\n }), \"\\n\", _jsx(Heading, {\n level: \"3\",\n id: \"slack\",\n children: \"Slack\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"In order to receive notifications via Slack, you will need to \", _jsx(_components.a, {\n href: \"https://api.slack.com/apps\",\n children: \"create a Slack App\"\n }), \" and select the workspace to which the Slack App should be installed.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Once the Slack App has been created, visit the \", _jsx(_components.strong, {\n children: \"Incoming Webhooks\"\n }), \" settings pane of your App under the “Features” sidebar. Then, activate the Incoming Webhooks feature using the activation switch.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Once activated, you can create a new Incoming Webhook using the \", _jsx(_components.strong, {\n children: \"Add New Webhook to Workspace\"\n }), \" button. Finally, you should copy the Webhook URL provided by Slack and insert into your team’s \", _jsx(_components.a, {\n href: \"https://vapor.laravel.com/app/team/settings/notification-methods\",\n children: \"Notifications Settings\"\n }), \". \"]\n }), \"\\n\", _jsx(Heading, {\n level: \"2\",\n id: \"legal-and-compliance\",\n children: \"Legal and Compliance\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Our \", _jsx(_components.a, {\n href: \"https://vapor.laravel.com/terms\",\n children: \"Terms of Service\"\n }), \" and \", _jsx(_components.a, {\n href: \"https://vapor.laravel.com/privacy\",\n children: \"Privacy Policy\"\n }), \" provide details on the terms, conditions, and privacy practices for using Laravel Vapor.\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\nfunction _missingMdxReference(id, component) {\n throw new Error(\"Expected \" + (component ? \"component\" : \"object\") + \" `\" + id + \"` to be defined: you likely forgot to import, pass, or provide it.\");\n}\n","frontmatter":{},"scope":{"config":{"$schema":"https://mintlify.com/docs.json","theme":"mint","name":"Laravel Vapor","colors":{"primary":"#00B1E4","light":"#00B1E4","dark":"#00B1E4"},"favicon":"/favicon.png","navigation":{"tabs":[{"tab":"Documentation","groups":[{"group":"Get Started","pages":["introduction"]},{"group":"Projects","pages":["projects/the-basics","projects/environments","projects/deployments","projects/development","projects/domains"]},{"group":"Resources","pages":["resources/queues","resources/storage","resources/networks","resources/databases","resources/caches","resources/logs"]},{"group":"Integrations","pages":["integrations/sentry"]}]},{"tab":"Knowledge Base","groups":[{"group":"Knowledge Base","pages":["kb/troubleshooting"]}]}],"global":{"anchors":[{"anchor":"Community","href":"https://discord.com/invite/laravel","icon":"discord"},{"anchor":"Blog","href":"https://blog.laravel.com/vapor","icon":"newspaper"}]}},"logo":{"light":"https://mintlify.s3.us-west-1.amazonaws.com/vapor/logo/light.svg","dark":"https://mintlify.s3.us-west-1.amazonaws.com/vapor/logo/dark.svg","href":"https://vapor.laravel.com"},"background":{"decoration":"windows"},"navbar":{"links":[{"label":"Support","href":"mailto:vapor@laravel.com"},{"label":"Platform Status","href":"https://status.laravel.com/"}],"primary":{"type":"button","label":"Dashboard","href":"https://vapor.laravel.com"}},"footer":{"socials":{"x":"https://x.com/laravelphp","github":"https://github.com/laravel","discord":"https://discord.com/invite/laravel","linkedin":"https://linkedin.com/company/laravel"},"links":[{"header":"Platform","items":[{"label":"Dashboard","href":"https://vapor.laravel.com/"},{"label":"Status","href":"https://status.laravel.com/"}]},{"header":"Legal and Compliance","items":[{"label":"Term of Service","href":"https://vapor.laravel.com/terms"},{"label":"Privacy Policy","href":"https://vapor.laravel.com/privacy"}]}]},"fonts":{"heading":{"family":"Figtree"},"body":{"family":"Figtree"}},"redirects":[{"destination":"/projects/the-basics","source":"/1.0/projects/the-basics.html","_id":"67eff8671eeb51f546b93c00"},{"destination":"/projects/environments","source":"/1.0/projects/environments.html","_id":"67eff8671eeb51f546b93c01"},{"destination":"/projects/deployments","source":"/1.0/projects/deployments.html","_id":"67eff8671eeb51f546b93c02"},{"destination":"/projects/development","source":"/1.0/projects/development.html","_id":"67eff8671eeb51f546b93c03"},{"destination":"/projects/domains","source":"/1.0/projects/domains.html","_id":"67eff8671eeb51f546b93c04"},{"destination":"/kb/troubleshooting","source":"/1.0/projects/troubleshooting.html","_id":"67eff8671eeb51f546b93c05"},{"destination":"/kb/troubleshooting","source":"/projects/troubleshooting","_id":"67eff8671eeb51f546b93c06"},{"destination":"/integrations/sentry","source":"/1.0/integrations/sentry.html","_id":"67eff8671eeb51f546b93c07"},{"destination":"/resources/queues","source":"/1.0/resources/queues.html","_id":"67eff8671eeb51f546b93c08"},{"destination":"/resources/storage","source":"/1.0/resources/storage.html","_id":"67eff8671eeb51f546b93c09"},{"destination":"/resources/networks","source":"/1.0/resources/networks.html","_id":"67eff8671eeb51f546b93c0a"},{"destination":"/resources/databases","source":"/1.0/resources/databases.html","_id":"67eff8671eeb51f546b93c0b"},{"destination":"/resources/caches","source":"/1.0/resources/caches.html","_id":"67eff8671eeb51f546b93c0c"},{"destination":"/resources/logs","source":"/1.0/resources/logs.html","_id":"67eff8671eeb51f546b93c0d"},{"destination":"/introduction","source":"/1.0/introduction.html","_id":"67eff8671eeb51f546b93c0e"}]},"pageMetadata":{"title":"Introduction","description":"Manage your Laravel infrastructure on Vapor and fall in love with the scalability and simplicity of serverless.","href":"/introduction"}}},"mdxExtracts":{"tableOfContents":[{"title":"What Is Vapor?","slug":"what-is-vapor%3F","depth":2,"children":[]},{"title":"Requirements","slug":"requirements","depth":2,"children":[]},{"title":"Account Creation","slug":"account-creation","depth":2,"children":[]},{"title":"Installing The Vapor CLI","slug":"installing-the-vapor-cli","depth":2,"children":[{"title":"Logging In","slug":"logging-in","depth":3,"children":[]}]},{"title":"Installing The Vapor Core","slug":"installing-the-vapor-core","depth":2,"children":[]},{"title":"Sandbox Accounts","slug":"sandbox-accounts","depth":2,"children":[]},{"title":"Teams","slug":"teams","depth":2,"children":[{"title":"Current Team \u0026 Switching Teams","slug":"current-team-%26-switching-teams","depth":3,"children":[]},{"title":"Collaborators","slug":"collaborators","depth":3,"children":[]}]},{"title":"Linking With AWS","slug":"linking-with-aws","depth":2,"children":[{"title":"Creating An IAM Role","slug":"creating-an-iam-role","depth":3,"children":[]},{"title":"Permissions","slug":"permissions","depth":4,"children":[]},{"title":"Defining Your AWS Budget","slug":"defining-your-aws-budget","depth":4,"children":[]},{"title":"AWS Service Limits","slug":"aws-service-limits","depth":4,"children":[]}]},{"title":"Notification Methods","slug":"notification-methods","depth":2,"children":[{"title":"Slack","slug":"slack","depth":3,"children":[]}]},{"title":"Legal and Compliance","slug":"legal-and-compliance","depth":2,"children":[]}],"codeExamples":{}},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Manage your Laravel infrastructure on Vapor and fall in love with the scalability and simplicity of serverless.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageData":{"navWithMetadata":[{"group":"Get Started","pages":[{"title":"Introduction","description":"Manage your Laravel infrastructure on Vapor and fall in love with the scalability and simplicity of serverless.","href":"/introduction"}]},{"group":"Projects","pages":[{"title":"The Basics","description":"Get started with Laravel Vapor.","href":"/projects/the-basics"},{"title":"Environments","description":"Learn how to manage environments in Laravel Vapor.","href":"/projects/environments"},{"title":"Deployments","description":"Learn how to deploy your Laravel applications to Laravel Vapor.","href":"/projects/deployments"},{"title":"Development","description":"Learn how to develop applications for Laravel Vapor.","href":"/projects/development"},{"title":"Domains","description":"Learn how to manage domains in Laravel Vapor.","href":"/projects/domains"}]},{"group":"Resources","pages":[{"title":"Queues","description":"Using queues with Laravel Vapor.","href":"/resources/queues"},{"title":"Storage","description":"Storing files in a serverless environment.","href":"/resources/storage"},{"title":"Networks","description":"Managing networks within Laravel Vapor.","href":"/resources/networks"},{"title":"Databases","description":"Managing databases within Laravel Vapor.","href":"/resources/databases"},{"title":"Caches","description":"Using caches with Laravel Vapor.","href":"/resources/caches"},{"title":"Logs","description":"Viewing and managing logs within Laravel Vapor.","href":"/resources/logs"}]},{"group":"Integrations","pages":[{"title":"Sentry","description":"Integrate Sentry error monitoring with Laravel Vapor.","href":"/integrations/sentry"}]},{"group":"Knowledge Base","pages":[{"title":"Troubleshooting","description":"Common questions and issues when using Laravel Vapor.","href":"/kb/troubleshooting"}]}],"docsNavWithMetadata":{"global":{"anchors":[{"anchor":"Community","href":"https://discord.com/invite/laravel","icon":"discord"},{"anchor":"Blog","href":"https://blog.laravel.com/vapor","icon":"newspaper"}]},"tabs":[{"tab":"Documentation","groups":[{"group":"Get Started","pages":[{"title":"Introduction","description":"Manage your Laravel infrastructure on Vapor and fall in love with the scalability and simplicity of serverless.","href":"/introduction"}]},{"group":"Projects","pages":[{"title":"The Basics","description":"Get started with Laravel Vapor.","href":"/projects/the-basics"},{"title":"Environments","description":"Learn how to manage environments in Laravel Vapor.","href":"/projects/environments"},{"title":"Deployments","description":"Learn how to deploy your Laravel applications to Laravel Vapor.","href":"/projects/deployments"},{"title":"Development","description":"Learn how to develop applications for Laravel Vapor.","href":"/projects/development"},{"title":"Domains","description":"Learn how to manage domains in Laravel Vapor.","href":"/projects/domains"}]},{"group":"Resources","pages":[{"title":"Queues","description":"Using queues with Laravel Vapor.","href":"/resources/queues"},{"title":"Storage","description":"Storing files in a serverless environment.","href":"/resources/storage"},{"title":"Networks","description":"Managing networks within Laravel Vapor.","href":"/resources/networks"},{"title":"Databases","description":"Managing databases within Laravel Vapor.","href":"/resources/databases"},{"title":"Caches","description":"Using caches with Laravel Vapor.","href":"/resources/caches"},{"title":"Logs","description":"Viewing and managing logs within Laravel Vapor.","href":"/resources/logs"}]},{"group":"Integrations","pages":[{"title":"Sentry","description":"Integrate Sentry error monitoring with Laravel Vapor.","href":"/integrations/sentry"}]}]},{"tab":"Knowledge Base","groups":[{"group":"Knowledge Base","pages":[{"title":"Troubleshooting","description":"Common questions and issues when using Laravel Vapor.","href":"/kb/troubleshooting"}]}]}]},"pageMetadata":{"title":"Introduction","description":"Manage your Laravel infrastructure on Vapor and fall in love with the scalability and simplicity of serverless.","href":"/introduction"},"mintConfig":{"layout":"topnav","sidebar":{"items":"container"},"topbar":{"style":"default"},"search":{"location":"top"},"rounded":"default","codeBlock":{"mode":"dark"},"topbarCtaButton":{"name":"Dashboard","url":"https://vapor.laravel.com","style":"pill","arrow":true},"$schema":"https://mintlify.com/schema.json","name":"Laravel Vapor","logo":{"light":"https://mintlify.s3.us-west-1.amazonaws.com/vapor/logo/light.svg","dark":"https://mintlify.s3.us-west-1.amazonaws.com/vapor/logo/dark.svg","href":"https://vapor.laravel.com"},"favicon":"/favicon.png","colors":{"primary":"#00B1E4","light":"#00B1E4","dark":"#00B1E4","anchors":{"from":"#00B1E4","to":"#00B1E4"}},"topbarLinks":[{"url":"mailto:vapor@laravel.com","name":"Support","_id":"67eff8671eeb51f546b93c13"},{"url":"https://status.laravel.com/","name":"Platform Status","_id":"67eff8671eeb51f546b93c14"}],"navigation":[{"group":"Get Started","pages":["introduction"]},{"group":"Projects","pages":["projects/the-basics","projects/environments","projects/deployments","projects/development","projects/domains"]},{"group":"Resources","pages":["resources/queues","resources/storage","resources/networks","resources/databases","resources/caches","resources/logs"]},{"group":"Integrations","pages":["integrations/sentry"]},{"group":"Knowledge Base","pages":["kb/troubleshooting"]}],"anchors":[{"name":"Community","url":"https://discord.com/invite/laravel","icon":"discord","_id":"67eff8671eeb51f546b93c11"},{"name":"Blog","url":"https://blog.laravel.com/vapor","icon":"newspaper","_id":"67eff8671eeb51f546b93c12"}],"tabs":[{"name":"Documentation","url":"/","_id":"67eff8671eeb51f546b93c0f"},{"name":"Knowledge Base","url":"kb","_id":"67eff8671eeb51f546b93c10"}],"footer":{"socials":{"x":"https://x.com/laravelphp","github":"https://github.com/laravel","discord":"https://discord.com/invite/laravel","linkedin":"https://linkedin.com/company/laravel"},"links":[{"title":"Platform","links":[{"label":"Dashboard","url":"https://vapor.laravel.com/"},{"label":"Status","url":"https://status.laravel.com/"}]},{"title":"Legal and Compliance","links":[{"label":"Term of Service","url":"https://vapor.laravel.com/terms"},{"label":"Privacy Policy","url":"https://vapor.laravel.com/privacy"}]}]},"background":{"style":"windows"},"font":{"headings":{"family":"Figtree"},"body":{"family":"Figtree"}},"feedback":{"thumbsRating":true},"redirects":[{"destination":"/projects/the-basics","source":"/1.0/projects/the-basics.html","_id":"67eff8671eeb51f546b93c00"},{"destination":"/projects/environments","source":"/1.0/projects/environments.html","_id":"67eff8671eeb51f546b93c01"},{"destination":"/projects/deployments","source":"/1.0/projects/deployments.html","_id":"67eff8671eeb51f546b93c02"},{"destination":"/projects/development","source":"/1.0/projects/development.html","_id":"67eff8671eeb51f546b93c03"},{"destination":"/projects/domains","source":"/1.0/projects/domains.html","_id":"67eff8671eeb51f546b93c04"},{"destination":"/kb/troubleshooting","source":"/1.0/projects/troubleshooting.html","_id":"67eff8671eeb51f546b93c05"},{"destination":"/kb/troubleshooting","source":"/projects/troubleshooting","_id":"67eff8671eeb51f546b93c06"},{"destination":"/integrations/sentry","source":"/1.0/integrations/sentry.html","_id":"67eff8671eeb51f546b93c07"},{"destination":"/resources/queues","source":"/1.0/resources/queues.html","_id":"67eff8671eeb51f546b93c08"},{"destination":"/resources/storage","source":"/1.0/resources/storage.html","_id":"67eff8671eeb51f546b93c09"},{"destination":"/resources/networks","source":"/1.0/resources/networks.html","_id":"67eff8671eeb51f546b93c0a"},{"destination":"/resources/databases","source":"/1.0/resources/databases.html","_id":"67eff8671eeb51f546b93c0b"},{"destination":"/resources/caches","source":"/1.0/resources/caches.html","_id":"67eff8671eeb51f546b93c0c"},{"destination":"/resources/logs","source":"/1.0/resources/logs.html","_id":"67eff8671eeb51f546b93c0d"},{"destination":"/introduction","source":"/1.0/introduction.html","_id":"67eff8671eeb51f546b93c0e"}]},"docsConfig":{"$schema":"https://mintlify.com/docs.json","theme":"mint","name":"Laravel Vapor","colors":{"primary":"#00B1E4","light":"#00B1E4","dark":"#00B1E4"},"favicon":"/favicon.png","navigation":{"tabs":[{"tab":"Documentation","groups":[{"group":"Get Started","pages":["introduction"]},{"group":"Projects","pages":["projects/the-basics","projects/environments","projects/deployments","projects/development","projects/domains"]},{"group":"Resources","pages":["resources/queues","resources/storage","resources/networks","resources/databases","resources/caches","resources/logs"]},{"group":"Integrations","pages":["integrations/sentry"]}]},{"tab":"Knowledge Base","groups":[{"group":"Knowledge Base","pages":["kb/troubleshooting"]}]}],"global":{"anchors":[{"anchor":"Community","href":"https://discord.com/invite/laravel","icon":"discord"},{"anchor":"Blog","href":"https://blog.laravel.com/vapor","icon":"newspaper"}]}},"logo":{"light":"https://mintlify.s3.us-west-1.amazonaws.com/vapor/logo/light.svg","dark":"https://mintlify.s3.us-west-1.amazonaws.com/vapor/logo/dark.svg","href":"https://vapor.laravel.com"},"background":{"decoration":"windows"},"navbar":{"links":[{"label":"Support","href":"mailto:vapor@laravel.com"},{"label":"Platform Status","href":"https://status.laravel.com/"}],"primary":{"type":"button","label":"Dashboard","href":"https://vapor.laravel.com"}},"footer":{"socials":{"x":"https://x.com/laravelphp","github":"https://github.com/laravel","discord":"https://discord.com/invite/laravel","linkedin":"https://linkedin.com/company/laravel"},"links":[{"header":"Platform","items":[{"label":"Dashboard","href":"https://vapor.laravel.com/"},{"label":"Status","href":"https://status.laravel.com/"}]},{"header":"Legal and Compliance","items":[{"label":"Term of Service","href":"https://vapor.laravel.com/terms"},{"label":"Privacy Policy","href":"https://vapor.laravel.com/privacy"}]}]},"fonts":{"heading":{"family":"Figtree"},"body":{"family":"Figtree"}},"redirects":[{"destination":"/projects/the-basics","source":"/1.0/projects/the-basics.html","_id":"67eff8671eeb51f546b93c00"},{"destination":"/projects/environments","source":"/1.0/projects/environments.html","_id":"67eff8671eeb51f546b93c01"},{"destination":"/projects/deployments","source":"/1.0/projects/deployments.html","_id":"67eff8671eeb51f546b93c02"},{"destination":"/projects/development","source":"/1.0/projects/development.html","_id":"67eff8671eeb51f546b93c03"},{"destination":"/projects/domains","source":"/1.0/projects/domains.html","_id":"67eff8671eeb51f546b93c04"},{"destination":"/kb/troubleshooting","source":"/1.0/projects/troubleshooting.html","_id":"67eff8671eeb51f546b93c05"},{"destination":"/kb/troubleshooting","source":"/projects/troubleshooting","_id":"67eff8671eeb51f546b93c06"},{"destination":"/integrations/sentry","source":"/1.0/integrations/sentry.html","_id":"67eff8671eeb51f546b93c07"},{"destination":"/resources/queues","source":"/1.0/resources/queues.html","_id":"67eff8671eeb51f546b93c08"},{"destination":"/resources/storage","source":"/1.0/resources/storage.html","_id":"67eff8671eeb51f546b93c09"},{"destination":"/resources/networks","source":"/1.0/resources/networks.html","_id":"67eff8671eeb51f546b93c0a"},{"destination":"/resources/databases","source":"/1.0/resources/databases.html","_id":"67eff8671eeb51f546b93c0b"},{"destination":"/resources/caches","source":"/1.0/resources/caches.html","_id":"67eff8671eeb51f546b93c0c"},{"destination":"/resources/logs","source":"/1.0/resources/logs.html","_id":"67eff8671eeb51f546b93c0d"},{"destination":"/introduction","source":"/1.0/introduction.html","_id":"67eff8671eeb51f546b93c0e"}]},"apiReferenceData":{}},"feedback":{"thumbs":true},"favicons":{"icons":[{"rel":"apple-touch-icon","sizes":"180x180","href":"https://mintlify.s3-us-west-1.amazonaws.com/vapor/_generated/favicon/apple-touch-icon.png?v=3","type":"image/png"},{"rel":"icon","sizes":"32x32","href":"https://mintlify.s3-us-west-1.amazonaws.com/vapor/_generated/favicon/favicon-32x32.png?v=3","type":"image/png"},{"rel":"icon","sizes":"16x16","href":"https://mintlify.s3-us-west-1.amazonaws.com/vapor/_generated/favicon/favicon-16x16.png?v=3","type":"image/png"},{"rel":"shortcut icon","href":"https://mintlify.s3-us-west-1.amazonaws.com/vapor/_generated/favicon/favicon.ico?v=3","type":"image/x-icon"}],"browserconfig":"https://mintlify.s3-us-west-1.amazonaws.com/vapor/_generated/favicon/browserconfig.xml?v=3"},"subdomain":"docs.vapor.build","actualSubdomain":"vapor","internalAnalyticsWriteKey":"phc_TXdpocbGVeZVm5VJmAsHTMrCofBQu3e0kN8HGMNGTVW","trieve":{"datasetId":"e63e3e6e-eae5-4550-b05e-c1e8f1b953fe","chatEnabled":true},"shouldIndex":true,"org":{"plan":"enterprise","createdAt":"2024-10-31T15:07:40.743Z"},"cssFiles":[{"_id":"673494f593c6fe0f38146849","filePath":"style.css","subdomain":"vapor","__v":0,"content":"h1, h2, h3, h4 {\n font-weight: 600 !important;\n}\n\n.codeblock-dark div:not(:last-child) {\n color: #fafafa;\n}\n\n#footer \u003e div \u003e div:nth-of-type(n+2) {\n display: none;\n}"}],"jsFiles":[{"_id":"673dcf0093c6fe0f389ba1a1","filePath":"plain.js","subdomain":"vapor","__v":0,"content":"(function(d, script) {\n script = d.createElement('script');\n script.async = false;\n script.onload = function (){\n Plain.init({\n appId: 'liveChatApp_01JBECRJ0ANACCJDTQBYRXW1FH',\n links: [\n {\n icon: 'book',\n text: 'View our docs',\n url: 'https://docs.vapor.build',\n }, {\n icon: 'discord',\n text: 'Join our Discord',\n url: 'https://discord.com/invite/laravel',\n }\n ],\n style: {\n brandColor: '#00B1E4',\n chatButtonColor: '#00B1E4',\n chatButtonIconColor: '#ffffff',\n },\n threadDetails: {\n labelTypeIds: ['lt_01JAZTKWF8QBFSD0ETNHBSY9F8'],\n },\n theme: 'auto',\n position: {\n right: '25px',\n bottom: '25px',\n },\n requireAuthentication: true,\n chatButtons: [\n {\n icon: 'chat',\n text: 'Ask a question',\n threadDetails: {\n labelTypeIds: ['lt_01JD7S0WAJGF5215238S62F82V'],\n },\n },\n {\n icon: 'bulb',\n text: 'Send feedback',\n threadDetails: {\n labelTypeIds: ['lt_01JD7S1HJ38125D0QGE3FQ8HRT'],\n },\n },\n {\n icon: 'error',\n text: 'Report an issue',\n threadDetails: {\n labelTypeIds: ['lt_01JD7S15A3HAD7PM8X8AR4BD9N'],\n },\n },\n ],\n });\n };\n script.src = 'https://chat.cdn-plain.com/index.js';\n d.getElementsByTagName('head')[0].appendChild(script);\n\n document.querySelector(\"#navbar ul a[href='mailto:vapor@laravel.com']\").onclick = function (e) {\n if (typeof window.Plain !== 'undefined') {\n e.preventDefault();\n Plain.open()\n }\n }\n}(document));\n"}],"mdxSourceWithNoJs":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n a: \"a\",\n code: \"code\",\n em: \"em\",\n li: \"li\",\n ol: \"ol\",\n p: \"p\",\n pre: \"pre\",\n span: \"span\",\n strong: \"strong\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n }, {Accordion, AccordionGroup, Card, CardGroup, CodeBlock, Heading, Note, Warning} = _components;\n if (!Accordion) _missingMdxReference(\"Accordion\", true);\n if (!AccordionGroup) _missingMdxReference(\"AccordionGroup\", true);\n if (!Card) _missingMdxReference(\"Card\", true);\n if (!CardGroup) _missingMdxReference(\"CardGroup\", true);\n if (!CodeBlock) _missingMdxReference(\"CodeBlock\", true);\n if (!Heading) _missingMdxReference(\"Heading\", true);\n if (!Note) _missingMdxReference(\"Note\", true);\n if (!Warning) _missingMdxReference(\"Warning\", true);\n return _jsxs(_Fragment, {\n children: [_jsxs(CardGroup, {\n cols: 2,\n children: [_jsx(Card, {\n title: \"Create An Account\",\n icon: \"user-plus\",\n href: \"https://vapor.laravel.com/register\",\n children: _jsx(_components.p, {\n children: \"Create your Vapor account today\"\n })\n }), _jsx(Card, {\n title: \"Watch More\",\n icon: \"circle-play\",\n href: \"https://laracasts.com/series/serverless-laravel\",\n children: _jsx(_components.p, {\n children: \"Watch the free Vapor series on Laracasts\"\n })\n })]\n }), \"\\n\", _jsx(Heading, {\n level: \"2\",\n id: \"what-is-vapor%3F\",\n children: \"What Is Vapor?\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"Laravel Vapor is an auto-scaling, serverless deployment platform for Laravel, powered by AWS Lambda. Manage your Laravel infrastructure on Vapor and fall in love with the scalability and simplicity of serverless.\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"Vapor abstracts the complexity of managing Laravel applications on AWS Lambda, as well as interfacing those applications with SQS queues, databases, Redis clusters, networks, CloudFront CDN, and more. Some highlights of Vapor’s features include:\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsx(_components.p, {\n children: \"Auto-scaling web / queue infrastructure fine tuned for Laravel\"\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsx(_components.p, {\n children: \"Zero-downtime deployments and rollbacks\"\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsx(_components.p, {\n children: \"Environment variable / secret management\"\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsx(_components.p, {\n children: \"Database management, including point-in-time restores and scaling\"\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsx(_components.p, {\n children: \"Redis Cache management, including cluster scaling\"\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsx(_components.p, {\n children: \"Database and cache tunnels, allowing for easy local inspection\"\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsx(_components.p, {\n children: \"Automatic uploading of assets to Cloudfront CDN during deployment\"\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsx(_components.p, {\n children: \"Unique, Vapor assigned vanity URLs for each environment, allowing immediate inspection\"\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsx(_components.p, {\n children: \"Custom application domains\"\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsx(_components.p, {\n children: \"DNS management\"\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsx(_components.p, {\n children: \"Certificate management and renewal\"\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsx(_components.p, {\n children: \"Application, database, and cache metrics\"\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsx(_components.p, {\n children: \"CI friendly\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"In short, you can think of Vapor as\"\n }), \" \", _jsx(_components.a, {\n href: \"https://forge.laravel.com\",\n children: \"Laravel Forge\"\n }), \" \", _jsx(_components.strong, {\n children: \"for serverless technology.\"\n })]\n }), \"\\n\", _jsx(Heading, {\n level: \"2\",\n id: \"requirements\",\n children: \"Requirements\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"Vapor requires that your application be compatible with PHP 7.3+ and Laravel 6.0+.\"\n }), \"\\n\", _jsx(Heading, {\n level: \"2\",\n id: \"account-creation\",\n children: \"Account Creation\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"Before integrating Vapor into your application, you should create a Vapor account. If you are just collaborating with others on their projects, you are not required to have a Vapor subscription. To create and manage your own projects, you will need a Vapor subscription.\"\n }), \"\\n\", _jsx(Heading, {\n level: \"2\",\n id: \"installing-the-vapor-cli\",\n children: \"Installing The Vapor CLI\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"You will deploy your Laravel Vapor applications using the \", _jsx(_components.a, {\n href: \"https://github.com/laravel/vapor-cli\",\n children: \"Vapor CLI\"\n }), \". This CLI may be installed globally or on a per-project basis using Composer:\"]\n }), \"\\n\", _jsx(CodeBlock, {\n filename: \"\",\n expandable: \"false\",\n children: _jsx(_components.pre, {\n className: \"language-bash\",\n children: _jsxs(_components.code, {\n className: \"language-bash\",\n children: [_jsxs(_components.span, {\n className: \"\",\n children: [_jsx(_components.span, {\n className: \"token function\",\n children: \"composer\"\n }), \" require laravel/vapor-cli --update-with-dependencies\"]\n }), \"\\n\", \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [_jsx(_components.span, {\n className: \"token function\",\n children: \"composer\"\n }), \" global require laravel/vapor-cli --update-with-dependencies\"]\n }), \"\\n\"]\n })\n })\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"When the CLI is installed per project, you will likely need to execute it via the \", _jsx(_components.code, {\n children: \"vendor/bin\"\n }), \" directory of your project, which is where Composer installs executables. For example, to view all of the available Vapor CLI commands, you may use the \", _jsx(_components.code, {\n children: \"list\"\n }), \" command:\"]\n }), \"\\n\", _jsx(CodeBlock, {\n filename: \"\",\n expandable: \"false\",\n children: _jsx(_components.pre, {\n className: \"language-bash\",\n children: _jsxs(_components.code, {\n className: \"language-bash\",\n children: [_jsx(_components.span, {\n className: \"\",\n children: \"php vendor/bin/vapor list\"\n }), \"\\n\"]\n })\n })\n }), \"\\n\", _jsx(Note, {\n children: _jsxs(_components.p, {\n children: [\"To save keystrokes when interacting with per-project installations of the Vapor CLI, you may add a shell alias to your operating system that aliases the \", _jsx(_components.code, {\n children: \"vapor\"\n }), \" command to \", _jsx(_components.code, {\n children: \"php vendor/bin/vapor\"\n }), \".\"]\n })\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"To learn more about a command and its arguments, execute the \", _jsx(_components.code, {\n children: \"help\"\n }), \" command with the name of the command you wish to explore:\"]\n }), \"\\n\", _jsx(CodeBlock, {\n filename: \"\",\n expandable: \"false\",\n children: _jsx(_components.pre, {\n className: \"language-bash\",\n children: _jsxs(_components.code, {\n className: \"language-bash\",\n children: [_jsxs(_components.span, {\n className: \"\",\n children: [\"php vendor/bin/vapor \", _jsx(_components.span, {\n className: \"token builtin class-name\",\n children: \"help\"\n }), \" deploy\"]\n }), \"\\n\"]\n })\n })\n }), \"\\n\", _jsx(Heading, {\n level: \"3\",\n id: \"logging-in\",\n children: \"Logging In\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"After you have installed the Vapor CLI, you should authenticate with your Vapor account using the \", _jsx(_components.code, {\n children: \"login\"\n }), \" command:\"]\n }), \"\\n\", _jsx(CodeBlock, {\n filename: \"\",\n expandable: \"false\",\n children: _jsx(_components.pre, {\n className: \"language-bash\",\n children: _jsxs(_components.code, {\n className: \"language-bash\",\n children: [_jsx(_components.span, {\n className: \"\",\n children: \"vapor login\"\n }), \"\\n\"]\n })\n })\n }), \"\\n\", _jsx(Heading, {\n level: \"2\",\n id: \"installing-the-vapor-core\",\n children: \"Installing The Vapor Core\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"The \", _jsx(_components.code, {\n children: \"laravel/vapor-core\"\n }), \" \", _jsx(_components.a, {\n href: \"https://github.com/laravel/vapor-core\",\n children: \"package\"\n }), \" must be installed as a dependency of every Laravel application that is deployed using Vapor. This package contains various Vapor runtime files and a service provider to allow your application to run on Vapor. You may install the Vapor Core into your project using Composer:\"]\n }), \"\\n\", _jsx(CodeBlock, {\n filename: \"\",\n expandable: \"false\",\n children: _jsx(_components.pre, {\n className: \"language-bash\",\n children: _jsxs(_components.code, {\n className: \"language-bash\",\n children: [_jsxs(_components.span, {\n className: \"\",\n children: [_jsx(_components.span, {\n className: \"token function\",\n children: \"composer\"\n }), \" require laravel/vapor-core --update-with-dependencies\"]\n }), \"\\n\"]\n })\n })\n }), \"\\n\", _jsx(Heading, {\n level: \"2\",\n id: \"sandbox-accounts\",\n children: \"Sandbox Accounts\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"After creating a Vapor account, your account will be on our free “sandbox” plan, which allows you to experience the power of Vapor without the upfront commitment of subscribing to a paid plan. A sandbox account allows you to provision services such as networks, databases, and caches. You may add a single project which, once deployed, will be accessible via an \", _jsx(_components.a, {\n href: \"https://docs.aws.amazon.com/lambda/latest/dg/lambda-urls.html\",\n children: \"AWS Lambda function URL\"\n }), \".\"]\n }), \"\\n\", _jsx(Warning, {\n children: _jsx(_components.p, {\n children: \"Sandbox projects may not utilize API Gateway versions, load balancers, firewalls, or custom domains. To utilize these features, you will need to choose a subscription plan.\"\n })\n }), \"\\n\", _jsx(Heading, {\n level: \"2\",\n id: \"teams\",\n children: \"Teams\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"When you create your Vapor account, a “Personal” team is automatically created for you. You can rename this team in your team settings. All projects, databases, caches, and other Vapor resources belong to a team. You are free to create as many teams as you wish via the Vapor UI or the \", _jsx(_components.code, {\n children: \"team\"\n }), \" CLI command. There is no additional charge for creating teams, and they serve as a great way to organize your projects by client or topic.\"]\n }), \"\\n\", _jsx(Heading, {\n level: \"3\",\n id: \"current-team-%26-switching-teams\",\n children: \"Current Team \u0026 Switching Teams\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"When managing Vapor resources via the CLI, you will need to be aware of your currently active team. You may view your current team using the \", _jsx(_components.code, {\n children: \"team:current\"\n }), \" command:\"]\n }), \"\\n\", _jsx(CodeBlock, {\n filename: \"\",\n expandable: \"false\",\n children: _jsx(_components.pre, {\n className: \"language-bash\",\n children: _jsxs(_components.code, {\n className: \"language-bash\",\n children: [_jsx(_components.span, {\n className: \"\",\n children: \"vapor team:current\"\n }), \"\\n\"]\n })\n })\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"To change your active team, you may use the \", _jsx(_components.code, {\n children: \"team:switch\"\n }), \" command:\"]\n }), \"\\n\", _jsx(CodeBlock, {\n filename: \"\",\n expandable: \"false\",\n children: _jsx(_components.pre, {\n className: \"language-bash\",\n children: _jsxs(_components.code, {\n className: \"language-bash\",\n children: [_jsx(_components.span, {\n className: \"\",\n children: \"vapor team:switch\"\n }), \"\\n\"]\n })\n })\n }), \"\\n\", _jsx(Heading, {\n level: \"3\",\n id: \"collaborators\",\n children: \"Collaborators\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"You can invite more people to your team via the “Team Settings” menu in the Vapor UI, or using the \", _jsx(_components.code, {\n children: \"team:add\"\n }), \" CLI command. When you add a new collaborator to your team via the Vapor UI, you may select the permissions to assign to that person. For example, you can prevent a given team member from deleting databases or caches.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"You may remove collaborators from your team using the Vapor UI or \", _jsx(_components.code, {\n children: \"team:remove\"\n }), \" CLI command.\"]\n }), \"\\n\", _jsx(Heading, {\n level: \"2\",\n id: \"linking-with-aws\",\n children: \"Linking With AWS\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"In order to deploy projects or create other resources using Vapor, you will need to link an active AWS account on your team’s settings management page.\"\n }), \"\\n\", _jsx(Heading, {\n level: \"3\",\n id: \"creating-an-iam-role\",\n children: \"Creating An IAM Role\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"To create a new IAM role, navigate to the IAM service on your AWS dashboard. Once you are in the IAM dashboard, you may select “Roles” from the left-side navigation panel and click the “Create Role” button.\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"The process for creating the role is outlined in these steps:\"\n }), \"\\n\", _jsxs(_components.ol, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Choose “AWS account” as the trusted entity type, and select “Another AWS account.”\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Enter the “Vapor Account ID” from the Vapor dashboard, then click “Next.”\"\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"In the “Permissions policies” section, either grant full administrator access by selecting the \", _jsx(_components.code, {\n children: \"AdministratorAccess\"\n }), \" policy or create a custom policy with the \", _jsx(_components.a, {\n href: \"/introduction#permissions\",\n children: \"specific permissions\"\n }), \" required by Vapor. After selecting a policy, click “Next.”\"]\n }), \"\\n\", _jsx(_components.li, {\n children: \"In the “Name, review, and create” section, provide a name and description for the role.\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Update the “Trust policy” under “Select trusted entities” by enabling the “Require external ID” checkbox and entering the “Team External ID” shown in the Vapor dashboard.\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Complete the process by creating the role.\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Copy the role ARN displayed in the AWS dashboard and add it to your AWS credentials in Vapor.\"\n }), \"\\n\"]\n }), \"\\n\", _jsx(Heading, {\n level: \"4\",\n id: \"permissions\",\n children: \"Permissions\"\n }), \"\\n\", _jsx(Note, {\n children: _jsxs(_components.p, {\n children: [\"Since Vapor manages many types of resources across more than a dozen AWS services, it may be convenient to create a role with the \", _jsx(_components.code, {\n children: \"AdministratorAccess\"\n }), \" policy. If desired, you may create a separate AWS account to house this role and contain all of your Vapor resources.\"]\n })\n }), \"\\n\", _jsx(_components.p, {\n children: \"On the permissions management screen, you may grant full administrator access to the IAM role by selecting the “AdministratorAccess” policy. Or, you would prefer to not provide administrator access to Vapor, you may instead create a custom permission policy with the specific permissions needed by Vapor.\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"It is necessary to create two policies due to the policy size limit set by AWS. To do so, select “Create policy” from the “Permissions policies” panel. Choose the JSON option and provide the first permission definition below. Then, follow the same process to create another policy using the second definition listed below. Once the policies have been defined, you may attach them to your new IAM role:\"\n }), \"\\n\", _jsx(CodeBlock, {\n filename: \"\",\n expandable: \"false\",\n children: _jsx(_components.pre, {\n className: \"language-json\",\n children: _jsxs(_components.code, {\n className: \"language-json\",\n children: [_jsx(_components.span, {\n className: \"\",\n children: _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"{\"\n })\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token property\",\n children: \"\\\"Version\\\"\"\n }), _jsx(_components.span, {\n className: \"token operator\",\n children: \":\"\n }), \" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"2012-10-17\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token property\",\n children: \"\\\"Statement\\\"\"\n }), _jsx(_components.span, {\n className: \"token operator\",\n children: \":\"\n }), \" \", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"[\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"{\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token property\",\n children: \"\\\"Sid\\\"\"\n }), _jsx(_components.span, {\n className: \"token operator\",\n children: \":\"\n }), \" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"VaporPolicy\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token property\",\n children: \"\\\"Effect\\\"\"\n }), _jsx(_components.span, {\n className: \"token operator\",\n children: \":\"\n }), \" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"Allow\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token property\",\n children: \"\\\"Action\\\"\"\n }), _jsx(_components.span, {\n className: \"token operator\",\n children: \":\"\n }), \" \", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"[\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"acm:AddTagsToCertificate\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"acm:DeleteCertificate\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"acm:DescribeCertificate\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"acm:ImportCertificate\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"acm:RequestCertificate\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"apigateway:DELETE\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"apigateway:GET\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"apigateway:PATCH\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"apigateway:POST\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"apigateway:PUT\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"apigateway:SetWebACL\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"budgets:ModifyBudget\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"budgets:ViewBudget\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"cloudformation:CreateStack\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"cloudformation:DeleteStack\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"cloudformation:DescribeStacks\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"cloudformation:UpdateStack\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"cloudfront:CreateOriginAccessControl\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"cloudfront:CreateDistribution\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"cloudfront:DeleteDistribution\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"cloudfront:GetDistribution\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"cloudfront:GetDistributionConfig\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"cloudfront:UpdateDistribution\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"cloudwatch:DeleteAlarms\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"cloudwatch:GetMetricStatistics\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"cloudwatch:PutMetricAlarm\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"dynamodb:CreateTable\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"dynamodb:DescribeTable\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"dynamodb:DescribeTimeToLive\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"dynamodb:TagResource\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"dynamodb:UpdateTimeToLive\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:AllocateAddress\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:AssociateAddress\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:AssociateRouteTable\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:AttachInternetGateway\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:AuthorizeSecurityGroupIngress\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:CreateInternetGateway\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:CreateNatGateway\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:CreateRoute\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:CreateRouteTable\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:CreateSubnet\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:CreateTags\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:CreateVpc\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:CreateVpcEndpoint\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DeleteInternetGateway\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DeleteKeyPair\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DeleteNatGateway\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DeleteRoute\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DeleteRouteTable\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DeleteSubnet\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DeleteVolume\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DeleteVpc\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DeleteVpcEndpoints\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DescribeAddresses\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DescribeAvailabilityZones\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DescribeImages\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DescribeInstanceAttribute\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DescribeInstances\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DescribeInternetGateways\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DescribeKeyPairs\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DescribeNatGateways\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DescribeNetworkAcls\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DescribeRegions\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DescribeRouteTables\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DescribeSecurityGroupRules\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DescribeSecurityGroups\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DescribeSnapshots\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DescribeSubnets\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DescribeTransitGatewayRouteTables\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DescribeTransitGatewayVpcAttachments\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DescribeTransitGateways\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DescribeVolumes\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DescribeVpcEndpoints\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DescribeVpcs\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DetachInternetGateway\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:DisassociateRouteTable\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:ImportKeyPair\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:ModifySubnetAttribute\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:ModifyVpcAttribute\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:ReleaseAddress\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:RevokeSecurityGroupEgress\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:RevokeSecurityGroupIngress\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:RunInstances\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ec2:TerminateInstances\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ecr:BatchCheckLayerAvailability\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ecr:BatchDeleteImage\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ecr:CompleteLayerUpload\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ecr:CreateRepository\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ecr:DeleteRepository\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ecr:GetAuthorizationToken\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ecr:GetRepositoryPolicy\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ecr:InitiateLayerUpload\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ecr:PutImage\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ecr:SetRepositoryPolicy\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ecr:UploadLayerPart\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticache:AddTagsToResource\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticache:CreateCacheSubnetGroup\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticache:CreateReplicationGroup\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticache:CreateServerlessCache\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticache:DeleteCacheSubnetGroup\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticache:DeleteReplicationGroup\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticache:DeleteServerlessCache\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticache:DescribeCacheSubnetGroups\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticache:DescribeReplicationGroups\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticache:DescribeServerlessCaches\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticache:ListTagsForResource\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticache:ModifyReplicationGroupShardConfiguration\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticache:ModifyServerlessCache\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticloadbalancing:AddListenerCertificates\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticloadbalancing:AddTags\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticloadbalancing:CreateListener\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticloadbalancing:CreateLoadBalancer\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticloadbalancing:CreateRule\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticloadbalancing:CreateTargetGroup\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticloadbalancing:DeleteLoadBalancer\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticloadbalancing:DescribeLoadBalancers\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticloadbalancing:DescribeRules\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticloadbalancing:DescribeTargetGroups\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticloadbalancing:ModifyListener\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticloadbalancing:ModifyRule\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticloadbalancing:ModifyTargetGroupAttributes\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticloadbalancing:RegisterTargets\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"elasticloadbalancing:SetWebAcl\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"events:DeleteRule\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"events:DescribeRule\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"events:ListTargetsByRule\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"events:PutRule\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"events:PutTargets\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"events:RemoveTargets\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"iam:CreateRole\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"iam:CreateServiceLinkedRole\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"iam:GetRole\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"iam:GetUser\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"iam:PassRole\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"iam:PutRolePolicy\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"iam:UpdateAssumeRolePolicy\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"kms:CreateGrant\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"kms:Decrypt\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"kms:DescribeKey\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"kms:Encrypt\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"kms:GenerateDataKey\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:AddPermission\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:CreateAlias\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:CreateEventSourceMapping\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:CreateFunction\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:CreateFunctionUrlConfig\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:DeleteFunction\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:DeleteFunctionConcurrency\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:DeleteProvisionedConcurrencyConfig\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:GetAccountSettings\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:GetAlias\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:GetFunction\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:GetFunctionUrlConfig\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:GetLayerVersion\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:GetPolicy\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:InvokeFunction\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:ListEventSourceMappings\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:ListVersionsByFunction\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:PublishVersion\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:PutFunctionConcurrency\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:PutFunctionEventInvokeConfig\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:PutProvisionedConcurrencyConfig\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:TagResource\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:UpdateAlias\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:UpdateEventSourceMapping\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:UpdateFunctionCode\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"lambda:UpdateFunctionConfiguration\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"logs:FilterLogEvents\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"rds:AddTagsToResource\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"rds:CreateDBCluster\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"rds:CreateDBInstance\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"rds:CreateDBProxy\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"rds:CreateDBSubnetGroup\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"rds:DeleteDBCluster\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"rds:DeleteDBInstance\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"rds:DeleteDBProxy\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"rds:DeleteDBSubnetGroup\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"rds:DescribeDBClusters\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"rds:DescribeDBEngineVersions\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"rds:DescribeDBInstances\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"rds:DescribeDBProxies\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"rds:DescribeDBSubnetGroups\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"rds:ListTagsForResource\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"rds:ModifyDBCluster\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"rds:ModifyDBInstance\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"rds:RegisterDBProxyTargets\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"rds:RestoreDBInstanceToPointInTime\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"route53:ChangeResourceRecordSets\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"route53:CreateHostedZone\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"route53:GetHostedZone\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"route53:ListHostedZonesByName\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"route53:ListResourceRecordSets\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"s3:CreateBucket\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"s3:DeleteBucket\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"s3:DeleteBucketPolicy\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"s3:DeleteObject\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"s3:GetBucketCORS\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"s3:GetBucketLocation\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"s3:GetBucketTagging\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"s3:GetBucketVersioning\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"s3:GetObject\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"s3:ListAllMyBuckets\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"s3:ListBucket\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"s3:PutBucketCORS\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"s3:PutBucketOwnershipControls\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"s3:PutBucketPublicAccessBlock\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"s3:PutLifecycleConfiguration\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"s3:PutObject\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"s3:PutObjectAcl\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"s3:PutBucketPolicy\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"secretsmanager:CreateSecret\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"secretsmanager:DeleteSecret\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"secretsmanager:GetSecretValue\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"secretsmanager:TagResource\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"servicequotas:GetServiceQuota\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ses:VerifyDomainDkim\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ses:VerifyDomainIdentity\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"sns:ConfirmSubscription\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"sns:CreateTopic\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"sns:GetTopicAttributes\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"sns:ListSubscriptionsByTopic\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"sns:SetTopicAttributes\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"sns:Subscribe\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"sns:TagResource\\\"\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"]\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token property\",\n children: \"\\\"Resource\\\"\"\n }), _jsx(_components.span, {\n className: \"token operator\",\n children: \":\"\n }), \" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"*\\\"\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"}\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"]\"\n })]\n }), \"\\n\", _jsx(_components.span, {\n className: \"\",\n children: _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"}\"\n })\n }), \"\\n\"]\n })\n })\n }), \"\\n\", _jsx(CodeBlock, {\n filename: \"\",\n expandable: \"false\",\n children: _jsx(_components.pre, {\n className: \"language-json\",\n children: _jsxs(_components.code, {\n className: \"language-json\",\n children: [_jsx(_components.span, {\n className: \"\",\n children: _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"{\"\n })\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token property\",\n children: \"\\\"Version\\\"\"\n }), _jsx(_components.span, {\n className: \"token operator\",\n children: \":\"\n }), \" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"2012-10-17\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token property\",\n children: \"\\\"Statement\\\"\"\n }), _jsx(_components.span, {\n className: \"token operator\",\n children: \":\"\n }), \" \", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"[\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"{\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token property\",\n children: \"\\\"Sid\\\"\"\n }), _jsx(_components.span, {\n className: \"token operator\",\n children: \":\"\n }), \" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"VaporPolicy\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token property\",\n children: \"\\\"Effect\\\"\"\n }), _jsx(_components.span, {\n className: \"token operator\",\n children: \":\"\n }), \" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"Allow\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token property\",\n children: \"\\\"Action\\\"\"\n }), _jsx(_components.span, {\n className: \"token operator\",\n children: \":\"\n }), \" \", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"[\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"sqs:CreateQueue\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"sqs:DeleteQueue\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"sqs:GetQueueAttributes\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"sqs:GetQueueUrl\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"sqs:SetQueueAttributes\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ssm:DeleteParameter\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ssm:DeleteParameters\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ssm:PutParameter\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"ssm:UpdateServiceSetting\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"wafv2:AssociateWebACL\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"wafv2:CreateWebACL\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"wafv2:DeleteWebACL\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"wafv2:GetWebACL\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"wafv2:ListResourcesForWebACL\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"wafv2:TagResource\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"wafv2:UpdateWebACL\\\"\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"]\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token property\",\n children: \"\\\"Resource\\\"\"\n }), _jsx(_components.span, {\n className: \"token operator\",\n children: \":\"\n }), \" \", _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"*\\\"\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"}\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"]\"\n })]\n }), \"\\n\", _jsx(_components.span, {\n className: \"\",\n children: _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"}\"\n })\n }), \"\\n\"]\n })\n })\n }), \"\\n\", _jsx(Warning, {\n children: _jsx(_components.p, {\n children: \"It’s probable this list of permissions will change as we add new features to Vapor, which may result in unexpected errors if your policy is not kept up to date.\"\n })\n }), \"\\n\", _jsx(Heading, {\n level: \"4\",\n id: \"defining-your-aws-budget\",\n children: \"Defining Your AWS Budget\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"When linking your AWS account to Vapor, it is important to stay informed about your AWS costs. This can be done directly in the AWS Console using the AWS Budgets service. In addition, you can use Vapor’s managed budgets to define your monthly AWS budget in USD, while also configuring multiple alarms directly on the “Team Settings \u003e AWS Accounts” screen of the Vapor UI. At this time, up to five alarms can be configured:\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsx(_components.p, {\n children: \"Actual cost \u003e 85%\"\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsx(_components.p, {\n children: \"Actual cost \u003e 100%\"\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsx(_components.p, {\n children: \"Actual cost \u003e 200%\"\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsx(_components.p, {\n children: \"Actual cost \u003e 500%\"\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsx(_components.p, {\n children: \"Forecasted cost \u003e 100%\"\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.p, {\n children: \"Each alarm can be triggered once per monthly billing period. When an alarm is triggered, the team owner will receive an email, allowing them to act quickly and avoid unexpected charges.\"\n }), \"\\n\", _jsx(Heading, {\n level: \"4\",\n id: \"aws-service-limits\",\n children: \"AWS Service Limits\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"AWS Service Limits can be increased through the following options:\"\n }), \"\\n\", _jsxs(AccordionGroup, {\n children: [_jsx(Accordion, {\n title: \"From the AWS console\",\n children: _jsxs(_components.ol, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Open the Service Quotas console.\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"In the navigation pane, choose AWS services.\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Select a service.\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Select a quota.\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Follow the directions to request a quota increase.\"\n }), \"\\n\"]\n })\n }), _jsx(Accordion, {\n title: \"From the AWS CLI\",\n children: _jsxs(_components.ol, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"Use the \", _jsx(_components.a, {\n href: \"https://docs.aws.amazon.com/cli/latest/reference/service-quotas/request-service-quota-increase.html\",\n children: \"request-service-quota-increase\"\n }), \" AWS CLI command.\"]\n }), \"\\n\"]\n })\n }), _jsx(Accordion, {\n title: \"From a support case\",\n children: _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"If a service is not yet available in Service Quotas, use the AWS Support Center Console to create a \", _jsx(_components.a, {\n href: \"https://support.console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase\",\n children: \"service quota increase case\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"If the service is available in Service Quotas, AWS recommends that you use the \", _jsx(_components.a, {\n href: \"https://console.aws.amazon.com/servicequotas/home\",\n children: \"Service Quotas console\"\n }), \" instead of creating a support case.\"]\n }), \"\\n\"]\n })\n })]\n }), \"\\n\", _jsxs(Note, {\n children: [_jsx(_components.p, {\n children: \"For additional information, refer to the following AWS documentation:\"\n }), _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.a, {\n href: \"https://docs.aws.amazon.com/servicequotas/latest/userguide/request-quota-increase.html\",\n children: \"Requesting a quota increase\"\n }), \" in the \", _jsx(_components.em, {\n children: \"Service Quotas User Guide\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.a, {\n href: \"https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html\",\n children: \"AWS Service Quotas reference\"\n }), \".\"]\n }), \"\\n\"]\n })]\n }), \"\\n\", _jsx(Heading, {\n level: \"2\",\n id: \"notification-methods\",\n children: \"Notification Methods\"\n }), \"\\n\", _jsx(Heading, {\n level: \"3\",\n id: \"slack\",\n children: \"Slack\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"In order to receive notifications via Slack, you will need to \", _jsx(_components.a, {\n href: \"https://api.slack.com/apps\",\n children: \"create a Slack App\"\n }), \" and select the workspace to which the Slack App should be installed.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Once the Slack App has been created, visit the \", _jsx(_components.strong, {\n children: \"Incoming Webhooks\"\n }), \" settings pane of your App under the “Features” sidebar. Then, activate the Incoming Webhooks feature using the activation switch.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Once activated, you can create a new Incoming Webhook using the \", _jsx(_components.strong, {\n children: \"Add New Webhook to Workspace\"\n }), \" button. Finally, you should copy the Webhook URL provided by Slack and insert into your team’s \", _jsx(_components.a, {\n href: \"https://vapor.laravel.com/app/team/settings/notification-methods\",\n children: \"Notifications Settings\"\n }), \". \"]\n }), \"\\n\", _jsx(Heading, {\n level: \"2\",\n id: \"legal-and-compliance\",\n children: \"Legal and Compliance\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Our \", _jsx(_components.a, {\n href: \"https://vapor.laravel.com/terms\",\n children: \"Terms of Service\"\n }), \" and \", _jsx(_components.a, {\n href: \"https://vapor.laravel.com/privacy\",\n children: \"Privacy Policy\"\n }), \" provide details on the terms, conditions, and privacy practices for using Laravel Vapor.\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\nfunction _missingMdxReference(id, component) {\n throw new Error(\"Expected \" + (component ? \"component\" : \"object\") + \" `\" + id + \"` to be defined: you likely forgot to import, pass, or provide it.\");\n}\n","frontmatter":{},"scope":{"config":{"$schema":"https://mintlify.com/docs.json","theme":"mint","name":"Laravel Vapor","colors":{"primary":"#00B1E4","light":"#00B1E4","dark":"#00B1E4"},"favicon":"/favicon.png","navigation":{"tabs":[{"tab":"Documentation","groups":[{"group":"Get Started","pages":["introduction"]},{"group":"Projects","pages":["projects/the-basics","projects/environments","projects/deployments","projects/development","projects/domains"]},{"group":"Resources","pages":["resources/queues","resources/storage","resources/networks","resources/databases","resources/caches","resources/logs"]},{"group":"Integrations","pages":["integrations/sentry"]}]},{"tab":"Knowledge Base","groups":[{"group":"Knowledge Base","pages":["kb/troubleshooting"]}]}],"global":{"anchors":[{"anchor":"Community","href":"https://discord.com/invite/laravel","icon":"discord"},{"anchor":"Blog","href":"https://blog.laravel.com/vapor","icon":"newspaper"}]}},"logo":{"light":"https://mintlify.s3.us-west-1.amazonaws.com/vapor/logo/light.svg","dark":"https://mintlify.s3.us-west-1.amazonaws.com/vapor/logo/dark.svg","href":"https://vapor.laravel.com"},"background":{"decoration":"windows"},"navbar":{"links":[{"label":"Support","href":"mailto:vapor@laravel.com"},{"label":"Platform Status","href":"https://status.laravel.com/"}],"primary":{"type":"button","label":"Dashboard","href":"https://vapor.laravel.com"}},"footer":{"socials":{"x":"https://x.com/laravelphp","github":"https://github.com/laravel","discord":"https://discord.com/invite/laravel","linkedin":"https://linkedin.com/company/laravel"},"links":[{"header":"Platform","items":[{"label":"Dashboard","href":"https://vapor.laravel.com/"},{"label":"Status","href":"https://status.laravel.com/"}]},{"header":"Legal and Compliance","items":[{"label":"Term of Service","href":"https://vapor.laravel.com/terms"},{"label":"Privacy Policy","href":"https://vapor.laravel.com/privacy"}]}]},"fonts":{"heading":{"family":"Figtree"},"body":{"family":"Figtree"}},"redirects":[{"destination":"/projects/the-basics","source":"/1.0/projects/the-basics.html","_id":"67eff8671eeb51f546b93c00"},{"destination":"/projects/environments","source":"/1.0/projects/environments.html","_id":"67eff8671eeb51f546b93c01"},{"destination":"/projects/deployments","source":"/1.0/projects/deployments.html","_id":"67eff8671eeb51f546b93c02"},{"destination":"/projects/development","source":"/1.0/projects/development.html","_id":"67eff8671eeb51f546b93c03"},{"destination":"/projects/domains","source":"/1.0/projects/domains.html","_id":"67eff8671eeb51f546b93c04"},{"destination":"/kb/troubleshooting","source":"/1.0/projects/troubleshooting.html","_id":"67eff8671eeb51f546b93c05"},{"destination":"/kb/troubleshooting","source":"/projects/troubleshooting","_id":"67eff8671eeb51f546b93c06"},{"destination":"/integrations/sentry","source":"/1.0/integrations/sentry.html","_id":"67eff8671eeb51f546b93c07"},{"destination":"/resources/queues","source":"/1.0/resources/queues.html","_id":"67eff8671eeb51f546b93c08"},{"destination":"/resources/storage","source":"/1.0/resources/storage.html","_id":"67eff8671eeb51f546b93c09"},{"destination":"/resources/networks","source":"/1.0/resources/networks.html","_id":"67eff8671eeb51f546b93c0a"},{"destination":"/resources/databases","source":"/1.0/resources/databases.html","_id":"67eff8671eeb51f546b93c0b"},{"destination":"/resources/caches","source":"/1.0/resources/caches.html","_id":"67eff8671eeb51f546b93c0c"},{"destination":"/resources/logs","source":"/1.0/resources/logs.html","_id":"67eff8671eeb51f546b93c0d"},{"destination":"/introduction","source":"/1.0/introduction.html","_id":"67eff8671eeb51f546b93c0e"}]},"pageMetadata":{"title":"Introduction","description":"Manage your Laravel infrastructure on Vapor and fall in love with the scalability and simplicity of serverless.","href":"/introduction"}}},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"}},"gitSource":{"type":"github","owner":"laravel","repo":"vapor-docs","deployBranch":"main","contentDirectory":"","isPrivate":true},"banner":null},"__N_SSG":true},"page":"/_sites/[subdomain]/[[...slug]]","query":{"subdomain":"docs.vapor.build","slug":["introduction"]},"buildId":"W1amaoDhZ9U6AUK2vdaeu","isFallback":false,"isExperimentalCompile":false,"gsp":true,"scriptLoader":[]}</script></html></body></html>