Package Exports
- serverless-cognito-add-custom-attributes
- serverless-cognito-add-custom-attributes/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (serverless-cognito-add-custom-attributes) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
serverless-cognito-add-custom-attributes
This plugin allows you to add custom attributes to an existing CloudFormation-managed Cognito User Pool from serverless without losing all your users. At the time of writing (June 2018) CloudFormation doesn't know how to add custom attributes to a user pool without dropping and re-creating it, thus losing all your users.
This plugin also adds the specified attributes to a User Pool Client, giving that client read and write permissions for the new attribute.
Requirements
- Node 8+
- serverless 1+
Usage
Install npm i serverless-cognito-add-custom-attributes
, then add serverless-cognito-add-custom-attributes
to your serverless.yml plugins
list.
plugins:
- serverless-cognito-add-custom-attributes
custom:
CognitoAddCustomAttributes:
CognitoUserPoolIdOutputKey: "CognitoUserPoolApplicationUserPoolId" # The key of the outputted UserPool Ref
CognitoUserPoolClientIdOutputKey: "CognitoUserPoolApplicationUserPoolClientId" # The key of the outputted UserPoolClient Ref
CustomAttributes:
-
AttributeDataType: String
DeveloperOnlyAttribute: False
Mutable: True
Name: "another" # this will end up being custom:another
Required: False
# Only add this if not already outputting the Cognito User Pool and Client IDs, otherwise, refer to the existing outputs in the custom:CognitoAddCustomAttributes section
resources:
Outputs:
CognitoUserPoolApplicationUserPoolId:
Value:
Ref: CognitoUserPoolApplicationUserPool
CognitoUserPoolApplicationUserPoolClientId:
Value:
Ref: CognitoUserPoolApplicationUserPoolClient
Details
- Output your UserPoolId via
resources.Outputs
- Output your UserPoolClientId via
resources.Outputs
- Add
CognitoAddCustomAttributes
tocustom
with the following structure:
CognitoUserPoolIdOutputKey: "UserPool Output Key as a String"
CognitoUserPoolClientIdOutputKey: "UserPoolClient Output Key as a String"
CustomAttributes:
-
AttributeDataType: String
DeveloperOnlyAttribute: False
Mutable: True
Name: "another"
Required: False
Note: If you have multiple userPool-userPoolClients you can specify them as an array as well
Example:
plugins:
- serverless-cognito-add-custom-attributes
custom:
CognitoAddCustomAttributes:
-
CognitoUserPoolIdOutputKey: "CognitoUserPoolApplicationUserPoolId"
CognitoUserPoolClientIdOutputKey: "CognitoUserPoolApplicationUserPoolClientId"
CustomAttributes:
-
AttributeDataType: String
DeveloperOnlyAttribute: False
Mutable: True
Name: "another" # this will end up being custom:another
Required: False
-
CognitoUserPoolIdOutputKey: "CognitoUserPoolApplicationUserPoolId"
CognitoUserPoolClientIdOutputKey: "CognitoUserPoolApplicationUserPoolClientId2"
CustomAttributes:
-
AttributeDataType: String
DeveloperOnlyAttribute: False
Mutable: True
Name: "another" # this will end up being custom:another
Required: False
resources:
Outputs:
CognitoUserPoolApplicationUserPoolId:
Value:
Ref: CognitoUserPoolApplicationUserPool
CognitoUserPoolApplicationUserPoolClientId:
Value:
Ref: CognitoUserPoolApplicationUserPoolClient
CognitoUserPoolApplicationUserPoolClientId2:
Value:
Ref: CognitoUserPoolApplicationUserPoolClient2
The names of your attributes supplied here will appear as custom:{name}
when deployed.
For more information on the schema of attributes see: https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SchemaAttributeType.html