function getVODEnvVars()

in provider-utils/awscloudformation/utils/video-staging.js [69:141]


function getVODEnvVars(context, props, resourceName) {
  const { amplify } = context;
  const currentEnvInfo = amplify.getEnvInfo().envName;
  const targetDir = amplify.pathManager.getBackendDirPath();
  const amplifyMeta = amplify.getProjectMeta();
  const projectBucket = amplifyMeta.providers.awscloudformation.DeploymentBucketName;
  let amplifyProjectDetails = amplify.getProjectDetails();

  if (!((((amplifyProjectDetails.teamProviderInfo[currentEnvInfo].categories
    || {}).video
    || {})[resourceName]
    || {}).s3UUID)) {
    let uuid;
    if (props.shared.bucketInput) {
      // Migrate to env setup
      uuid = props.shared.bucketInput.split('-').pop();
    } else {
      uuid = Math.random().toString(36).substring(2, 8)
           + Math.random().toString(36).substring(2, 8);
    }
    amplify.saveEnvResourceParameters(context, 'video', resourceName, { s3UUID: uuid });
    amplifyProjectDetails = amplify.getProjectDetails();
  }

  // Migration from old props to new props.
  // (Removing bucket and bucket input/output to be stored in env)
  if (props.shared.bucket) {
    delete props.shared.bucket;
    delete props.shared.bucketInput;
    delete props.shared.bucketOutput;
    fs.writeFileSync(`${targetDir}/video/${resourceName}/props.json`, JSON.stringify(props, null, 4));
  }
  let envVars = amplifyProjectDetails.teamProviderInfo[currentEnvInfo]
    .categories.video[resourceName];

  if (props.contentDeliveryNetwork && props.contentDeliveryNetwork.signedKey) {
    if (props.contentDeliveryNetwork.publicKey) {
      // Migrate to env CDN vars
      const envSave = {
        publicKey: props.contentDeliveryNetwork.publicKey,
        rPublicName: props.contentDeliveryNetwork.rPublicName,
        publicKeyName: props.contentDeliveryNetwork.publicKeyName,
        secretPem: props.contentDeliveryNetwork.secretPem,
        secretPemArn: props.contentDeliveryNetwork.secretPemArn,
      };
      amplify.saveEnvResourceParameters(context, 'video', resourceName, envSave);
      amplifyProjectDetails = amplify.getProjectDetails();
      envVars = amplifyProjectDetails.teamProviderInfo[currentEnvInfo]
        .categories.video[resourceName];
      delete props.contentDeliveryNetwork.publicKey;
      delete props.contentDeliveryNetwork.rPublicName;
      delete props.contentDeliveryNetwork.publicKeyName;
      delete props.contentDeliveryNetwork.secretPem;
      delete props.contentDeliveryNetwork.secretPemArn;
      fs.writeFileSync(`${targetDir}/video/${resourceName}/props.json`, JSON.stringify(props, null, 4));
    }
    const cdnEnv = {
      publicKey: envVars.publicKey,
      rPublicName: envVars.rPublicName,
      publicKeyName: envVars.publicKeyName,
      secretPem: envVars.secretPem,
      secretPemArn: envVars.secretPemArn,
    };

    Object.assign(props.contentDeliveryNetwork, cdnEnv);
  }
  props.env = {
    bucket: projectBucket,
    bucketInput: `${resourceName.toLowerCase()}-${currentEnvInfo}-input-${envVars.s3UUID}`.slice(0, 63),
    bucketOutput: `${resourceName.toLowerCase()}-${currentEnvInfo}-output-${envVars.s3UUID}`.slice(0, 63),
  };
  return props;
}