2017-07-14 30 views
1

S3に書き込む機能が必要な組み込みデバイスがあります。私は組み込み機器に実際のAWS IAMUserを与えることを避けたい。私はCognitoを使ってS3への書き込みアクセス権を得ることに目を向けています。CognitoユーザーにS3への書き込みを許可する

私はグループと1人のユーザー(今のところ)を持つユーザープールを持っています。このグループには、特定のS3バケットへのアクセスを許可する添付されたポリシーがあります。管理者だけが新しいユーザーを作成できるようにプールが設定されています。私はCognitoユーザーを認証して、新しいトークンとidTokensにアクセスできました。私はこれらのトークンを使用してs3バケットに書き込むことを検討しています。

私はドキュメントに従うようにしようとしていますが、混乱しています。私は連合アイデンティティプールが必要だと思うが、私は公共プロバイダーの必要はない。私はちょうど私のcognitoユーザグループがs3に書きたいと思う。

CognitoユーザーがフェデレーションIDなしでS3に書き込むことができるようにする単純なソリューションがありますか、フェデレーションID用にトークンを提供するためにバックエンドを必要としないのですか?

私がように認証するために令状 https://github.com/capless/warrantを使用している

from warrant.aws_srp import AWSSRP                                                              
import boto3                                                                   

client = boto3.client('cognito-idp')                                                             

aws = AWSSRP(username='<username>', password='<password>', pool_id='<pool>',                                                
     client_id='<clientid>', client=client)                                                    

tokens = aws.authenticate_user()      

任意のヒントをいただければ幸いです!

+0

Cognitoトークンを使用してS3用に使用する一時的なAWS資格情報を取得するには、STS AssumeRoleWithWebIdentityを呼び出す必要があります。ちなみに、ユーザープールを導入した元のブログ投稿(現在は連合アイデンティティプールと呼ばれている自己管理型の代替手段として)は役に立ちます:https://aws.amazon.com/blogs/aws/new-user-pools -for-amazon-cognito /。 Facebookなどの必要はありません – jarmod

答えて

2

実際にはフェデレーションIDプールを実行します。アイデンティティプロバイダセクションでCognitoを選択し、プールIDとプールクライアントIDを入力します。次に、IDプールにauthenticatedunauthenticated rolesを指定する必要があります。これらの役割を使用して、S3書き込みアクセスを提供することができます。

これは、アイデンティティ・プロバイダの設定のデフォルトの動作です。ユーザーが所属するグループからロールを取得する場合は、プールとクライアントIDを指定したIDプロバイダセクションのChoose role from tokenオプションを設定する必要があります。

関連する問題