0

我无法使用 AWS Lambda 生成的 STS 凭证 (AssumeRoleUsingWebIdentity) 连接到 AWS IoT 终端节点。

它向我抛出AMQJS0008I 套接字关闭错误

我尝试使用 STS 凭证 (AssumeRoleUsingWebIdentity) 和通过 AWS CLI 生成的角色连接到同一个端点并且它有效。

但是,不确定为什么这不适用于 Lambda。

const params = {
        DurationSeconds: 43000, 
        RoleArn: 'arn:aws:iam::123456789123:role/TestRole',
        RoleSessionName: "IoT-User", 
        WebIdentityToken: "<token>",
        Policy: "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Sid\":\"Stmt1\",\"Effect\":\"Allow\",\"Action\":\"s3:ListAllMyBuckets\",\"Resource\":\"*\"}]}"
    };

    const data = await sts.assumeRoleWithWebIdentity(params).promise();
4

1 回答 1

1

问题现已解决!当使用 AssumeRoleUsingWebIdentity 生成 STS 凭据时,如果您同时提供 Role 和 Policy,则函数将为 STS 凭据提供它们两者中可能具有的最低权限。

我假设具有额外权限的自定义策略将被注入到 STS 凭据中。虽然事实并非如此。

我想这应该记录在 AWS 文档的某个地方。

于 2019-07-31T08:59:22.547 回答