UNPKG

api-beep-onboarding

Version:

Oracle OCI FaaS for Api Beep Onboarding library

56 lines (44 loc) 1.87 kB
/** * * BeePay 2.023-2.024 - Oracle OCI FaaS for Api Beep Onboarding * Read secret from OCI vault * * Changes: * jlugo: 2024-jan-08. File creation * jlugo: 2024-apr-25. Moved to a library */ /* RGVzYXJyb2xsYWRvIHBvciBKb25hdGhhbiBMdWdv */ import { Buffer } from "node:buffer"; import { Region, ResourcePrincipalAuthenticationDetailsProvider } from "oci-common"; import { SecretsClient } from "oci-secrets"; /** * Read a secret bundled from OCI Vault by OCID * @param {String} ocidSecret - Oracle Cloud ID for requested services * @param {Object} debug - node.js console object * @returns {Promise<{String}>} - Secret bundled decode from base64 * */ export async function getVaultSecretAsync(ocidSecret, debug) { let secret = null; // Call to Regions.values() without having contacted IMDS (Instance Metadata Service, only available on // OCI instances); if you do need the region from IMDS, call Region.enableInstanceMetadata() // before calling Region.values() await Region.enableInstanceMetadata(); const authProvider = ResourcePrincipalAuthenticationDetailsProvider.builder(); const client = new SecretsClient({ authenticationDetailsProvider: authProvider }); client.region = Region.US_ASHBURN_1; try { const response = await client.getSecretBundle({ secretId: ocidSecret }); if (response.secretBundle?.secretBundleContent?.content?.length === 0) { return null; } // Decode secret from base64 const s = Buffer.from(response.secretBundle.secretBundleContent.content, response.secretBundle.secretBundleContent.contentType). toString(); return s ? JSON.parse(s) : null; } catch (ex) { debug?.log(`OCIERR-SV01: ${ex.message}`); } return secret; }