CognitoのIDプールの未認証ユーザを使ってS3の特定ディレクトリにアクセスするZennひさみつ🐟CognitoのIDプールの未認証ユーザを使ってS3の特定ディレクトリにアクセスする2023/08/22に公開AWSTypeScriptCognitotechはじめにCognitoのIDプールの機能に、「認証されていないIDに対してアクセスを有効化する」機能、すなわち未認証のゲストユーザに対して、AWSのリソースに対するアクセス権を付与する機能があります。この記事ではその機能を使って、未認証のユーザがS3の特定のディレクトリにアクセスする方法を紹介したいと思います。そんなことせずに、S3を公開バケットにしちゃえば良いのでは?と思われるかもしれませんが、いくら機密を含まないファイルであっても、アプリを使用しない第三者にはなるべくオープンにしたくない(例えば不必要にファイルに大量アクセスされるなどの攻撃を防ぎたい)というケースは多いかと思います。CognitoのIDプールって何?という方は以下の公式ドキュメントを参照ください。https://docs.aws.amazon.com/ja_jp/cognito/latest/developerguide/identity-pools.html前提として、CognitoのユーザプールとIDプールはAmplifyなどを使ってすでに作成済みの状態&言語はTypeScriptとします。※最近、コンソールの画面が新しくなって、操作方法が変わったようです。新バージョンのコンソールの場合の手順は以下を参照ください。https://docs.aws.amazon.com/ja_jp/cognito/latest/developerguide/identity-pools.html#enable-or-disable-unauthenticated-identitiesunAuthRoleの設定amplifyでcognitoを作成した場合、unAuthRoleというIAMロールが作成されているので、そのロールに対して、S3の特定のディレクトリに対してアクセスする権限を付与します。sdkを使ってS3にアクセス上記で定義したロールを引き受けて、S3にアクセスします。以下のように、cognitoのIDプールのIDさえ知っていれば、ロールを引き受けることが可能です。client.send(command);};参考にさせていただいた記事https://zenn.dev/kzen/articles/392bf636fdddb5ひさみつNCDCでITコンサル、バックエンド、インフラ構築を担当していました。現在はSaaSの企業でアプリケーションエンジニアをやっています。DiscussionひさみつNCDCでITコンサル、バックエンド、インフラ構築を担当していました。現在はSaaSの企業でアプリケーションエンジニアをやっています。Proよくある質問LinksX(Twitter)GitHubメディアキットLegal利用規約プライバシーポリシ。