UNPKG

serverless-offline-msk

Version:

A serverless offline plugin that enables AWS MSK events

82 lines (74 loc) 2.54 kB
'use strict'; const { style } = require('@serverless/utils/log'); const log = require('./log'); const { serviceSlug, instanceSlug } = require('./utils'); const { getDashboardUrl } = require('./dashboard'); const { getPlatformClientWithAccessKey } = require('./client-utils'); module.exports.configureDeployProfile = async (ctx) => { let deploymentProfile; const { provider, sls: { service: { app, org, service }, processedInput: { options: cliOptions }, }, } = ctx; if (cliOptions['use-local-credentials']) { log.info('Skipping provider resolution, use-local-credentials option present'); return; } const stage = cliOptions.stage || provider.getStage(); const region = cliOptions.region || provider.getRegion(); const sdk = await getPlatformClientWithAccessKey(org); try { deploymentProfile = await sdk.deploymentProfiles.get({ orgName: org, appName: app, stageName: stage, }); } catch (e) { log.debug('deployment profile fetch error %o', e); } if (deploymentProfile && deploymentProfile.providerCredentials) { ctx.provider.cachedCredentials = deploymentProfile.providerCredentials.secretValue; ctx.provider.cachedCredentials.region = region; } let providerCredentials = {}; try { if (!ctx.sls.service.orgUid) { const { orgUid } = await sdk.getOrgByName(ctx.sls.service.org); ctx.sls.service.orgUid = orgUid; } providerCredentials = await sdk.getProvidersByOrgServiceInstance( ctx.sls.service.orgUid, serviceSlug({ app, service }), instanceSlug({ app, service, stage, region }) ); } catch (e) { if (!e.statusCode === '404') { throw e; } } const providersConfigUrl = `${getDashboardUrl(ctx)}/providers`; if (providerCredentials.result) { const awsCredentials = providerCredentials.result.find( (result) => result.providerName === 'aws' ); if (awsCredentials) { ctx.state.areProvidersUsed = true; ctx.provider.cachedCredentials = { dashboardProviderAlias: awsCredentials.alias, accessKeyId: awsCredentials.providerDetails.accessKeyId, secretAccessKey: awsCredentials.providerDetails.secretAccessKey, sessionToken: awsCredentials.providerDetails.sessionToken, }; ctx.provider.cachedCredentials.region = ctx.provider.getRegion(); } } else { log.notice( `Using local credentials. Add provider credentials via dashboard: ${style.link( providersConfigUrl )}` ); } };