Cognito身份服务

时间:2017-12-14 06:57:41

标签: javascript amazon-web-services aws-cognito

我需要创建用户并获取临时凭据以使用其他服务(cloudWatch)吗? 如何获得临时凭证?如果我使用我的凭据,这是有效的,但这不安全。

import * as AWS from 'aws-sdk';

AWS.config.region = 'region';
var credentials = new AWS.CognitoIdentityCredentials({
    AccountId: 'accountId',
    RoleArn: 'role',
    IdentityPoolId: 'pool',
});

AWS.config.credentials = credentials;
AWS.config.update({accessKeyId: 'anything', secretAccessKey: 'anything'});
// AWS.config.update({accessKeyId: 'key', secretAccessKey: 'secretKey'});
var cognitoidentity = new AWS.CognitoIdentity({apiVersion: '2014-06-30'});
var cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider({apiVersion: '2016-04-18'});

get(){
var paramsCreateUser = {
      UserPoolId: 'pool',
      Username: 'name',
      UserAttributes: [{
        Name: 'email',
        Value: 'e@gmail.com'
      }]
    };

    cognitoidentityserviceprovider.adminCreateUser(paramsCreateUser, function(err, data) {
      if (err) console.log(err, err.stack);
      else     console.log(data);
    });
}

1 个答案:

答案 0 :(得分:2)

不要在您的Lambda中设置您的AWS凭据。您应该创建一个Lambda执行的IAM角色,该角色具有您的函数所需的权限。请参阅Loading Credentials for a Node.js Lambda Function

  

创建AWS Lambda函数时,必须创建一个特殊的IAM   有权执行该功能的角色。这个角色被称为   执行角色。设置Lambda函数时,必须这样做   指定您创建的IAM角色作为相应的执行角色。

     

执行角色为Lambda函数提供凭据   它需要运行并调用其他Web服务。结果,你做到了   不需要为您在一个内部编写的Node.js代码提供凭据   Lambda函数。

  1. 进入IAM。创建一个新角色,让我们称之为' lambda-create-cognito-user'
  2. 分配政策' AWSLambdaBasicExecutionRole'和AmazonCognitoPowerUser'
  3. 进入Lambda控制台并将您的功能设置为' lambda-create-cognito-user'
  4. 编辑:如果您需要访问其他服务,只需将所需的策略添加到IAM角色即可。例如,您可以添加策略' CloudWatchFullAccess'。