Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import {
CFNStackStatus,
CFNTemplate,
ResourceMapping,
CFN_ANALYTICS_TYPE,
} from '../types';
import MigrationReadmeGenerator from './migration-readme-generator';
import { pollStackForCompletionState, tryUpdateStack } from '../cfn-stack-updater';
Expand All @@ -33,7 +34,7 @@ import ora from 'ora';
const CFN_RESOURCE_STACK_TYPE = 'AWS::CloudFormation::Stack';
const GEN2_AMPLIFY_AUTH_LOGICAL_ID_PREFIX = 'amplifyAuth';

const CATEGORIES: CATEGORY[] = ['auth', 'storage'];
const CATEGORIES: CATEGORY[] = ['auth', 'storage', 'analytics'];
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Strings in this array are used to check against the prefix of category stacks in both Gen1 and Gen2. In Gen1, the analytics stack always starts with "analyticsamplify", but in Gen2, it can be any name. Codegen will need to handle the naming accordingly.

const TEMPLATES_DIR = '.amplify/migration/templates';
const SEPARATOR = ' to ';

Expand All @@ -48,18 +49,21 @@ const AUTH_RESOURCES_TO_REFACTOR = [
];
const AUTH_USER_POOL_GROUP_RESOURCES_TO_REFACTOR = [CFN_AUTH_TYPE.UserPoolGroup];
const STORAGE_RESOURCES_TO_REFACTOR = [CFN_S3_TYPE.Bucket];
const ANALYTICS_RESOURCES_TO_REFACTOR = [CFN_ANALYTICS_TYPE.Stream];
const GEN1_RESOURCE_TYPE_TO_LOGICAL_RESOURCE_IDS_MAP = new Map<string, string>([
[CFN_AUTH_TYPE.UserPool.valueOf(), 'UserPool'],
[CFN_AUTH_TYPE.UserPoolClient.valueOf(), 'UserPoolClientWeb'],
[CFN_AUTH_TYPE.IdentityPool.valueOf(), 'IdentityPool'],
[CFN_AUTH_TYPE.IdentityPoolRoleAttachment.valueOf(), 'IdentityPoolRoleMap'],
[CFN_AUTH_TYPE.UserPoolDomain.valueOf(), 'UserPoolDomain'],
[CFN_S3_TYPE.Bucket.valueOf(), 'S3Bucket'],
[CFN_ANALYTICS_TYPE.Stream.valueOf(), 'KinesisStream'],
]);
const LOGICAL_IDS_TO_REMOVE_FOR_REVERT_MAP = new Map<CATEGORY, CFN_RESOURCE_TYPES[]>([
['auth', AUTH_RESOURCES_TO_REFACTOR],
['auth-user-pool-group', AUTH_USER_POOL_GROUP_RESOURCES_TO_REFACTOR],
['storage', [CFN_S3_TYPE.Bucket]],
['analytics', ANALYTICS_RESOURCES_TO_REFACTOR],
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Used for rollback, not used yet.

]);
const GEN2_NATIVE_APP_CLIENT = 'UserPoolNativeAppClient';
const GEN1_USER_POOL_GROUPS_STACK_TYPE_DESCRIPTION = 'auth-Cognito-UserPool-Groups';
Expand All @@ -82,6 +86,9 @@ class TemplateGenerator {
storage: {
resourcesToRefactor: STORAGE_RESOURCES_TO_REFACTOR,
},
analytics: {
resourcesToRefactor: ANALYTICS_RESOURCES_TO_REFACTOR,
},
} as const;

constructor(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,10 @@ export enum CFN_S3_TYPE {
Bucket = 'AWS::S3::Bucket',
}

export enum CFN_ANALYTICS_TYPE {
Stream = 'AWS::Kinesis::Stream',
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the only stateful resource for Kinesis-based analytics. The rest are IAM roles and policies.

}

export enum CFN_IAM_TYPE {
Role = 'AWS::IAM::Role',
}
Expand All @@ -113,7 +117,7 @@ export enum CFN_LAMBDA_TYPE {
Function = 'AWS::Lambda::Function',
}

export type CFN_RESOURCE_TYPES = CFN_AUTH_TYPE | CFN_S3_TYPE | CFN_IAM_TYPE | CFN_SQS_TYPE | CFN_LAMBDA_TYPE;
export type CFN_RESOURCE_TYPES = CFN_AUTH_TYPE | CFN_S3_TYPE | CFN_ANALYTICS_TYPE | CFN_IAM_TYPE | CFN_SQS_TYPE | CFN_LAMBDA_TYPE;

export type AWS_RESOURCE_ATTRIBUTES = 'Arn';

Expand Down
Loading