2016-08-26 7 views
0

私はs3にファイルをアップロードする "プレミアム"機能を持つアプリケーションを構築しようとしています。AWS s3はプレミアムユーザーにのみアップロードされますか?

今すぐOAuth/Cognitoを使用してユーザーがログインします。彼らのCognito IDに基づくユーザーデータを含むdynamoDBテーブルがあります。そのdynamodbユーザーデータは、ユーザーがプレミアムユーザーであるかどうかを指定します。

私は、署名済みのs3アップロードURLを作成するラムダ関数に関連付けられたAPIゲートウェイエンドポイントを持っています。

事前に署名されたURLを返す前に、APIゲートウェイを呼び出す個人がログインしており、プレミアムユーザーであることを確認するにはどうすればよいですか?

答えて

0

Lambda custom authorizerを作成して、APIゲートウェイエンドポイントへの要求を承認する前に、ユーザーが「プレミアム」ユーザーであることを確認します。この関数は、アクセスを認可する前にDynamoDBでユーザーを検索します。

+0

を含む、新しい「アイデンティティ」構造体を持っています現在は混乱しています:一度cognitoで認証されたセッショントークンは、あなたが指定したURLのドキュメントに記載されている「認証トークン」と同じトークンですか? – CamHart

+0

カスタムオーサライザを使用している場合は、AWS Cognitoの認証が失われてしまいます(カスタムオーサライザの一部として自分自身をビルドする必要があります)。私はできるだけそれをする必要はありません。あなたはそれの周りに他の方法を見ることができますか? – CamHart

0

CognitoフェデレーションIDを使用しているようですが、APIゲートウェイの背後にあるLambda関数からCognito Identity IDにアクセスし、ダイナモテーブルでルックアップを行うことができます。

Cognito Identity IDにアクセスするには、APIの「Integration Request」ページの「Caller credentials with invoke」が必要です。これが設定されている、とあなたはCognitoからの資格情報を使用してAPIを呼び出すしたら

、ラムダコンテキストは、私は何を「cognitoIdentityId」と「cognitoIdentityPoolId」

+0

カスタムオーサライザを使用しているときに「発信者の資格情報で呼び出す」を有効にすることはできないと思います。カスタムオーソライザを削除し、AWSのオーソライザを使用し、各ラムダコールの開始時に "プレミアム"検索を実行するように提案しますか? (これは本質的にカスタムオーソライザの機能ですが、結果だけをキャッシュします)。 – CamHart

関連する問題