export const meta = {
title: `Use an existing Cognito User Pool and Identity Pool`,
description: `Configure the Amplify CLI to use existing Amazon Cognito User Pool and Identity Pool resources as an authentication & authorization mechanism for other Amplify categories. (API, Storage, and more)`,
};
Import existing Amazon Cognito resources into your Amplify project. Get started by running `amplify import auth` command to search for & import an existing Cognito User Pool & Identity Pool in your account.
```bash
amplify import auth
```
The `amplify import auth` command will:
- automatically populate your Amplify Library configuration files (aws-exports.js, amplifyconfiguration.json) with your chosen Amazon Cognito resource information
- provide your designated existing Cognito resource as the authentication & authorization mechanism for all auth-dependent categories (API, Storage and more)
- enable Lambda functions to access the chosen Cognito resource if you permit it
Make sure to run `amplify push` to complete the import process and deploy this backend change to the cloud.
This feature is particularly useful if you're trying to:
- enable Amplify categories (such as API, Storage, and function) for your existing user base;
- incrementally adopt Amplify for your application stack;
- independently manage Cognito resources while working with Amplify.
> Note: Amplify does not manage the lifecycle of an imported resource.
## Import an existing Cognito User Pool
Select the "Cognito User Pool only" option when you've run `amplify import auth`. In order to successfully import your User Pool, your User Pools require at least one app client with the following conditions:
- *A "Web app client"*: an app client **without** a client secret
Run `amplify push` to complete the import procedure.
import attributesCallout from "/src/fragments/common/writable-vs-mutable-attributes.mdx";
Ensure that the hosted UI for an app client has a sign-out URL defined as omitting this may cause the Amplify CLI to not generate the OAuth `scopes`, `redirectSignIn`, `redirectSignOut` and `responseType` in the `aws-exports.js` file.
If the Cognito user pool has native and web client defined ensure the clients have matching OAuth properties.
## Import an existing Identity Pool
Select the "Cognito User Pool and Identity Pool" option when you've run `amplify import auth`. In order to successfully import your Identity Pool, it must have both of the User Pool app clients fulfilling [these requirements](#import-an-existing-cognito-user-pool) associated as an authentication provider.
Your Identity Pool needs:
- an Authenticated Role with a trust relationship to your Identity Pool
- an Unauthenticated Role with a trust relationship to your Identity Pool
These roles are usually automatically configured when you create a new Identity Pool enabling "Unauthenticated" access and have a Cognito User Pool as an authentication provider.
Amplify CLI will update the policies attached to the roles to ensure Amplify categories function correctly. For example, enabling Storage for authenticated & guest users will add private, protected, public, read and upload permissions for the S3 bucket to the unauthenticated & authenticated role.
Run `amplify push` to complete the import procedure.
## Multi-environment support
When you create a new environment through `amplify env add`, Amplify CLI will assume by default that you're managing your app's Cognito resources outside of an Amplify project. You'll be asked to either import a different Cognito resource or maintain the same Cognito resource for your app's auth category.
If you want to have Amplify manage your auth resources in a new environment, run `amplify remove auth` to unlink the imported Cognito resource and `amplify add auth` to create new Amplify-managed auth resources in the new environment.
## Unlink an existing Cognito User Pool or Identity Pool
In order to unlink your existing Cognito resource run `amplify remove auth`. This will only unlink the Cognito resource referenced from the Amplify project. It will not delete the Cognito resource itself.
Run `amplify push` to complete the unlink procedure.
## Add Environmental Variables to Amplify Console Build
In order to successfully build your application with Amplify Console add the following environmental variables to your build environment:
|Environment Variable|Description|
|-|-|
|AMPLIFY_USERPOOL_ID|The ID for the Amazon Cognito user pool imported for auth|
|AMPLIFY_WEBCLIENT_ID|The ID for the app client to be used by web applications. The app client must be configured with access to the Amazon Cognito user pool specified by the AMPLIFY_USERPOOL_ID environment variable.|
|AMPLIFY_NATIVECLIENT_ID|The ID for the app client to be used by native applications. The app client must be configured with access to the Amazon Cognito user pool specified by the AMPLIFY_USERPOOL_ID environment variable.|
|AMPLIFY_IDENTITYPOOL_ID|The ID for the Amazon Cognito identity pool|