diff --git a/packages/amplify-cli/package.json b/packages/amplify-cli/package.json index ec79f6aa296..7061e6ab57f 100644 --- a/packages/amplify-cli/package.json +++ b/packages/amplify-cli/package.json @@ -72,7 +72,6 @@ "ci-info": "^2.0.0", "cli-table3": "^0.6.0", "colors": "^1.4.0", - "cors": "^2.8.5", "ejs": "^3.0.1", "enquirer": "^2.3.6", "env-editor": "^0.4.1", diff --git a/packages/amplify-provider-awscloudformation/package.json b/packages/amplify-provider-awscloudformation/package.json index 9c8ec7e9f47..ec711600000 100644 --- a/packages/amplify-provider-awscloudformation/package.json +++ b/packages/amplify-provider-awscloudformation/package.json @@ -35,6 +35,7 @@ "chalk": "^3.0.0", "cloudform": "^4.2.0", "columnify": "^1.5.4", + "cors": "^2.8.5", "extract-zip": "^2.0.1", "folder-hash": "^3.3.0", "fs-extra": "^8.1.0", diff --git a/packages/amplify-provider-awscloudformation/src/amplify-service-manager.js b/packages/amplify-provider-awscloudformation/src/amplify-service-manager.js index 2a14287c149..2b15e56ceaf 100644 --- a/packages/amplify-provider-awscloudformation/src/amplify-service-manager.js +++ b/packages/amplify-provider-awscloudformation/src/amplify-service-manager.js @@ -4,8 +4,9 @@ const inquirer = require('inquirer'); const sequential = require('promise-sequential'); const { S3 } = require('./aws-utils/aws-s3'); const { getConfiguredAmplifyClient } = require('./aws-utils/aws-amplify'); -const constants = require('./constants'); +const { ProviderName, AmplifyAppIdLabel } = require('./constants'); const { checkAmplifyServiceIAMPermission } = require('./amplify-service-permission-check'); +const { stateManager } = require('amplify-cli-core'); async function init(amplifyServiceParams) { const { context, awsConfig, projectName, envName, stackName } = amplifyServiceParams; @@ -54,28 +55,19 @@ async function init(amplifyServiceParams) { if (!amplifyAppId) { // in the "amplify env add" workflow, there might be other envs, new env can be added to existing appId - let teamProviderFilePath; - try { - teamProviderFilePath = context.amplify.pathManager.getProviderInfoFilePath(); - } catch (e) { - // do nothing - } - - if (teamProviderFilePath && fs.existsSync(teamProviderFilePath)) { - const teamProviderInfo = context.amplify.readJsonFile(teamProviderFilePath); - + if (stateManager.teamProviderInfoExists()) { + const teamProviderInfo = stateManager.getTeamProviderInfo(); const envList = Object.keys(teamProviderInfo); let appIdsInTheSameLocalProjectAndRegion = []; - for (let i = 0; i < envList.length; i++) { - const env = envList[i]; + for (let env of envList) { if ( env !== envName && - teamProviderInfo[env][constants.ProviderName].Region === awsConfig.region && - teamProviderInfo[env][constants.ProviderName][constants.AmplifyAppIdLabel] && - !appIdsInTheSameLocalProjectAndRegion.includes(teamProviderInfo[env][constants.ProviderName][constants.AmplifyAppIdLabel]) + teamProviderInfo[env][ProviderName].Region === awsConfig.region && + teamProviderInfo[env][ProviderName][AmplifyAppIdLabel] && + !appIdsInTheSameLocalProjectAndRegion.includes(teamProviderInfo[env][ProviderName][AmplifyAppIdLabel]) ) { - appIdsInTheSameLocalProjectAndRegion.push(teamProviderInfo[env][constants.ProviderName][constants.AmplifyAppIdLabel]); + appIdsInTheSameLocalProjectAndRegion.push(teamProviderInfo[env][ProviderName][AmplifyAppIdLabel]); } } @@ -175,13 +167,12 @@ async function init(amplifyServiceParams) { } async function deleteEnv(context, envName, awsConfig) { - const teamProviderFilePath = context.amplify.pathManager.getProviderInfoFilePath(); - if (fs.existsSync(teamProviderFilePath)) { - const teamProviderInfo = context.amplify.readJsonFile(teamProviderFilePath); + if (stateManager.teamProviderInfoExists()) { + const teamProviderInfo = stateManager.getTeamProviderInfo(); if ( teamProviderInfo[envName] && - teamProviderInfo[envName][constants.ProviderName] && - teamProviderInfo[envName][constants.ProviderName][constants.AmplifyAppIdLabel] + teamProviderInfo[envName][ProviderName] && + teamProviderInfo[envName][ProviderName][AmplifyAppIdLabel] ) { const amplifyClient = await getConfiguredAmplifyClient(context, awsConfig); if (!amplifyClient) { @@ -194,7 +185,7 @@ async function deleteEnv(context, envName, awsConfig) { return; } - const amplifyAppId = teamProviderInfo[envName][constants.ProviderName][constants.AmplifyAppIdLabel]; + const amplifyAppId = teamProviderInfo[envName][ProviderName][AmplifyAppIdLabel]; const deleteEnvParams = { appId: amplifyAppId, environmentName: envName, @@ -208,10 +199,10 @@ async function postPushCheck(context) { const { projectConfig, amplifyMeta, localEnvInfo, teamProviderInfo } = context.amplify.getProjectDetails(); const { envName } = localEnvInfo; - const stackName = teamProviderInfo[envName][constants.ProviderName].StackName; - const region = teamProviderInfo[envName][constants.ProviderName].Region; + const stackName = teamProviderInfo[envName][ProviderName].StackName; + const region = teamProviderInfo[envName][ProviderName].Region; - if (!teamProviderInfo[envName][constants.ProviderName][constants.AmplifyAppIdLabel]) { + if (!teamProviderInfo[envName][ProviderName][AmplifyAppIdLabel]) { let amplifyAppId; const amplifyClient = await getConfiguredAmplifyClient(context); @@ -233,14 +224,13 @@ async function postPushCheck(context) { const envList = Object.keys(teamProviderInfo); let appIdsInTheSameLocalProjectAndRegion = []; - for (let i = 0; i < envList.length; i++) { - const env = envList[i]; + for (const env of envList) { if ( env !== envName && - teamProviderInfo[env][constants.ProviderName].Region === region && - teamProviderInfo[env][constants.ProviderName][constants.AmplifyAppIdLabel] + teamProviderInfo[env][ProviderName].Region === region && + teamProviderInfo[env][ProviderName][AmplifyAppIdLabel] ) { - appIdsInTheSameLocalProjectAndRegion.push(teamProviderInfo[env][constants.ProviderName][constants.AmplifyAppIdLabel]); + appIdsInTheSameLocalProjectAndRegion.push(teamProviderInfo[env][ProviderName][AmplifyAppIdLabel]); } } @@ -286,23 +276,18 @@ async function postPushCheck(context) { const createEnvParams = { appId: amplifyAppId, environmentName: envName, - stackName: teamProviderInfo[envName][constants.ProviderName].StackName, - deploymentArtifacts: teamProviderInfo[envName][constants.ProviderName].DeploymentBucketName, + stackName: teamProviderInfo[envName][ProviderName].StackName, + deploymentArtifacts: teamProviderInfo[envName][ProviderName].DeploymentBucketName, }; await amplifyClient.createBackendEnvironment(createEnvParams).promise(); } - teamProviderInfo[envName][constants.ProviderName][constants.AmplifyAppIdLabel] = amplifyAppId; - amplifyMeta.providers[constants.ProviderName][constants.AmplifyAppIdLabel] = amplifyAppId; - - const amplifyMetaFilePath = context.amplify.pathManager.getAmplifyMetaFilePath(); - let jsonString = JSON.stringify(amplifyMeta, null, 4); - fs.writeFileSync(amplifyMetaFilePath, jsonString, 'utf8'); + teamProviderInfo[envName][ProviderName][AmplifyAppIdLabel] = amplifyAppId; + amplifyMeta.providers[ProviderName][AmplifyAppIdLabel] = amplifyAppId; - const teamProviderInfoFilePath = context.amplify.pathManager.getProviderInfoFilePath(); - jsonString = JSON.stringify(teamProviderInfo, null, 4); - fs.writeFileSync(teamProviderInfoFilePath, jsonString, 'utf8'); + stateManager.setMeta(undefined, amplifyMeta); + stateManager.setTeamProviderInfo(undefined, teamProviderInfo); } } diff --git a/packages/amplify-provider-awscloudformation/src/configuration-manager.js b/packages/amplify-provider-awscloudformation/src/configuration-manager.js index bda3e6ca7e7..1046a48e2a2 100644 --- a/packages/amplify-provider-awscloudformation/src/configuration-manager.js +++ b/packages/amplify-provider-awscloudformation/src/configuration-manager.js @@ -748,7 +748,10 @@ async function getAwsConfig(context) { const appId = _.get(meta, ['providers', 'awscloudformation', 'AmplifyAppId']); const authConfig = await getRefreshedTokens(appId, context.print); const { idToken, IdentityId, region } = authConfig; - awsConfig = (await getAdminCredentials(idToken, IdentityId, region)).Credentials; + awsConfig = { + ...(await getAdminCredentials(idToken, IdentityId, region)).Credentials, + region, + }; } catch (e) { throw new Error('Failed to get Amplify Admin credentials.'); }