如何在 lambda 函数中获取 cognito id?

How to get cognito id in a lambda function?

如何获取在 Lambda 函数中启动操作的用户的认知 ID?

lambda 函数由经过 cognito 身份验证的用户在 s3 上传时触发。

如果我查看:event.Records[0].userIdentity.principalId,我得到的只是一个字符串 "CognitoIdentityCredentials"

目前 Cognito Identity Id 在 S3 触发的事件中不可用。我们将在积压工作中考虑此功能,以便在使用 Cognito 凭据进行身份验证的不同服务触发的所有事件中添加此字段。

正如 Vinay 所说,我们无法直接获取 cognito id。如果有人感兴趣,这是我实施的解决方法。它保证您的认知用户的身份验证,但要求您将文件存储在每个用户的不同目录中:

  • 让用户上传文件到 'yourBucket/cognito-id/*'

  • 设置 cognito 身份验证用户的策略,以便他们无法在其他任何地方上传:

"Resource": "arn:aws:s3:::yourBucket/${cognito-identity.amazonaws.com:sub}/"

  • 在您的 lambda 函数中,从文件键中读取 cognito id,例如:

id = event.Records[0].s3.object.key.split('/')[0]