【发布时间】:2021-10-30 09:52:27
【问题描述】:
我想将 IoT 策略附加到为我的应用程序的联合用户提供的 Cognito 身份。我正在尝试在我的用户池的确认后触发器中使用 Lambda 函数来执行此操作。到目前为止,这是我的功能:
const AWS = require('aws-sdk');
const iot = new AWS.Iot();
exports.handler = async function(event, context) {
const policyName = 'arn:aws:iam::XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
const target = context.identity.cognitoIdentityId;
await iot.attachPolicy({ target, policyName }).promise();
const response = {
statusCode: 200,
body: JSON.stringify('Policy attached.'),
};
return response;
};
当这个函数运行时我得到一个错误:
"cannot read property 'cognitoidentityid' of undefined"
如果我将主体定义为类似的错误
const principal = context.cognito_identity_id; //error: "Missing required key 'target' in params"
根据 IoT 文档,“当您使用通过 Amazon Cognito 身份池获得的 AWS 凭证调用函数时,您的 Lambda 函数中的上下文对象包含 context.cognito_identity_id 的值。”谁能告诉我该怎么做?
我应该补充一点,我想为桌面用户和移动用户附加此策略。Lambda 文档暗示上下文对象的身份属性仅适用于移动应用程序。如果这是真的,那么是否有另一种方法可以将 IoT 策略附加到所有 Cognito 身份、移动设备和桌面设备?
谢谢
【问题讨论】:
标签: aws-lambda aws-iot aws-userpools