Pav*_*vle 5 javascript amazon-s3 amazon-cognito aws-lambda aws-amplify
在 Amplify 文档中的“存储/文件访问级别”部分下,有一段内容指出:
文件存储在 private/{user_identity_id}/ 下,其中 user_identity_id 对应于该用户的唯一 Amazon Cognito 身份 ID。
如何从 lambda 函数获取 user_identity_id?
对 lambda 的请求已获得授权,event.requestContext.authorizer.claims对象可用,我可以看到用户数据,但看不到 user_identity_id。
编辑:现在我看到有一个字段event.requestContext.identity.cognitoIdentityId,但值是null。仍然需要找到获取它的方法。
好的,所以没有正确的方法来映射 Cognito 身份 ID 和 Cognito 用户。这里有一个很长的讨论,可以找到一些解决方法。现在,我将使用此解决方案,您可以指定自定义属性(很可能是子属性)作为文件夹名称,而不是identity_id。
编辑:还有另一种解决方案可能会有所帮助(在互联网上的某个地方找到,并且我验证了它是否有效)
const AWS = require('aws-sdk')
const cognitoIdentity = new AWS.CognitoIdentity();
function getCognitoIdentityId(jwtToken) {
const params = getCognitoIdentityIdParams(jwtToken);
return cognitoIdentity
.getId(params)
.promise()
.then(data => {
if (data.IdentityId) {
return data.IdentityId;
}
throw new Error('Invalid authorization token.');
});
}
function getCognitoIdentityIdParams(jwtToken) {
const loginsKey = `cognito-idp.${process.env.REGION}.amazonaws.com/${process.env.USERPOOLID}`;
return {
IdentityPoolId: `${process.env.IDENTITY_POOL_ID}`,
Logins: {
[loginsKey]: jwtToken,
},
};
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2796 次 |
| 最近记录: |