4

新しいユーザーが登録したときに、メールを送信したり、ラムダ関数をトリガーしたりするにはどうすればよいですか?

「ID プールの編集」の下で、同期トリガーのみが見つかりました。私が正しく理解している場合:これは、ユーザーが自分のデータを同期するたびにトリガーされます...
「最初の」同期のため、または特定のデータセットがユーザー用に作成されたときにのみ、ラムダ関数をトリガーする方法はありますか?

ここに画像の説明を入力

編集:
より具体的には、JS SDKを使用してラムダ経由でユーザーを作成します。独自の oauth2 フローで開発者認証を使用しています。Google などを介して初めてア​​クセスを許可するユーザーと、2 回目にアクセスを許可するユーザーを区別する方法がわかりません。アクセスコードを含むjsonは私と同じように縫い付けられています...多分私は間違っています。

また、getOpenIdTokenForDeveloperIdentity呼び出しを使用して、cognito に新しい ID と 1 つの cognito が既に知っている ID を区別する方法がわかりません。

編集 2: さらに正確に言うと: 私はこのプロジェクトに基づいて構築しています: https://github.com/laardee/serverless-authentication-boilerplate/blob/master/authentication/lib/storage/usersStorage.js

現時点でユーザーをcognitoに保存する方法は次のとおりです。初めてのユーザーだけでなく、n回目のユーザーにもこのコードを実行します。私の問題は、私が区別する方法がわからないということです...

const saveCognito = (profile) => new Promise((resolve, reject) => {
  if (profile) {
    cognitoidentity.getOpenIdTokenForDeveloperIdentity({
      IdentityPoolId: process.env.COGNITO_IDENTITY_POOL_ID,
      Logins: {
        // profile.userId = encrypted id of the e.g. google oauth2 id
        [process.env.COGNITO_PROVIDER_NAME]: profile.userId 
      }
    }, (err, dat) => {
      if (err) {
        reject(err);
      } else {
        var list_params = {
          DatasetName: 'user-data', /* dataset name */
          IdentityId: dat.IdentityId, /* cognito id */
          IdentityPoolId: process.env.COGNITO_IDENTITY_POOL_ID
        };
        cognitosync.listRecords(list_params, function(err, data) {
          if (err) {
            reject(err); // an error occurred
          } else {

            var RecordPatches = //[Parts of the i want to write to the user]
            // SyncSessionToken is returned by the cognitosync.listRecords call
            list_params["SyncSessionToken"] = data.SyncSessionToken; 
            list_params["RecordPatches"] = RecordPatches;

            cognitosync.updateRecords(list_params, function(err, update_data) {
              if (err){
                reject(err);
              } else {
                resolve();
              }
            });
          }
        });
      }
    });
  } else {
    reject('Invalid profile');
  }
});
4

1 に答える 1