Чтобы подключиться к определенному API, нам нужно включить сертификат, закрытый ключ и ЦС из функции NodeJS, развернутой в AWS Lambda.
В тестовых средах мы можем просто использовать fs.readFileSync для локального пути на тестовом сервере, но это, конечно, не применимо к AWS Lambda.
Наш призыв звучит так:
return request({
method: args.method,
uri: this.baseUrl,
headers: {
"User-Agent": "XXXX-Wrapper"
},
form: this.queryParams,
json: false,
cert: this.cert,
key: this.key,
ca: this.ca
}, callback);
Есть ли способ прочитать информацию о сертификате либо из AWS KMS, либо это единственный способ загрузить эти сертификаты в частную корзину S3 и прочитать их оттуда?
Мы также пытались хранить необработанные сертификаты в хранилище параметров в виде зашифрованных значений и считывать их оттуда как переменные процесса NodeJS, но это, похоже, не сработало.
Вы смогли решить эту проблему?
@yogescicak мы поместили сертификаты в безопасное ведро и добавили разрешения на чтение для этой лямбды в это ведро/файл.
Вам нужно было сначала загрузить файл в папку /tmp, а затем прочитать значение? Был бы признателен за то, что вы поделились здесь в качестве ответа. Я проголосую за это.
@yogesnsamy готово!





Возможно, есть лучшие способы, но мы решили поместить сертификаты в безопасное хранилище со строгим контролем доступа и блокировкой объектов.
Теперь в лямбде TypeScript/NodeJS мы можем просто инициировать клиент S3 и выполнить такой запрос.
const cert = await S3.getFile(Config.get('...'), 'certificate.crt')
const key = await S3.getFile(Config.get('...'), 'private.key')
const ca = await S3.getFile(Config.get('...'), Config.get('ca_path'))
return request({
method: args.method,
uri: this.baseUrl,
headers: {
....
},
form: formData,
json: false,
cert:cert,
key:key,
ca:ca
}, callback);
Сервис S3 — это всего лишь оболочка библиотеки aws-node.
На самом деле мало что знаю об этом, но вы смотрели на
AWS Certificate Manager.