微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

AWS Secrets manager 和 setupProxy.js http-proxy-middleware

如何解决AWS Secrets manager 和 setupProxy.js http-proxy-middleware

在连接我的代理之前,我需要从机密管理器中提取配置

const express = require('express');
const { createProxyMiddleware } = require('http-proxy-middleware');
const { SecretsManagerClient,GetSecretValueCommand } = require('@aws-sdk/client-secrets-manager');
const pjson = require('../app/config');
const app = express();
async function getSecretsManager(){
    return secrets; // (this functions correctly,redacting for security)
}

const buildProxies = async (app) => {
    const proxies = pjson['nonprod-proxies'];
    const secrets = await getSecretsManager();
    let proxiesToMap = [];
    proxies.forEach(proxy => {
        console.log(`[PROXY SERVER] Creating proxy for: ${proxy['proxy-path']}`);
        let target,headers,options;
        const rewrite = `^${proxy['proxy-path']}`;
        if (proxy['internal'])
        {
            target = `https://${secrets['apiDomain']}`;
            headers = {'x-api-key': secrets['apiKey']};
            options = {
                target: target,changeOrigin: true,logLevel: 'debug',headers
            }
        } else {
            target = proxy['proxy-domain'];
            options = {
                target: `https://${target}`,pathRewrite: {
                    [rewrite]: ''
                }
            }
        }
        proxiesToMap.push({'path': proxy['proxy-path'],'options': options})
    });
    return proxiesToMap;
};

module.exports = function(app){
    buildProxies().then(proxies => {
        proxies.forEach(proxyVal => {
            console.log(`Proxy: ${proxyVal['path']} with options ${proxyVal['options']}`);
            app.use(proxyVal['path'],createProxyMiddleware(proxyVal['options']))
        });
    });
    console.log('=== SUCCESSFULY CREATED PROXY SERVER ===');
};

这会导致 localhost:3000 返回样板 html cors 响应,但是,当将 module.exports 的代码替换为:

app.use('/internal/*',createProxyMiddleware({
    target: '<my aws secret url>',headers: { 'x-api-key': '<my aws secret api key>' }
}));

代理工作。有没有办法在 setupProxy.js 内异步加载配置?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。