Story:
我有一个Cognito用户池与用户 .
此用户池是联合身份池中的身份验证提供程序 .
我有一个S3存储桶,用户只能通过Auth Role上的策略上传到私有路径,如下所示:
arn:aws:s3 ::: BUCKET_NAME / $ /*
用户通过aws javascript sdk直接从Web浏览器上传 .
现在这很好用,我的用户仅限于他们上传的位置 . 他们上传的文件最终会显示桶中的路径,如下所示:
us-east-1:0f26319c-1233-4c71-afb6-fac96a798ffb / random_file_name.txt
然后我有一个lambda,只要添加一个文件,就会从这个S3桶中触发 . 为了澄清,用户不会调用lambda
Problem:
我想从lamda访问用户池中的用户属性 . 我以为我可以使用cognito-identity sub进行查找 . 但是,我似乎无法找到使用SDK api来实现此目的的方法 .
使用此api:http://boto3.readthedocs.io/en/latest/reference/services/cognito-identity.html#CognitoIdentity.Client.describe_identity我可以获取登录/用户池,但不能获取与此身份ID关联的用户名 .
如果我有用户名,那么我可以使用api:http://boto3.readthedocs.io/en/latest/reference/services/cognito-idp.html?highlight=cognito#CognitoIdentityProvider.Client.admin_get_user
有关如何使用联合身份ID查找用户属性的任何想法?
1 回答
如何存储文件呢?
arn:aws:s3:::BUCKET_NAME/${cognito-idp.us-east-1.amazonaws.com:sub}
这将解析为文件夹名称,如
f4cfd4a8-0e94-4287-8c5e-1b01538dd2a1
使用来自 Cognito User Pool 的
sub
用户,您可以list users with that sub,例如在cli中:aws cognito-idp list-users --user-pool-id=us-east-1_ndhjGJQYE --filter "sub = 'f4cfd4a8-0e94-4287-8c5e-example'"