2016-06-28 13 views
4

AWSラムダ関数でAWS Cognito User Poolを使用しようとしています。チュートリアルでは、コードにamazon-cognito-identity.min.jsを含める必要があることがわかりましたが、ノードjでこれを行う方法がわかりません。私はnpmを外部モジュール用にインストールしますが、aws-cognito-identityはモジュールとしてまだ存在していないと思います。メッセージAWSognito.CognitoIdentityServiceProvider.CognitoUserPoolがawsラムダの関数ではありません

aws-sdkをインストールしましたが、SDKにAWSognito.CognitoIdentityServiceProvider.CognitoUserPool関数が存在しません。道による

は、ここに私のコードは、ラムダにあります:

'use strict'; 
var AWS= require('aws-sdk'); 


AWS.config.region = 'ap-northeast-1'; // Region 
AWS.config.credentials = new AWS.CognitoIdentityCredentials({ 
    IdentityPoolId: 'ap-northeast-1:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' // your identity pool id here 
}); 

// Need to provide placeholder keys unless unauthorised user access is enabled for user pool 
//AWSCognito.config.update({accessKeyId: 'anything', secretAccessKey: 'anything'}) 

var poolData = { 
    UserPoolId : 'us-east-1_xxxxxxxxx', 
    ClientId : 'xxxxxxxxxxxxxxxxxxxxxxxxx' 
}; 
var userPool = new AWS.CognitoIdentityServiceProvider.CognitoUserPool(poolData); 

module.exports.handler = function(event, context, cb) { 

var attributeList = []; 
var email = event.email; 
var username=event.username; 
var password = event.password; 

var dataEmail = { 
    Name : 'email', 
    Value : email 
}; 
var dataPhoneNumber = { 
    Name : 'phone_number', 
    Value : '+15555555555' 
}; 
var attributeEmail = new AWS.CognitoIdentityServiceProvider.CognitoUserAttribute(dataEmail); 
var attributePhoneNumber = new AWS.CognitoIdentityServiceProvider.CognitoUserAttribute(dataPhoneNumber); 

attributeList.push(attributeEmail); 
attributeList.push(attributePhoneNumber); 

userPool.signUp(username, password, attributeList, null, function(err, result){ 
    if (err) { 
     alert(err); 
     return; 
    } 
    username = result.user; 
} 
); return cb(null, username); 
}; 

、ここではラムダ関数をテストするとき、私は取得していますエラーメッセージです:

{ 
    "errorMessage": "AWS.CognitoIdentityServiceProvider.CognitoUserPool is not a function", 
    "errorType": "TypeError", 
    "stackTrace": [ 
    "Module._compile (module.js:409:26)", 
    "Object.Module._extensions..js (module.js:416:10)", 
    "Module.load (module.js:343:32)", 
    "Function.Module._load (module.js:300:12)", 
    "Module.require (module.js:353:17)", 
    "require (internal/module.js:12:17)" 
    ] 
} 
+0

すると、このコマンドは、 "NPM -gインストール" とし、同様に動作しませんでした – error2007s

+0

をチェックしてみてください:あなたが持っているでしょう

const attributeEmail = new AWS.CognitoIdentityServiceProvider.CognitoUserAttribute(dataEmail); 

に変更します。問題は、関数自体がjavascriptのaws-sdkソースコード内に見つからないということです。私はamazon-cognito-identity.min.jsファイルでそれを見ることができます。私はちょうど私のコードにそのビットをコピーすることができますが、それが正しい解決策であるように感じていないと思っています。 –

+3

は、GAまでサーバー側の実装がまだ利用できないことを確認しました:https://forums.aws.amazon.com/thread.jspa?threadID=233825&tstart=0 –

答えて

1

私も同じ問題を抱えていました

https://github.com/kndt84/amazon-cognito-identity-js と関連するNPMパッケージ:

、私はこの信じられないほどのレポを見つけました

https://www.npmjs.com/package/amazon-cognito-identity-js-node

これは機能します。これはAWSで修正されるCognitoのGeneral Availabilityリリース(2016年10月から問題に直面している人もいます)を待っている間、今すぐには良い解決策です(2017年7月)。

npm install amazon-cognito-identity-js-node 

var AWS = require('aws-sdk'); 
var CognitoSDK = require('amazon-cognito-identity-js-node'); 
AWS.CognitoIdentityServiceProvider.AuthenticationDetails = CognitoSDK.AuthenticationDetails; 
AWS.CognitoIdentityServiceProvider.CognitoUserPool = CognitoSDK.CognitoUserPool; 
AWS.CognitoIdentityServiceProvider.CognitoUser = CognitoSDK.CognitoUser; 

またCognitoUserAttributeのような他の項目に同じことを行うことができます。

const attributeEmail = new AWS.CognitoIdentityServiceProvider.CognitoUserAttribute(dataEmail.Name, dataEmail.Value); 
関連する問題