This feature is under development and not currently available. Contact Aptible Support for more information.
This section covers encryption using AWS Key Management Service. For more information about Aptible’s default managed encryption, see Database Encryption at rest.Aptible supports providing your own encryption key for Database volumes using AWS Key Management Service (KMS) customer-managed customer master keys (CMK). This layer of encryption is applied in addition to Aptible’s existing Database Encryption. Encryption using AWS KMS CMKs is ideal for those who want to retain absolute control over when their data is destroyed or for those who need to rotate their database encryption keys regularly.
CMKs are completely managed outside of Aptible. As a result, if there is an issue accessing a CMK, Aptible will be unable to decrypt the data. If a CMK is deleted, Aptible will be unable to recover the data.
CMKs used by Aptible must be symmetric and must not use imported key material. The CMK must be created in the same region as the Database that will be using the key. Aptible can support all other CMK options.After creating a CMK, the key must be shared with Aptible’s AWS account. When creating the CMK in the AWS console, you can specify that you would like to share the CMK with the AWS account ID 916150859591. Alternatively, you can include the following statements in the policy for the key:
New databases encrypted with a CMK can be created via the Aptible CLI using the aptible db:create command. The CMK should be passed in using the --key-arn flag, for example:
Custom encryption keys can be rotated through AWS. However, this method does not re-encrypt the existing data as described in the CMK key rotation documentation. In order to do this, the key must be manually rotated by updating the CMK in Aptible.
Rotating keys this way will inevitably cause downtime while the backup is restored. Therefore, if you need to conform to a strict key rotation schedule that requires all data to be re-encrypted, you may want to consider implementing Application-Level Encryption to reduce or possibly even mitigate downtime when rotating.
There are a number of reasons that a CMK might be invalid, including being created in the wrong region and failure to share the CMK with Aptible’s AWS account.When the CMK is unavailable, you will hit one of the following errors:
ERROR -- : SUMMARY: Execution failed because of:ERROR -- : - FAILED: Create 10 GB database volumeWARN -- :ERROR -- : There was an error creating the volume. If you are using a custom encryption key, this may be because you have not shared the key with Aptible.
To resolve this, you will need to ensure that the key has been correctly created and shared with Aptible.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Aptible","colors":{"primary":"#4361FF","light":"#4361FF","dark":"#4361FF"},"logo":{"light":"https://mintcdn.com/aptible/nK6qZs9Dv-SJIud9/logo/light-opti9.png?fit=max\u0026auto=format\u0026n=nK6qZs9Dv-SJIud9\u0026q=85\u0026s=116d34dbfb42c6d5af0b854f5a929001","dark":"https://mintcdn.com/aptible/nK6qZs9Dv-SJIud9/logo/dark-opti9.png?fit=max\u0026auto=format\u0026n=nK6qZs9Dv-SJIud9\u0026q=85\u0026s=a1e42f8cf8df1654a38c67a42a6fd308","href":"https://www.aptible.com/"},"favicon":"https://mintcdn.com/aptible/znQKnZ_9oCdAaQ49/favicon.svg?fit=max\u0026auto=format\u0026n=znQKnZ_9oCdAaQ49\u0026q=85\u0026s=f462b06cd86ceae1537728240a8d53e8","background":{"decoration":"grid"},"navbar":{"links":[{"href":"https://app.aptible.com/support","label":"Support"}],"primary":{"type":"button","label":"Sign up","href":"https://app.aptible.com/signup"}},"footer":{"socials":{"twitter":"https://twitter.com/aptible?lang=en","linkedin":"https://www.linkedin.com/company/aptible","github":"https://github.com/aptible"},"links":[{"header":"Resources","items":[{"label":"Blog","href":"https://www.aptible.com/blog"},{"label":"Changelog","href":"https://www.aptible.com/changelog"},{"label":"Trust Center","href":"https://trust.aptible.com/"}]},{"header":"Support","items":[{"label":"Contact Us","href":"https://app.aptible.com/support"},{"label":"Status Page","href":"https://status.aptible.com/"}]}]},"search":{"prompt":"Search or ask AI..."},"seo":{"metatags":{"canonical":"https://www.aptible.com/docs"}},"integrations":{"ga4":{"measurementId":"G-W2CQG3K9LP"}},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Contact Support","icon":"headset","href":"https://app.aptible.com/support"},{"anchor":"Changelog","icon":"sparkles","href":"https://www.aptible.com/changelog"},{"anchor":"Trust Center","icon":"lock","href":"https://trust.aptible.com/"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"aptible","hasAudioNarration":false,"actualSubdomain":"aptible","customDomains":["www.aptible.com"],"gitSource":{"type":"github","owner":"aptible","repo":"mintlify-docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae3f0e529c8303331bca64b","collectionId":"3a70b479-f77b-4b35-a029-03001ed8a712","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae3f0e529c8303331bca64b"},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae3f0e529c8303331bca64b","clientVersion":"0.0.4043","searchFilterCounts":[{"language":"default","tag":"Documentation","count":245},{"language":"default","tag":"Platform","count":122},{"language":"default","tag":"Guides","count":117},{"language":"default","tag":"Reference","count":96},{"language":"default","tag":"Aptible CLI","count":92},{"language":"default","tag":"How to Guides","count":89},{"language":"default","tag":"All CLI Commands","count":89},{"language":"default","tag":"Apps","count":37},{"language":"default","tag":"App Guides","count":35},{"language":"default","tag":"Support \u0026 Troubleshooting","count":28}]},"assistantConfig":{},"basePath":"/docs","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"core-concepts/managed-databases/managing-databases/database-encryption/custom-database-encryption","slug":"/core-concepts/managed-databases/managing-databases/database-encryption/custom-database-encryption","pageMetadata":{"title":"Custom Database Encryption","description":null,"href":"/core-concepts/managed-databases/managing-databases/database-encryption/custom-database-encryption"},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,..._provideComponents(),...props.components},{CodeBlock,Heading,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Warning,{children:_jsx(_components.p,{children:`This feature is under development and not currently available. Contact Aptible Support for more information.`})}),`\n`,_jsxs(_components.p,{children:[`This section covers encryption using AWS Key Management Service. For more information about Aptible’s default managed encryption, see `,_jsx(_components.a,{href:`/core-concepts/managed-databases/managing-databases/database-encryption/overview`,children:`Database Encryption at rest`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`Aptible supports providing your own encryption key for `,_jsx(_components.a,{href:`/core-concepts/managed-databases/overview`,children:`Database`}),` volumes using `,_jsx(_components.a,{href:`https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk`,children:`AWS Key Management Service (KMS) customer-managed customer master keys (CMK)`}),`. This layer of encryption is applied in addition to Aptible’s existing Database Encryption. Encryption using AWS KMS CMKs is ideal for those who want to retain absolute control over when their data is destroyed or for those who need to rotate their database encryption keys regularly.`]}),`\n`,_jsxs(Warning,{children:[`CMKs are completely managed outside of Aptible. As a result, if there is an issue accessing a CMK, Aptible will be unable to decrypt the data. `,_jsx(_components.strong,{children:`If a CMK is deleted, Aptible will be unable to recover the data.`})]}),`\n`,_jsx(Heading,{level:`1`,id:`creating-a-new-cmk`,children:`Creating a New CMK`}),`\n`,_jsx(_components.p,{children:`CMKs used by Aptible must be symmetric and must not use imported key material. The CMK must be created in the same region as the Database that will be using the key. Aptible can support all other CMK options.`}),`\n`,_jsxs(_components.p,{children:[`After creating a CMK, the key must be shared with Aptible’s AWS account. When creating the CMK in the AWS console, you can specify that you would like to share the CMK with the AWS account ID `,_jsx(_components.code,{children:`916150859591`}),`. Alternatively, you can include the following statements in the policy for the key:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`33`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`33`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"Sid\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Allow use of the key\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"Effect\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Allow\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"Principal\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"AWS\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"arn:aws:iam::916150859591:root\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"Action\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"kms:Encrypt\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"kms:Decrypt\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"kms:ReEncrypt*\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"kms:GenerateDataKey*\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"kms:DescribeKey\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ],`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"Resource\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"*\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`},`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"Sid\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Allow attachment of persistent resources\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"Effect\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Allow\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"Principal\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"AWS\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"arn:aws:iam::916150859591:root\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"Action\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"kms:CreateGrant\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"kms:ListGrants\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"kms:RevokeGrant\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ],`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"Resource\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"*\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"Condition\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"Bool\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"kms:GrantIsForAWSResource\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"true\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`1`,id:`creating-a-new-database-encrypted-with-a-cmk`,children:`Creating a new Database encrypted with a CMK`}),`\n`,_jsxs(_components.p,{children:[`New databases encrypted with a CMK can be created via the Aptible CLI using the `,_jsx(_components.a,{href:`/reference/aptible-cli/cli-commands/cli-db-create`,children:_jsx(_components.code,{children:`aptible db:create`})}),` command. The CMK should be passed in using the `,_jsx(_components.code,{children:`--key-arn`}),` flag, for example:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`aptible`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` db:create`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` $HANDLE`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --type`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` $TYPE`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --key-arn`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` arn:aws:kms:us-east-1:111111111111:key/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`1`,id:`key-rotation`,children:`Key Rotation`}),`\n`,_jsxs(_components.p,{children:[`Custom encryption keys can be rotated through AWS. However, this method does not re-encrypt the existing data as described in the `,_jsx(_components.a,{href:`https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html`,children:`CMK key rotation`}),` documentation. In order to do this, the key must be manually rotated by updating the CMK in Aptible.`]}),`\n`,_jsx(Heading,{level:`1`,id:`updating-cmks`,children:`Updating CMKs`}),`\n`,_jsxs(_components.p,{children:[`CMKs can be added or rotated by creating a backup and restoring from the backup via the Aptible CLI command `,_jsx(_components.a,{href:`/reference/aptible-cli/cli-commands/cli-backup-restore`,children:_jsx(_components.code,{children:`aptible backup:restore`})})]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`aptible`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` backup:restore`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` $BACKUP_ID`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --key-arn`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` arn:aws:kms:us-east-1:111111111111:key/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Rotating keys this way will inevitably cause downtime while the backup is restored. Therefore, if you need to conform to a strict key rotation schedule that requires all data to be re-encrypted, you may want to consider implementing `,_jsx(_components.a,{href:`/core-concepts/managed-databases/managing-databases/database-encryption/application-level-encryption`,children:`Application-Level Encryption`}),` to reduce or possibly even mitigate downtime when rotating.`]}),`\n`,_jsx(Heading,{level:`1`,id:`invalid-cmks`,children:`Invalid CMKs`}),`\n`,_jsx(_components.p,{children:`There are a number of reasons that a CMK might be invalid, including being created in the wrong region and failure to share the CMK with Aptible’s AWS account.`}),`\n`,_jsx(_components.p,{children:`When the CMK is unavailable, you will hit one of the following errors:`}),`\n`,_jsx(CodeBlock,{numberOfLines:`5`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`5`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`ERROR -- : SUMMARY: Execution failed because of:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`ERROR -- : - FAILED: Create 10 GB database volume`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`WARN -- :`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`ERROR -- : There was an error creating the volume. If you are using a custom encryption key, this may be because you have not shared the key with Aptible.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(CodeBlock,{numberOfLines:`3`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`3`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`ERROR -- : SUMMARY: Execution failed because of:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`ERROR -- : - FAILED: Attach volume`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(_components.p,{children:`To resolve this, you will need to ensure that the key has been correctly created and shared with Aptible.`})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Custom Database Encryption","description":null,"href":"/core-concepts/managed-databases/managing-databases/database-encryption/custom-database-encryption"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Creating a New CMK","slug":"creating-a-new-cmk","depth":1,"children":[]},{"title":"Creating a new Database encrypted with a CMK","slug":"creating-a-new-database-encrypted-with-a-cmk","depth":1,"children":[]},{"title":"Key Rotation","slug":"key-rotation","depth":1,"children":[]},{"title":"Updating CMKs","slug":"updating-cmks","depth":1,"children":[]},{"title":"Invalid CMKs","slug":"invalid-cmks","depth":1,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"aptible","siteName":"Aptible","title":"Custom Database Encryption - Aptible","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-26T18:16:41.599Z","originalFileLocation":"core-concepts/managed-databases/managing-databases/database-encryption/custom-database-encryption.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"application-name\" content=\"Aptible\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/aptible/Sr55mlb_VATXGmMy/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/docs/mintlify-assets/_mintlify/favicons/aptible/Sr55mlb_VATXGmMy/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/aptible/Sr55mlb_VATXGmMy/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/aptible/Sr55mlb_VATXGmMy/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/aptible/Sr55mlb_VATXGmMy/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/aptible/Sr55mlb_VATXGmMy/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/aptible/Sr55mlb_VATXGmMy/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/aptible/Sr55mlb_VATXGmMy/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/aptible/Sr55mlb_VATXGmMy/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Custom Database Encryption - Aptible\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Aptible\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://www.aptible.com/docs/core-concepts/managed-databases/managing-databases/database-encryption/custom-database-encryption\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://aptible.mintlify.app/_mintlify/api/og/v2?division=Documentation\u0026amp;title=Custom+Database+Encryption\u0026amp;theme=c333d236eff7eda320fab2dd\u0026amp;signature=98c879e861f575bc165b9d7c27eaff43d368d248e294fa1251ca90a2d2bad992\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Custom Database Encryption - Aptible\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://aptible.mintlify.app/_mintlify/api/og/v2?division=Documentation\u0026amp;title=Custom+Database+Encryption\u0026amp;theme=c333d236eff7eda320fab2dd\u0026amp;signature=98c879e861f575bc165b9d7c27eaff43d368d248e294fa1251ca90a2d2bad992\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/docs/mintlify-assets/_mintlify/favicons/aptible/Sr55mlb_VATXGmMy/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Aptible\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#4361FF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://www.aptible.com/docs/core-concepts/managed-databases/managing-databases/database-encryption/custom-database-encryption\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/core-concepts/managed-databases/managing-databases/database-encryption/custom-database-encryption.md\">","siteName":"Aptible","nav":{"global":{"anchors":[{"anchor":"Contact Support","icon":"headset","href":"https://app.aptible.com/support"},{"anchor":"Changelog","icon":"sparkles","href":"https://www.aptible.com/changelog"},{"anchor":"Trust Center","icon":"lock","href":"https://trust.aptible.com/"}]},"tabs":[{"tab":"Documentation","groups":[{"group":" ","pages":[{"title":"Aptible Documentation","sidebarTitle":"Home","mode":"wide","href":"/getting-started/home"}]},{"group":"Getting Started","pages":[{"title":"Introduction to Aptible","sidebarTitle":"Introduction","href":"/getting-started/introduction"},{"group":"Deploy your first App","pages":[{"title":"Deploy your first app","sidebarTitle":"View all templates","hidden":true,"href":"/getting-started/deploy-starter-template/overview"},{"title":"Deploy your custom code","href":"/getting-started/deploy-custom-code"},{"title":"Deploy a Ruby on Rails Template","sidebarTitle":"Deploy a Ruby Template","href":"/getting-started/deploy-starter-template/ruby-on-rails"},{"title":"Deploy a Node.js + Express Template","sidebarTitle":"Deploy a Node.js Template","href":"/getting-started/deploy-starter-template/node-js"},{"title":"Deploy a Python + Django Template","sidebarTitle":"Deploy a Django Template","href":"/getting-started/deploy-starter-template/python-django"},{"title":"Deploy a PHP + Laravel Template","sidebarTitle":"Deploy a Laravel Template","href":"/getting-started/deploy-starter-template/php-laravel"},{"title":"Deploy a Python + Flask Demo App","sidebarTitle":"Deploy a Python Demo App","href":"/getting-started/deploy-starter-template/python-flask"}]},{"group":"Secure your LLM usage","pages":[{"title":"Secure Claude Code with the LLM Gateway","sidebarTitle":"Claude Code","href":"/getting-started/secure-llm-usage/claude-code"},{"title":"Secure OpenAI-compatible SDKs with the LLM Gateway","sidebarTitle":"OpenAI-compatible SDKs","href":"/getting-started/secure-llm-usage/openai-sdk"},{"title":"Secure Anthropic-compatible SDKs with the LLM Gateway","sidebarTitle":"Anthropic-compatible SDKs","href":"/getting-started/secure-llm-usage/anthropic-sdk"}]}]},{"group":"Platform","pages":[{"group":"Apps","pages":[{"title":"Apps","sidebarTitle":"Overview","href":"/core-concepts/apps/overview"},{"group":"Deploying Apps","pages":[{"title":"Deploying Apps","sidebarTitle":"Overview","href":"/core-concepts/apps/deploying-apps/overview"},{"group":"Image","pages":[{"title":"Image","sidebarTitle":"Overview","href":"/core-concepts/apps/deploying-apps/image/overview"},{"group":"Deploying with Git","pages":[{"title":"Deploying with Git","sidebarTitle":"Overview","href":"/core-concepts/apps/deploying-apps/image/deploying-with-git/overview"},{"title":"Docker Build","href":"/core-concepts/apps/deploying-apps/image/deploying-with-git/build"}]},{"group":"Deploying with Docker Image","pages":[{"title":"Deploying with Docker Image","sidebarTitle":"Overview","href":"/core-concepts/apps/deploying-apps/image/deploying-with-docker-image/overview"},{"title":"Procfiles and `.aptible.yml`","href":"/core-concepts/apps/deploying-apps/image/deploying-with-docker-image/procfile-aptible-yml-direct-docker-deploy"}]}]},{"title":"Services","href":"/core-concepts/apps/deploying-apps/services"},{"title":"Configuration","href":"/core-concepts/apps/deploying-apps/configuration"},{"group":"Releases","pages":[{"title":"Releases","sidebarTitle":"Overview","href":"/core-concepts/apps/deploying-apps/releases/overview"},{"title":".aptible.yml","href":"/core-concepts/apps/deploying-apps/releases/aptible-yml"}]},{"title":"Rollbacks","sidebarTitle":"Rollbacks","href":"/core-concepts/apps/deploying-apps/releases/rollbacks"},{"group":"Deployment Sources","pages":[{"title":"Deployment Sources","sidebarTitle":"Overview","href":"/core-concepts/observability/sources"},{"title":"Linking Apps to Sources","href":"/core-concepts/apps/deploying-apps/linking-apps-to-sources"}]}]},{"group":"Connecting to Apps","pages":[{"title":"Connecting to Apps","sidebarTitle":"Overview","href":"/core-concepts/apps/connecting-to-apps/overview"},{"group":"App Endpoints","pages":[{"title":"App Endpoints","sidebarTitle":"Overview","href":"/core-concepts/apps/connecting-to-apps/app-endpoints/overview"},{"group":"HTTP(S) Endpoints","pages":[{"title":"HTTP(S) Endpoints","sidebarTitle":"Overview","href":"/core-concepts/apps/connecting-to-apps/app-endpoints/https-endpoints/overview"},{"title":"Health Checks","href":"/core-concepts/apps/connecting-to-apps/app-endpoints/https-endpoints/health-checks"},{"title":"HTTP Request Headers","href":"/core-concepts/apps/connecting-to-apps/app-endpoints/https-endpoints/http-request-headers"},{"title":"HTTPS Protocols","href":"/core-concepts/apps/connecting-to-apps/app-endpoints/https-endpoints/https-protocols"},{"title":"HTTPS Redirect","href":"/core-concepts/apps/connecting-to-apps/app-endpoints/https-endpoints/https-redirect"},{"title":"Maintenance Page","href":"/core-concepts/apps/connecting-to-apps/app-endpoints/https-endpoints/maintenance-page"},{"title":"Endpoint Logs","href":"/core-concepts/apps/connecting-to-apps/app-endpoints/https-endpoints/endpoint-logs"},{"title":"Shared Endpoints","sidebarTitle":"Shared Endpoints","href":"/core-concepts/apps/connecting-to-apps/app-endpoints/https-endpoints/shared-endpoints"},{"title":"Header Authentication","href":"/core-concepts/apps/connecting-to-apps/app-endpoints/https-endpoints/header-authentication"}]},{"title":"gRPC Endpoints","href":"/core-concepts/apps/connecting-to-apps/app-endpoints/grpc-endpoints"},{"title":"TLS Endpoints","href":"/core-concepts/apps/connecting-to-apps/app-endpoints/tls-endpoints"},{"title":"TCP Endpoints","href":"/core-concepts/apps/connecting-to-apps/app-endpoints/tcp-endpoints"},{"title":"Default Domain","href":"/core-concepts/apps/connecting-to-apps/app-endpoints/default-domain"},{"title":"Custom Domain","href":"/core-concepts/apps/connecting-to-apps/app-endpoints/custom-domain"},{"title":"Custom Certificate","href":"/core-concepts/apps/connecting-to-apps/app-endpoints/custom-certificate"},{"title":"Managed TLS","href":"/core-concepts/apps/connecting-to-apps/app-endpoints/managed-tls"},{"title":"IP Filtering","href":"/core-concepts/apps/connecting-to-apps/app-endpoints/ip-filtering"}]},{"title":"Ephemeral SSH Sessions","href":"/core-concepts/apps/connecting-to-apps/ssh-sessions"},{"title":"Outbound IP Addresses","href":"/core-concepts/apps/connecting-to-apps/outbound-ips"}]},{"title":"Managing Apps","href":"/core-concepts/apps/managing-apps"},{"title":"Persistent Disks for Apps","sidebarTitle":"Persistent Disks","href":"/core-concepts/apps/persistent-disks"}]},{"group":"Managed Databases","pages":[{"title":"Managed Databases","sidebarTitle":"Overview","href":"/core-concepts/managed-databases/overview"},{"title":"Provisioning Databases","href":"/core-concepts/managed-databases/provisioning-databases"},{"group":"Connecting Databases","pages":[{"title":"Connecting to Databases","sidebarTitle":"Overview","href":"/core-concepts/managed-databases/connecting-databases/overview"},{"title":"Database Credentials","href":"/core-concepts/managed-databases/connecting-databases/database-credentials"},{"title":"Database Tunnels","href":"/core-concepts/managed-databases/connecting-databases/database-tunnels"},{"title":"Database Endpoints","href":"/core-concepts/managed-databases/connecting-databases/database-endpoints"}]},{"group":"Managing Databases","pages":[{"title":"Managing Databases","sidebarTitle":"Overview","href":"/core-concepts/managed-databases/managing-databases/overview"},{"title":"Database Scaling","href":"/core-concepts/scaling/database-scaling"},{"title":"Database Performance Tuning","href":"/core-concepts/managed-databases/managing-databases/database-tuning"},{"group":"Database Encryption","pages":[{"title":"Database Encryption","href":"/core-concepts/managed-databases/managing-databases/database-encryption/overview"},{"title":"Database Encryption at Rest","href":"/core-concepts/managed-databases/managing-databases/database-encryption/database-encryption"},{"title":"Application-Level Encryption","href":"/core-concepts/managed-databases/managing-databases/database-encryption/application-level-encryption"},{"title":"Database Encryption in Transit","href":"/core-concepts/managed-databases/managing-databases/database-encryption/database-encryption-in-transit"}]},{"title":"Database Backups","href":"/core-concepts/managed-databases/managing-databases/database-backups"},{"title":"Point-in-Time Recovery (PITR)","href":"/core-concepts/managed-databases/managing-databases/point-in-time-recovery"},{"title":"Database Replication and Clustering","href":"/core-concepts/managed-databases/managing-databases/replication-clustering"},{"title":"Database Upgrades","href":"/core-concepts/managed-databases/managing-databases/database-upgrade-methods"}]},{"group":"Supported Databases","pages":[{"title":"PostgreSQL","href":"/core-concepts/managed-databases/supported-databases/postgresql"},{"title":"Redis","href":"/core-concepts/managed-databases/supported-databases/redis"},{"title":"MySQL","href":"/core-concepts/managed-databases/supported-databases/mysql"},{"title":"RabbitMQ","href":"/core-concepts/managed-databases/supported-databases/rabbitmq"},{"title":"MongoDB","href":"/core-concepts/managed-databases/supported-databases/mongodb"},{"title":"Elasticsearch","href":"/core-concepts/managed-databases/supported-databases/elasticsearch"},{"title":"InfluxDB","href":"/core-concepts/managed-databases/supported-databases/influxdb"},{"title":"SFTP","href":"/core-concepts/managed-databases/supported-databases/sftp"},{"title":"CouchDB","href":"/core-concepts/managed-databases/supported-databases/couchdb"}]}]},{"group":"Architecture","pages":[{"title":"Architecture","sidebarTitle":"Overview","href":"/core-concepts/architecture/overview"},{"title":"Stacks","href":"/core-concepts/architecture/stacks"},{"title":"Environments","href":"/core-concepts/architecture/environments"},{"group":"Containers","pages":[{"title":"Containers","sidebarTitle":"Overview","href":"/core-concepts/architecture/containers/overview"},{"title":"Container Recovery","href":"/core-concepts/architecture/containers/container-recovery"}]},{"title":"Operations","href":"/core-concepts/architecture/operations"}]},{"group":"Scaling","pages":[{"title":"Scaling","sidebarTitle":"Overview","href":"/core-concepts/scaling/overview"},{"title":"App Scaling","href":"/core-concepts/scaling/app-scaling"},{"title":"Database Scaling","href":"/core-concepts/scaling/database-scaling"},{"title":"Container Profiles","href":"/core-concepts/scaling/container-profiles"},{"title":"CPU Allocation","href":"/core-concepts/scaling/cpu-isolation"},{"title":"Memory Management","href":"/core-concepts/scaling/memory-limits"},{"title":"Container Efficiency Recommendations","href":"/core-concepts/scaling/container-efficiency-recommendations"}]},{"group":"Observability","pages":[{"title":"Observability","sidebarTitle":"Overview","href":"/core-concepts/observability/overview"},{"group":"Activity","pages":[{"title":"Activity","sidebarTitle":"Overview","href":"/core-concepts/observability/activity/overview"},{"title":"Activity Details","href":"/core-concepts/observability/activity/activity-details"},{"title":"Navigating Activity in the UI","href":"/core-concepts/observability/activity/navigating-activity"},{"title":"Activity Reports","href":"/core-concepts/observability/activity/activity-reports"},{"group":"Integrations","pages":[{"title":"SIEM/Logging Integration","sidebarTitle":"Overview","href":"/core-concepts/observability/activity/integrations"},{"title":"Hosted Elasticsearch","href":"/core-concepts/observability/activity/integrations/elastic-cloud"},{"title":"Logging Provider","href":"/core-concepts/observability/activity/integrations/logging-provider"}]}]},{"group":"Logs","pages":[{"title":"Logs","sidebarTitle":"Overview","href":"/core-concepts/observability/logs/overview"},{"group":"Log Drains","pages":[{"title":"Log Drains","sidebarTitle":"Overview","href":"/core-concepts/observability/logs/log-drains/overview"},{"title":"Datadog Integration","href":"/core-concepts/integrations/datadog"},{"title":"Elasticsearch Log Drains","href":"/core-concepts/observability/logs/log-drains/elasticsearch-log-drains"},{"title":"HTTPS Log Drains","href":"/core-concepts/observability/logs/log-drains/https-log-drains"},{"title":"Syslog Log Drains","href":"/core-concepts/observability/logs/log-drains/syslog-log-drains"}]},{"title":"Log Archiving to S3","href":"/core-concepts/observability/logs/s3-log-archives"}]},{"group":"Metrics","pages":[{"title":"Metrics","sidebarTitle":"Overview","href":"/core-concepts/observability/metrics/overview"},{"group":"Metrics Drains","pages":[{"title":"Metrics Drains","sidebarTitle":"Overview","href":"/core-concepts/observability/metrics/metrics-drains/overview"},{"title":"Datadog Integration","href":"/core-concepts/integrations/datadog"},{"title":"InfluxDB Metric Drain","href":"/core-concepts/observability/metrics/metrics-drains/influxdb-metric-drain"}]}]}]},{"group":"Security \u0026 Compliance","pages":[{"title":"Security \u0026 Compliance - Overview","sidebarTitle":"Overview","href":"/core-concepts/security-compliance/overview"},{"group":"Compliance Frameworks","pages":[{"title":"HIPAA","href":"/core-concepts/security-compliance/compliance-frameworks/hipaa"},{"title":"HITRUST","href":"/core-concepts/security-compliance/compliance-frameworks/hitrust"},{"title":"PCI DSS","href":"/core-concepts/security-compliance/compliance-frameworks/pci"},{"title":"SOC 2","href":"/core-concepts/security-compliance/compliance-frameworks/soc2"},{"title":"PIPEDA","href":"/core-concepts/security-compliance/compliance-frameworks/pipeda"}]},{"group":"Authentication","pages":[{"title":"Password Authentication","href":"/core-concepts/security-compliance/authentication/password-authentication"},{"title":"SSH Keys","href":"/core-concepts/security-compliance/authentication/ssh-keys"},{"title":"Single Sign-On (SSO)","href":"/core-concepts/security-compliance/authentication/sso"},{"title":"Provisioning (SCIM)","href":"/core-concepts/security-compliance/authentication/scim"}]},{"title":"Roles \u0026 Permissions","href":"/core-concepts/security-compliance/access-permissions"},{"group":"Security Compliance Dashboard","pages":[{"title":"Security \u0026 Compliance Dashboard","sidebarTitle":"Overview","href":"/core-concepts/security-compliance/security-compliance-dashboard/overview"},{"title":"Resources in Scope","href":"/core-concepts/security-compliance/security-compliance-dashboard/resources-in-scope"},{"title":"Compliance Readiness Scores","href":"/core-concepts/security-compliance/security-compliance-dashboard/compliance-readiness-scores"},{"title":"Control Performance","href":"/core-concepts/security-compliance/security-compliance-dashboard/control-performance"},{"title":"Shareable Compliance Posture Report","href":"/core-concepts/security-compliance/security-compliance-dashboard/shareable-compliance-report"}]},{"title":"DDoS Protection","href":"/core-concepts/security-compliance/ddos-pid-limits"},{"title":"Managed Host Intrusion Detection (HIDS)","href":"/core-concepts/security-compliance/hids"},{"title":"Red Team Scans","tag":"BETA","href":"/core-concepts/security-compliance/red-team-scans"}]},{"group":"Reliability \u0026 Maintenance","pages":[{"title":"Reliability","sidebarTitle":"Overview","href":"/core-concepts/reliability/overview"},{"title":"Reliability Division of Responsibilities","href":"/core-concepts/reliability/division-of-responsibility"},{"title":"Maintenance","href":"/core-concepts/reliability/maintenance"},{"title":"Security and Ops Alert Notifications","href":"/core-concepts/reliability/ops-alert-notifications"}]},{"group":"Integrations","pages":[{"title":"All Integrations and Tools","href":"/core-concepts/integrations/overview"},{"title":"Datadog Integration","href":"/core-concepts/integrations/datadog"},{"title":"Mezmo Integration","href":"/core-concepts/integrations/mezmo"},{"title":"Network Integrations: VPC Peering \u0026 VPN Tunnels","href":"/core-concepts/integrations/network-integrations"},{"title":"Sumo Logic Integration","href":"/core-concepts/integrations/sumo-logic"},{"title":"Twingate Integration","href":"/core-concepts/integrations/twingate"},{"title":"SolarWinds Integration","href":"/core-concepts/integrations/solarwinds"}]}]},{"group":"Managed AI","pages":[{"group":"LLM Gateway","pages":[{"title":"LLM Gateway","sidebarTitle":"Overview","href":"/llm-gateway"},{"title":"Upgrading from v1.0","sidebarTitle":"Upgrading from v1.0","href":"/llm-gateway/upgrading-from-v1"},{"title":"LLM Keys","href":"/llm-gateway/llm-keys"},{"title":"Supported APIs","sidebarTitle":"Supported APIs","href":"/llm-gateway/supported-apis"},{"group":"Model Access \u0026 Control","pages":[{"title":"Supported Models for LLM Gateway","sidebarTitle":"Supported Models","href":"/llm-gateway/supported-models"},{"title":"Model Access Policies for LLM Gateway","sidebarTitle":"Model Access Policies","href":"/llm-gateway/model-access-policies"}]},{"title":"Cost Visibility \u0026 Control for LLM Gateway","sidebarTitle":"Cost Visibility \u0026 Control","href":"/llm-gateway/cost-control"},{"title":"Audit Logging","href":"/llm-gateway/audit-logging"},{"title":"Security \u0026 Compliance for LLM Gateway","sidebarTitle":"Security \u0026 Compliance","href":"/llm-gateway/security-and-compliance-guardails"}]},{"group":"MCP Gateway","tag":"BETA","pages":[{"title":"MCP Gateway","sidebarTitle":"Overview","href":"/mcp-gateway"},{"title":"Connecting to MCP Gateway","sidebarTitle":"Connecting to MCP Gateway","href":"/mcp-gateway/connect"},{"title":"Servers \u0026 Tools","sidebarTitle":"Servers \u0026 Tools","href":"/mcp-gateway/servers"},{"group":"Access Control","pages":[{"title":"Access Control","sidebarTitle":"Overview","href":"/mcp-gateway/access-control"},{"title":"Grants","sidebarTitle":"Grants","href":"/mcp-gateway/grants"},{"title":"Membership","sidebarTitle":"Membership","href":"/mcp-gateway/membership"}]},{"title":"Audit Logging","sidebarTitle":"Audit Logging","href":"/mcp-gateway/audit-logs"}]}]},{"group":"Reference","pages":[{"group":"Aptible CLI","pages":[{"title":"Aptible CLI - Overview","sidebarTitle":"Overview","href":"/reference/aptible-cli/overview"},{"title":"CLI Changelog","sidebarTitle":"Changelog","href":"/reference/aptible-cli/cli-changelog"},{"group":"All CLI Commands","pages":[{"title":"aptible apps","href":"/reference/aptible-cli/cli-commands/cli-apps"},{"title":"aptible apps:create","href":"/reference/aptible-cli/cli-commands/cli-apps-create"},{"title":"aptible apps:deprovision","href":"/reference/aptible-cli/cli-commands/cli-apps-deprovision"},{"title":"aptible apps:rename","href":"/reference/aptible-cli/cli-commands/cli-apps-rename"},{"title":"aptible apps:scale","href":"/reference/aptible-cli/cli-commands/cli-apps-scale"},{"title":"aptible apps:settings","href":"/reference/aptible-cli/cli-commands/cli-apps-settings"},{"title":"aptible apps:settings:set","href":"/reference/aptible-cli/cli-commands/cli-apps-settings-set"},{"title":"aptible backup:list","href":"/reference/aptible-cli/cli-commands/cli-backup-list"},{"title":"aptible backup:orphaned","href":"/reference/aptible-cli/cli-commands/cli-backup-orphaned"},{"title":"aptible backup:purge","href":"/reference/aptible-cli/cli-commands/cli-backup-purge"},{"title":"aptible backup:restore","href":"/reference/aptible-cli/cli-commands/cli-backup-restore"},{"title":"aptible backup_retention_policy","href":"/reference/aptible-cli/cli-commands/cli-backup-retention-policy"},{"title":"aptible backup_retention_policy:set","href":"/reference/aptible-cli/cli-commands/cli-backup-retention-policy-set"},{"title":"aptible config","href":"/reference/aptible-cli/cli-commands/cli-config"},{"title":"aptible config:add","href":"/reference/aptible-cli/cli-commands/cli-config-add"},{"title":"aptible config:get","href":"/reference/aptible-cli/cli-commands/cli-config-get"},{"title":"aptible config:rm","href":"/reference/aptible-cli/cli-commands/cli-config-rm"},{"title":"aptible config:set","href":"/reference/aptible-cli/cli-commands/cli-config-set"},{"title":"aptible config:unset","href":"/reference/aptible-cli/cli-commands/cli-config-unset"},{"title":"aptible db:backup","href":"/reference/aptible-cli/cli-commands/cli-db-backup"},{"title":"aptible db:clone","href":"/reference/aptible-cli/cli-commands/cli-db-clone"},{"title":"aptible db:create","href":"/reference/aptible-cli/cli-commands/cli-db-create"},{"title":"aptible db:deprovision","href":"/reference/aptible-cli/cli-commands/cli-db-deprovision"},{"title":"aptible db:dump","href":"/reference/aptible-cli/cli-commands/cli-db-dump"},{"title":"aptible db:execute","href":"/reference/aptible-cli/cli-commands/cli-db-execute"},{"title":"aptible db:list","href":"/reference/aptible-cli/cli-commands/cli-db-list"},{"title":"aptible db:modify","href":"/reference/aptible-cli/cli-commands/cli-db-modify"},{"title":"aptible db:reload","href":"/reference/aptible-cli/cli-commands/cli-db-reload"},{"title":"aptible db:replicate","href":"/reference/aptible-cli/cli-commands/cli-db-replicate"},{"title":"aptible db:rename","href":"/reference/aptible-cli/cli-commands/cli-db-rename"},{"title":"aptible db:restart","href":"/reference/aptible-cli/cli-commands/cli-db-restart"},{"title":"aptible db:settings","href":"/reference/aptible-cli/cli-commands/cli-db-settings"},{"title":"aptible db:settings:set","href":"/reference/aptible-cli/cli-commands/cli-db-settings-set"},{"title":"aptible db:tunnel","href":"/reference/aptible-cli/cli-commands/cli-db-tunnel"},{"title":"aptible db:url","href":"/reference/aptible-cli/cli-commands/cli-db-url"},{"title":"aptible db:versions","href":"/reference/aptible-cli/cli-commands/cli-db-versions"},{"title":"aptible deploy","href":"/reference/aptible-cli/cli-commands/cli-deploy"},{"title":"aptible endpoints:database:create","href":"/reference/aptible-cli/cli-commands/cli-endpoints-database-create"},{"title":"aptible endpoints:database:modify","href":"/reference/aptible-cli/cli-commands/cli-endpoints-database-modify"},{"title":"aptible endpoints:deprovision","href":"/reference/aptible-cli/cli-commands/cli-endpoints-deprovision"},{"title":"aptible endpoints:https:create","href":"/reference/aptible-cli/cli-commands/cli-endpoints-https-create"},{"title":"aptible endpoints:https:modify","href":"/reference/aptible-cli/cli-commands/cli-endpoints-https-modify"},{"title":"aptible endpoints:list","href":"/reference/aptible-cli/cli-commands/cli-endpoints-list"},{"title":"aptible endpoints:renew","href":"/reference/aptible-cli/cli-commands/cli-endpoints-renew"},{"title":"aptible endpoints:tcp:create","href":"/reference/aptible-cli/cli-commands/cli-endpoints-tcp-create"},{"title":"aptible endpoints:tcp:modify","href":"/reference/aptible-cli/cli-commands/cli-endpoints-tcp-modify"},{"title":"aptible endpoints:tls:create","href":"/reference/aptible-cli/cli-commands/cli-endpoints-tls-create"},{"title":"aptible endpoints:tls:modify","href":"/reference/aptible-cli/cli-commands/cli-endpoints-tls-modify"},{"title":"aptible endpoints:grpc:create","href":"/reference/aptible-cli/cli-commands/cli-endpoints-grpc-create"},{"title":"aptible endpoints:grpc:modify","href":"/reference/aptible-cli/cli-commands/cli-endpoints-grpc-modify"},{"title":"aptible environment:ca_cert","href":"/reference/aptible-cli/cli-commands/cli-environment-ca-cert"},{"title":"aptible environment:list","href":"/reference/aptible-cli/cli-commands/cli-environment-list"},{"title":"aptible environment:rename","href":"/reference/aptible-cli/cli-commands/cli-environment-rename"},{"title":"aptible help","href":"/reference/aptible-cli/cli-commands/cli-help"},{"title":"aptible log_drain:create:datadog","href":"/reference/aptible-cli/cli-commands/cli-log-drain-create-datadog"},{"title":"aptible log_drain:create:elasticsearch","href":"/reference/aptible-cli/cli-commands/cli-log-drain-create-elasticsearch"},{"title":"aptible log_drain:create:https","href":"/reference/aptible-cli/cli-commands/cli-log-drain-create-https"},{"title":"aptible log_drain:create:logdna","href":"/reference/aptible-cli/cli-commands/cli-log-drain-create-logdna"},{"title":"aptible log_drain:create:papertrail","href":"/reference/aptible-cli/cli-commands/cli-log-drain-create-papertrail"},{"title":"aptible log_drain:create:sumologic","href":"/reference/aptible-cli/cli-commands/cli-log-drain-create-sumologic"},{"title":"aptible log_drain:create:syslog","href":"/reference/aptible-cli/cli-commands/cli-log-drain-create-syslog"},{"title":"aptible log_drain:create:solarwinds","href":"/reference/aptible-cli/cli-commands/cli-log-drain-create-solarwinds"},{"title":"aptible log_drain:deprovision","href":"/reference/aptible-cli/cli-commands/cli-log-drain-deprovision"},{"title":"aptible log_drain:list","href":"/reference/aptible-cli/cli-commands/cli-log-drain-list"},{"title":"aptible login","href":"/reference/aptible-cli/cli-commands/cli-login"},{"title":"aptible logout","href":"/reference/aptible-cli/cli-commands/cli-logout"},{"title":"aptible logs","href":"/reference/aptible-cli/cli-commands/cli-logs"},{"title":"aptible logs_from_archive","href":"/reference/aptible-cli/cli-commands/cli-logs-from-archive"},{"title":"aptible maintenance:apps","href":"/reference/aptible-cli/cli-commands/cli-maintenance-apps"},{"title":"aptible maintenance:dbs","href":"/reference/aptible-cli/cli-commands/cli-maintenance-dbs"},{"title":"aptible metric_drain:create:datadog","href":"/reference/aptible-cli/cli-commands/cli-metric-drain-create-datadog"},{"title":"aptible metric_drain:create:influxdb","href":"/reference/aptible-cli/cli-commands/cli-metric-drain-create-influxdb"},{"title":"aptible metric_drain:create:influxdb:custom","href":"/reference/aptible-cli/cli-commands/cli-metric-drain-create-influxdb-custom"},{"title":"aptible metric_drain:create:influxdb:customv2","href":"/reference/aptible-cli/cli-commands/cli-metric-drain-create-influxdb-customv2"},{"title":"aptible metric_drain:deprovision","href":"/reference/aptible-cli/cli-commands/cli-metric-drain-deprovision"},{"title":"aptible metric_drain:list","href":"/reference/aptible-cli/cli-commands/cli-metric-drain-list"},{"title":"aptible operation:cancel","href":"/reference/aptible-cli/cli-commands/cli-operation-cancel"},{"title":"aptible operation:follow","href":"/reference/aptible-cli/cli-commands/cli-operation-follow"},{"title":"aptible operation:logs","href":"/reference/aptible-cli/cli-commands/cli-operation-logs"},{"title":"aptible organizations","href":"/reference/aptible-cli/cli-commands/cli-organizations"},{"title":"aptible rebuild","href":"/reference/aptible-cli/cli-commands/cli-rebuild"},{"title":"aptible restart","href":"/reference/aptible-cli/cli-commands/cli-restart"},{"title":"aptible services","href":"/reference/aptible-cli/cli-commands/cli-services"},{"title":"aptible services:settings","href":"/reference/aptible-cli/cli-commands/cli-services-settings"},{"title":"aptible services:autoscaling_policy","href":"/reference/aptible-cli/cli-commands/cli-services-autoscalingpolicy"},{"title":"aptible services:autoscaling_policy:set","href":"/reference/aptible-cli/cli-commands/cli-services-autoscalingpolicy-set"},{"title":"aptible ssh","href":"/reference/aptible-cli/cli-commands/cli-ssh"},{"title":"aptible version","href":"/reference/aptible-cli/cli-commands/cli-version"},{"title":"aptible whoami","href":"/reference/aptible-cli/cli-commands/cli-whoami"}]},{"title":"CLI Configurations","href":"/reference/aptible-cli/cli-configurations"}]},{"title":"Dashboard","hidden":true,"href":"/reference/dashboard"},{"title":"Terraform","href":"/reference/terraform"},{"title":"Aptible Metadata Variables","sidebarTitle":"Metadata Variables","href":"/reference/aptible-metadata-variables"},{"title":"Glossary","hidden":true,"href":"/reference/glossary"},{"title":"Pricing","href":"/reference/pricing"},{"title":"Billing \u0026 Payments","href":"/core-concepts/billing-payments"}]}]},{"tab":"Guides","groups":[{"group":"How to Guides","pages":[{"title":"Browse Guides","href":"/how-to-guides/guides-overview"},{"group":"App Guides","pages":[{"title":"All App Guides","href":"/how-to-guides/app-guides/overview"},{"title":"How to create an app","href":"/how-to-guides/app-guides/how-to-create-app"},{"title":"How to scale apps and services","href":"/how-to-guides/app-guides/how-to-scale-apps-services"},{"title":"How to set and modify configuration variables","href":"/how-to-guides/app-guides/set-modify-config-variables"},{"title":"How to deploy a preview app to Aptible using Github Actions","href":"/how-to-guides/app-guides/deploy-preview-app"},{"title":"How to deploy to Aptible with CI/CD","href":"/how-to-guides/app-guides/how-to-deploy-aptible-ci-cd"},{"title":"How to use AWS Secrets Manager with Aptible Apps","href":"/how-to-guides/app-guides/how-to-use-aws-secrets-manager"},{"title":"How to define services","href":"/how-to-guides/app-guides/define-services"},{"title":"How to deploy via Docker Image","href":"/how-to-guides/app-guides/deploy-docker-image"},{"title":"How to deploy from Git","href":"/how-to-guides/app-guides/deploy-from-git"},{"title":"How to migrate from deploying via Docker Image to deploying via Git","href":"/how-to-guides/app-guides/deploying-docker-image-to-git"},{"title":"Horizontal Autoscaling Guide","href":"/how-to-guides/app-guides/horizontal-autoscaling-guide"},{"group":"Integrate Aptible with CI","pages":[{"title":"How to integrate Aptible with CI Platforms","sidebarTitle":"Overview","href":"/how-to-guides/app-guides/integrate-aptible-with-ci/overview"},{"title":"Circle CI","href":"/how-to-guides/app-guides/integrate-aptible-with-ci/circle-cl"},{"title":"Codeship","href":"/how-to-guides/app-guides/integrate-aptible-with-ci/codeship"},{"title":"Jenkins","href":"/how-to-guides/app-guides/integrate-aptible-with-ci/jenkins"},{"title":"Travis CI","href":"/how-to-guides/app-guides/integrate-aptible-with-ci/travis-cl"}]},{"title":"How to synchronize configuration and code changes","href":"/how-to-guides/app-guides/synchronize-config-code-changes"},{"title":"How to migrate from deploying via Git to deploying via Docker image","href":"/how-to-guides/app-guides/migrate-dockerfile-to-direct-image-deploy"},{"title":"Deploy Metric Drain with Terraform","href":"/how-to-guides/app-guides/deploy-metric-drain-with-terraform"},{"title":"Getting Started with Docker","href":"/how-to-guides/app-guides/getting-started-with-docker"},{"title":"How to access configuration variables during Docker build","href":"/how-to-guides/app-guides/access-config-vars-during-docker-build"},{"title":"How to generate certificate signing requests","href":"/how-to-guides/app-guides/generate-certificate-signing-requests"},{"title":"How to expose a web app to the Internet","href":"/how-to-guides/app-guides/expose-web-app-to-internet"},{"title":"Set Up Cloudflare with Aptible Endpoints","href":"/how-to-guides/app-guides/set-up-cloudflare-with-aptible-endpoints"},{"title":"Configuring Nginx proxies on Aptible","href":"/how-to-guides/app-guides/use-nginx-with-aptible-endpoints"},{"title":"How to make Git deploys faster","href":"/how-to-guides/app-guides/make-docker-deploys-faster"},{"group":"Use Domain Apex With Endpoints","pages":[{"title":"How to use Domain Apex with Endpoints","sidebarTitle":"Overview","href":"/how-to-guides/app-guides/use-domain-apex-with-endpoints/overview"},{"title":"Domain Apex ALIAS","href":"/how-to-guides/app-guides/use-domain-apex-with-endpoints/domain-apex-alias"},{"title":"AWS Domain Apex Redirect","href":"/how-to-guides/app-guides/use-domain-apex-with-endpoints/aws-domain-apex-redirect"},{"title":"Domain Apex Redirect","href":"/how-to-guides/app-guides/use-domain-apex-with-endpoints/domain-apex-redirect"}]},{"title":"How to use S3 to accept file uploads","href":"/how-to-guides/app-guides/use-s3-to-accept-file-uploads"},{"title":"How to use cron to run scheduled tasks","href":"/how-to-guides/app-guides/use-cron-to-run-scheduled-tasks"},{"title":"How to serve static assets","href":"/how-to-guides/app-guides/serve-static-assets"},{"title":"How to establish client certificate authentication","href":"/how-to-guides/app-guides/establish-client-certificiate-auth"}]},{"group":"Database Guides","pages":[{"title":"All Database Guides","sidebarTitle":"Overview","href":"/how-to-guides/database-guides/overview"},{"title":"How to configure Aptible PostgreSQL Databases","href":"/how-to-guides/database-guides/configure-aptible-postgresql-databases"},{"title":"Deploying PgBouncer on Aptible","href":"/how-to-guides/database-guides/pgbouncer-connection-pooling"},{"title":"How to connect Fivetran with your Aptible databases","href":"/how-to-guides/database-guides/connect-fivetran-with-aptible-db"},{"title":"Replicate PostgreSQL to BigQuery with Datastream","href":"/how-to-guides/database-guides/replicate-postgresql-to-bigquery-datastream"},{"title":"How to scale databases","href":"/how-to-guides/database-guides/how-to-scale-databases"},{"title":"Automate Database migrations","href":"/how-to-guides/database-guides/automate-database-migrations"},{"title":"Upgrade PostgreSQL with logical replication","href":"/how-to-guides/database-guides/upgrade-postgresql"},{"title":"Dump and restore PostgreSQL","href":"/how-to-guides/database-guides/dump-restore-postgresql"},{"title":"Test a PostgreSQL Database's schema on a new version","href":"/how-to-guides/database-guides/test-schema-new-version"},{"title":"Dump and restore MySQL","href":"/how-to-guides/database-guides/dump-restore-mysql"},{"title":"Use mysqldump to test for upgrade incompatibilities","href":"/how-to-guides/database-guides/test-upgrade-incompatibiltiies"},{"title":"Upgrade MongoDB","href":"/how-to-guides/database-guides/upgrade-mongodb"},{"title":"Upgrade Redis","href":"/how-to-guides/database-guides/upgrade-redis"}]},{"group":"Observability Guides","pages":[{"title":"All Observability Guides","sidebarTitle":"Overview","href":"/how-to-guides/observability-guides/overview"},{"title":"How to access operation logs","href":"/how-to-guides/observability-guides/access-operation-logs"},{"title":"How to export Activity Reports","href":"/how-to-guides/observability-guides/export-activity-reports"},{"title":"How to set up Datadog APM","href":"/how-to-guides/observability-guides/setup-datadog-apm"},{"title":"How to collect database-specific metrics using the New Relic agent","href":"/how-to-guides/observability-guides/setup-newrelic-agent-database"},{"title":"How to set up application performance monitoring","href":"/how-to-guides/observability-guides/setup-application-performance-monitoring"},{"title":"Collect Prometheus Metrics from Apps","href":"/how-to-guides/observability-guides/collect-prometheus-metrics-from-apps"},{"title":"How to deploy and use Grafana","href":"/how-to-guides/observability-guides/deploy-use-grafana"},{"title":"How to set up a self-hosted Elasticsearch Log Drain with Logstash and Kibana (ELK)","href":"/how-to-guides/observability-guides/elk"},{"title":"How to set up Elasticsearch Log Rotation","href":"/how-to-guides/observability-guides/elasticsearch-log-rotation"},{"title":"How to set up a Papertrail Log Drain","href":"/how-to-guides/observability-guides/papertrail-log-drain"},{"title":"How to set up a self-hosted HTTPS Log Drain","href":"/how-to-guides/observability-guides/https-log-drain"},{"title":"How to set up Kibana on Aptible","href":"/how-to-guides/observability-guides/setup-kibana"}]},{"group":"Platform Guides","pages":[{"title":"Platform Guides","sidebarTitle":"Overview","href":"/how-to-guides/platform-guides/overview"},{"title":"Heroku to Aptible Migration Guide","href":"/how-to-guides/platform-guides/heroku-migration"},{"title":"Heroku Shield to Aptible Migration Guide","href":"/how-to-guides/platform-guides/heroku-shield-migration"},{"title":"MedStack to Aptible Migration Guide","sidebarTitle":"MedStack Migration Guide","href":"/how-to-guides/platform-guides/medstack-migration"},{"title":"How to achieve HIPAA compliance on Aptible","href":"/how-to-guides/platform-guides/hipaa-compliance"},{"title":"Interface Feature Availability Matrix Guide","href":"/reference/interface-feature"},{"title":"How to create and deprovison dedicated stacks","href":"/how-to-guides/platform-guides/create-deprovision-dedicated-stacks"},{"title":"How to create environments","href":"/how-to-guides/platform-guides/create-environment"},{"title":"How to delete environments","href":"/how-to-guides/platform-guides/delete-environment"},{"title":"How to deprovision resources","href":"/how-to-guides/platform-guides/deprovision-resources"},{"title":"How to migrate environments","href":"/how-to-guides/platform-guides/migrate-environments"},{"title":"How to navigate security questionnaires and audits","href":"/how-to-guides/platform-guides/navigate-security-questionnaire-audits"},{"title":"How to Recover Deleted Resources","href":"/how-to-guides/platform-guides/restore-resources"},{"title":"How to upgrade or downgrade my plan","href":"/how-to-guides/platform-guides/upgrade-downgrade-plan"},{"title":"How to set up Single Sign On (SSO)","href":"/how-to-guides/platform-guides/setup-sso"},{"title":"How to Set Up Single Sign-On (SSO) for Auth0","href":"/how-to-guides/platform-guides/setup-sso-auth0"},{"title":"Provisioning with Okta (SCIM)","href":"/how-to-guides/platform-guides/scim-okta-guide"},{"title":"Provisioning with Entra Identity (SCIM)","href":"/how-to-guides/platform-guides/scim-entra-guide"},{"title":"Best Practices Guide","href":"/how-to-guides/platform-guides/best-practices-guide"},{"title":"Advanced Best Practices Guide","href":"/how-to-guides/platform-guides/advanced-best-practices-guide"},{"title":"Image and Vulnerability Scanning","sidebarTitle":"Image Vulnerability Scanning","href":"/how-to-guides/platform-guides/image-vulnerability-scanning"},{"title":"How to request HITRUST Inhertiance","href":"/how-to-guides/platform-guides/navigate-hitrust"},{"title":"Business Continuity Guide","href":"/how-to-guides/platform-guides/minimize-downtown-outages"},{"title":"How to cancel my Aptible Account","href":"/how-to-guides/platform-guides/cancel-aptible-account"},{"title":"How to reset my Aptible 2FA","href":"/how-to-guides/platform-guides/reset-aptible-2fa"},{"title":"How to Re-invite Deleted Users","href":"/how-to-guides/platform-guides/re-inviting-deleted-users"}]}]},{"group":"Support \u0026 Troubleshooting","pages":[{"title":"Aptible Support","href":"/how-to-guides/troubleshooting/aptible-support"},{"group":"Common Errors \u0026 Issues","pages":[{"sidebarTitle":"Overview","title":"Common Errors and Issues","href":"/how-to-guides/troubleshooting/common-errors-issues/overview"},{"title":"Enabling HTTP Response Streaming","href":"/how-to-guides/troubleshooting/common-errors-issues/enabling-http-response"},{"title":"App Processing Requests Slowly","href":"/how-to-guides/troubleshooting/common-errors-issues/app-processing-requests-slowly"},{"title":"Application is Currently Unavailable","href":"/how-to-guides/troubleshooting/common-errors-issues/application-unavailable"},{"title":"before_release Commands Failed","href":"/how-to-guides/troubleshooting/common-errors-issues/before-released-commands-fail"},{"title":"Build Failed Error","href":"/how-to-guides/troubleshooting/common-errors-issues/build-failed-error"},{"title":"Container Failed to Start Error","href":"/how-to-guides/troubleshooting/common-errors-issues/container-failed-start-error"},{"title":"Deploys Take Too long","href":"/how-to-guides/troubleshooting/common-errors-issues/deploys-take-long"},{"title":"git Reference Error","href":"/how-to-guides/troubleshooting/common-errors-issues/git-reference-error"},{"title":"git Push \"Everything up-to-date.\"","href":"/how-to-guides/troubleshooting/common-errors-issues/git-push-everything-utd"},{"title":"HTTP Health Checks Failed","href":"/how-to-guides/troubleshooting/common-errors-issues/http-health-check-failed"},{"title":"App Logs Not Being Received","href":"/how-to-guides/troubleshooting/common-errors-issues/apps-logs-not-received"},{"title":"PostgreSQL Replica max_connections","href":"/how-to-guides/troubleshooting/common-errors-issues/postgresql-replica"},{"title":"Connecting to MongoDB fails","href":"/how-to-guides/troubleshooting/common-errors-issues/connecting-mongodb-fails"},{"title":"MySQL Access Denied","href":"/how-to-guides/troubleshooting/common-errors-issues/mysql-access-denied"},{"title":"No CMD or Procfile in Image","href":"/how-to-guides/troubleshooting/common-errors-issues/no-cmd-procfile-image"},{"title":"git Push Permission Denied","href":"/how-to-guides/troubleshooting/common-errors-issues/git-push-permission-denied"},{"title":"aptible ssh Permission Denied","href":"/how-to-guides/troubleshooting/common-errors-issues/aptible-ssh-permission-denied"},{"title":"PostgreSQL Incomplete Startup Packet","href":"/how-to-guides/troubleshooting/common-errors-issues/postgresql-incomplete"},{"title":"PostgreSQL SSL Off","href":"/how-to-guides/troubleshooting/common-errors-issues/postgresql-ssl-off"},{"title":"Private Key Must Match Certificate","href":"/how-to-guides/troubleshooting/common-errors-issues/private-key-match-certificate"},{"title":"aptible ssh Operation Timed Out","href":"/how-to-guides/troubleshooting/common-errors-issues/aptible-ssh-operation-timed-out"},{"title":"SSL error ERR_CERT_AUTHORITY_INVALID","href":"/how-to-guides/troubleshooting/common-errors-issues/ssl-error-auth-invalid"},{"title":"SSL error ERR_CERT_COMMON_NAME_INVALID","href":"/how-to-guides/troubleshooting/common-errors-issues/ssl-error-common-name-invalid"},{"title":"Unexpected Requests in App Logs","href":"/how-to-guides/troubleshooting/common-errors-issues/unexpected-requests-app-logs"},{"title":"Managing a Flood of Requests in Your App","href":"/how-to-guides/troubleshooting/common-errors-issues/unexpected-request-volume"},{"title":"Operation Restricted to Availability Zone(s)","href":"/how-to-guides/troubleshooting/common-errors-issues/operation-restricted-to-availability"}]}]}]}]},"basePath":"","title":"Custom Database Encryption - Aptible","buildId":"dpl_4RHMRqtvdHvKgaEfTTjFqjzja3B6","deploymentId":"dpl_4RHMRqtvdHvKgaEfTTjFqjzja3B6","dynamics":[],"chunks":[]}