catch-img

演習成果物を共有するファイル共有システムを AWS SDK で作った話

こんにちは、AWS 認定インストラクターのたかやまです。

AWS 認定インストラクターとしてコースを実施する傍ら、コースで利用する様々なシステムの開発も行っています。

本日は、受講者の方と成果物の共有をおこなう仕組みを Amazon S3 をベースにしたウェブアプリケーションで構築したお話をお届けいたします。

前回は、新入社員研修の演習で利用する環境の構築を AWS CDK で行っているという記事を書きました。こちらも併せてご覧ください)

今回ご紹介するもの

新入社員研修のなかには、朝活としてライトニングトークを行っている会社さんもあります。前日までに学んだ内容だったり、個人的に興味のあることをテーマとして発表されることが多いようです。

こうした発表資料を講師や他の受講者の方と共有したり、発表内容に対する他の受講者の方のコメントを送り合うことでお互いを高め合う様子は見ていて気持ちいいですね。

さて、こうしたファイル共有をおこなう場合、いわゆるファイルサーバーに対する FTP 操作が考えられますが、FTP の操作を許可しないネットワークセキュリティが設定されている場合が少なからずあります。

そこで、ブラウザベースで利用できるセキュアなファイル共有システムを用意できないか。ということで構築したのがこちらです。

AWS_SDK_01

仕組みとしては、シンプルに Amazon Cognito を利用したユーザー管理機能とともに、Amazon S3 へのアップロードやダウンロード、ファイルブラウザの機能を備えただけのシステムです。

今回は、個人的な趣味と興味でバックエンドの API は用意せず、すべてフロントエンドの AWS SDK for JavaScript から直接 AWS のサービスを利用する形態にしてみました。

また、100名を超えるユーザーの登録を行うことがあるので、Cognito のユーザー管理は AWS Step Functions でバッチ処理できるようにしました。

各アクションでは、さほど大したことは行っていませんが、1つの Lambda 関数の中で複数の手続きを行うよりも今後の拡張時にもメンテナンス性が良いとおもいます。

特徴と工夫

1社だけではなく、複数の企業様で同じ時期にシステムを利用することを想定しているので、S3 バケットは企業や新入社員研修の単位で個別に作成するようにしています。

こうすることで、ソフトウェアのバグなどによる情報流出のリスクに対応しています。

しかし、フロントエンドのアプリケーションを企業ごとに用意するのは手間なので、マルチテナントで利用する SaaS アプリケーションとして構築しています。

受講者や講師がアクセスできる S3 バケットについては、Cognito のグループ機能で IAM ロールを適用することで管理しています。

S3 バケットには、初期状態で student と private というプレフィックスだけ用意しています。これは、講師間で受講者の評価シートや名簿などのファイル共有を行うことも想定されるので、受講者向けのルートディレクトリと講師向けのルートディレクトリを個別に設定できるようにしているためです。

Cognito のグループを受講者グループと講師グループに分けることも考えましたが、講師もすべてのコースで同じではないので、コースごとにグループが増えていくと複雑な管理になると思い Cognito のユーザーがアクセスできる S3 バケットや、ディレクトリなどの管理は Amazon DynamoDB に情報として登録することにしました。

AWS_SDK_02

結果として、S3 からデータを取得するタイミングで DynamoDB の情報をもとにフィルタを構成できるようになったのでシンプルなコードになりました。

ファイルのダウンロードは、署名付きURL を生成してから行うことですべてのバケットをプライベートにしたまま利用できます。

まとめ

Amazon S3 をベースにして以下のよう特徴を持つファイル共有システムを構築しました。

  • AWS アカウント連携や、IAM ユーザーの準備が不要
  • S3 の耐久性と可用性、セキュリティ機能を活用
  • Step Functions を利用した拡張性とか可観測性のある構成

個人的には、AWS SDK for JavaScript V3 の使い方を学ぶことができるよい機会でした。

 

トレノケートのAWS研修(AWS認定トレーニング)

トレノケートのAWS認定トレーニングでは、AWS社の厳格なテクニカルスキル及びティーチングスキルチェックに合格した認定トレーナーがコースを担当します。AWS初心者向けの研修や、AWS認定資格を目指す人向けの研修をご提供し、皆様のAWS知識修得のサポートをいたします。
トレノケートのAWS研修(AWS認定トレーニング)はこちら


▼AWS初心者の方は、   AWS Cloud Practitioner Essentialsから!
座学中心の研修で、AWSを初めて学ぶ方や、営業などで提案に関わる方におすすめです。
「AWS Certified Cloud Practitioner」資格取得を目指す方の基礎知識修得にも最適です。
→ AWS Cloud Practitioner Essentials 詳細・日程はこちらから

 

髙山 裕司(たかやま ゆうじ)

トレノケート株式会社 講師。AWS 認定インストラクター。AWS認定ソリューションアーキテクト - アソシエイト / AWS 認定クラウドプラクティショナー。生粋の猫派。

無料ダウンロード

オススメコンテンツ

オススメ記事

プロジェクトマネジメント PMP AWS ビジネススキル Microsoft PMBOKⓇ 田中淳子 IT資格 人材育成 山下光洋 AMA Azure コミュニケーション 人材開発用語集 PMBOK®ガイド入門 クラウド ITスキル 新入社員 横山哲也 人材育成応援ラジオ DX re:Invent セキュリティ PMP試験問題に挑戦 Cisco PMBOKⓇガイド 第6版 試験体験記 イベント・セミナー AI(人工知能) PMBOK®ガイド第6版の変更点 人材開発 CCIE CCNA テレワーク ネットワーク リモートワーク 研修 DX人材育成 GCP PMP(R)試験問題 第6版対応 PMP合格体験記 Windows Server AWS_Q&A Active Directory IT人材 IT資格解説 アセスメント キャリア デジタルビジネス ヒューマンスキル リーダーシップ 人気コースランキング 大喜利 部下の育成 AI人材 Conversations PMの心得 グローバル人材 新入社員研修といえば IoT OJT reinvent2022 リスキリング 生成AI CCNP Security Windows PowerShell クリエイティビティ プログラミング 人材トレンド 試験対策問題 PMP試験対策一問一答 コーチング プロジェクト プロトタイプビルダー 1on1 AWS_DiscoveryDay AWSトレーニングイベント GCP無料セミナー Google Cloud Google Cloud Platform G検定 ITインフラ oVice アワード クリティカルシンキング サンプル問題 ステークホルダー ダイバーシティ ディープラーニング ワーケーション 自律 試験Tips Linux PMI Power Platform Python Teams Web会議 cybozudays