【发布时间】:2021-05-05 07:04:57
【问题描述】:
我有一个受 IAM 授权保护的 API,这是一个允许 IAM 用户 integ-user 调用 API 的资源策略。
现在我想编写一个 lambda 函数来调用相同的 API。鉴于我可以访问 IAM 访问密钥和密钥(通过环境变量或 AWS Secret Manager),我如何对用户进行 IAM 授权,以便它可以成功调用 API?
用于调用相同 API 的示例代码(未经 IAM 授权):
var https = require('https');
exports.handler = (event, context, callback) => {
const options = {
host: process.env.VPCE_DNS_NAME,
port: 443,
path: "/status",
method: 'GET',
headers: {
'Host':process.env.API_GW_ENDPOINT
}
};
https.request(options, (res) => {
let data = '';
res.on('data', (d) => {
data += d;
process.stdout.write(d);
});
res.on('end', () => {
callback(null, JSON.parse(data));
});
}).on('error', (e) => {
callback(null, e);
}).end();
};
【问题讨论】:
-
您需要通过添加一些包含 AWS 签名 v4 流程所需值的标头来签署您的请求。这很难手工完成。看看github.com/yugasun/aws4-sign - 它有几个基于密钥/秘密登录的好例子。
标签: node.js amazon-web-services aws-lambda aws-api-gateway amazon-iam