AWS 使用 STS 为 Lambda 生成动态凭证以调用另一个 Lambda

编程入门 行业动态 更新时间:2024-10-03 21:21:02

AWS 使用 STS 为 Lambda 生成动态<a href=https://www.elefans.com/category/jswz/34/1764278.html style=凭证以调用另一个 Lambda"/>

AWS 使用 STS 为 Lambda 生成动态凭证以调用另一个 Lambda

在这里遇到问题。节点.js。我需要使用 STS 从动态生成的高度特定的缩小范围角色中生成临时凭证。然后,我需要使用 STS 凭证调用另一个 Lambda,以便可以将控制权传递给在缩小的临时范围内运行的新 Lambda。 SaaS 工厂风格,但我们需要限制 Lambda 范围本身,而不是在对 S3 和 DynamoDB 之类的单个服务调用中使用凭据。即,传递控制权的 Lambda 是使用 STS 凭证调用的,这会自动限制新 Lambda 执行的代码范围,以便开发人员可能进行的任何调用都已受到限制。

使用如下代码:

let policy = require('./clientPolicy.json');
let sts = new AWS.STS();
let stsParams = {
    RoleArn: process.env.clientWrapperRole,         //primary execution role
    RoleSessionName: `cws-${clientWrapperSession}`,
    Policy: policyString,                           //generated policy
    DurationSeconds: 900
}
let stsResult = await sts.assumeRole(stsParams).promise();
let clientWrapperCred = stsResult.Credentials;
let clientLambdaParams = {
    FunctionName: process.env.clientWrapper, /* required */
    InvocationType: 'RequestResponse',
    LogType: 'Tail',
    Payload: JSON.stringify(clientLambdaPayload)
};

let clientLambda = new AWS.Lambda({ credentials: clientWrapperCred });
let clientResult = await clientLambda.invoke(clientLambdaParams).promise();

日志显示 STS 调用正常运行,针对具有广泛范围的角色生成凭证,包括调用 Lambda 的能力,它具有对 lambda.amazonaws 的服务信任以及调用 Lambda 的角色委托人。客户端策略包括相当于 Lambda 基本身份验证的范围,并且允许针对新的 Lambda 进行调用。

clientLambda 声明正常,但执行 let clientResult... 在返回错误响应之前挂起最大 Lambda 超时:{"code":"ERR_INVALID_ARG_TYPE"}

如果我不使用 STS 凭证,而是像这样调用 Lambda:

let clientLambda = new AWS.Lambda();
let clientResult = await clientLambda.invoke(clientLambdaParams).promise();

...然后一切正常。

有人有什么想法吗?通常我只是缩小附加到要调用的 Lambda 的执行角色的范围,但在这种情况下,我需要根据像 SaaS 工厂一样传递的有效负载动态调整范围。

回答如下:

快速查看 SDK 文档表明,从 assumeRole 返回的

Credentials
是一个映射,而提供给
credentials
客户端构造函数的
AWS.Lambda()
选项是具有不同属性名称的
AWS.Credentials
类型。

所以,尝试像这样创建

clientWrapperCred

let clientWrapperCred = {
  accessKeyId: stsResult.Credentials.AccessKeyId,
  secretAccessKey: stsResult.Credentials.SecretAccessKey,
  sessionToken: stsResult.Credentials.SessionToken
}

更多推荐

AWS 使用 STS 为 Lambda 生成动态凭证以调用另一个 Lambda

本文发布于:2024-05-30 19:02:51,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1770817.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:凭证   动态   AWS   STS   Lambda

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!