Amplifyでいろんな機能拡張をしていったお話
by
Kentaro Takata
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Amplifyでいろんな機能拡張を していったお話 Amplify Boost Up #01 ゲバラ 1
Slide 2
Slide 2 text
自己紹介 2 高田 健太郎 ENGINEER あだ名:ゲバラ 中小ソフトハウスSE(5年)→POLのエンジニア(2019/6〜) 現在は、新規事業でいろんなプロダクトを模索中 技術領域:フロント、バック、インフラなど広く浅く
Slide 3
Slide 3 text
3 約一年前にLabBase Nowをリリースしました 学生によるイベント申込や管理者によるイベント管理
Slide 4
Slide 4 text
本日はこのLabBase Nowが どのような機能拡張していったかお話します 4
Slide 5
Slide 5 text
この1年間で増えた機能 ● 企業アカウント発行 ● 学生個人情報の閲覧制限 ● ファイル共有 5
Slide 6
Slide 6 text
この1年間で増えた機能 ● 企業アカウント発行 ● 学生個人情報の閲覧制限 ● ファイル共有 6
Slide 7
Slide 7 text
企業アカウント発行-改善前業務フロー 7 LabBaseNow イベント管理画面 企業様宛参加学生リスト 企業ご担当者様 イベント管理者 CSVダウンロード メール送信
Slide 8
Slide 8 text
企業アカウント発行-改善前業務フロー 8 LabBaseNow イベント管理画面 企業様宛参加学生リスト 企業ご担当者様 イベント管理者 CSVダウンロード メール送信 メール送信の手間 セキュリティチェックの手間 など工数がかかったり 精神的にも負担
Slide 9
Slide 9 text
企業アカウント発行-改善後業務フロー 9 アカウント発行 (初回のみ) 企業ご担当者様 ログインして 参加学生リストが閲覧で きる LabBaseNow イベント管理画面 LabBaseNow 企業様向け管理画面
Slide 10
Slide 10 text
企業アカウント発行 ● 認証周りはAmplifyのAuthentication ● Admin Queries API ○ Cognitoを操作するための管理者向けAPI ○ functionが自動生成される。楽々です。 ○ アカウントの無効/有効化が可能 ○ ユーザグループも登録。後ほど出てくるAPIの@auth用 ○ ただアカウント作成ができない ● Amplify Librariesで別途サインアップ用のAPIを使う 10
Slide 11
Slide 11 text
懺悔 ● 管理者でアカウント発行するので、この際にパスワードを控えないとい けない ● 生成されるfunctionを修正すれば、管理者が操作するアカウント発行が できる 11
Slide 12
Slide 12 text
この1年間で増えた機能 ● 企業アカウント発行 ● 学生個人情報の閲覧制限 ● ファイル共有 12
Slide 13
Slide 13 text
学生個人閲覧情報の制限-要件 13 ● 企業アカウントで学生の個人情報を閲覧できるようにするため、APIでア クセス制御できるようにしたい
Slide 14
Slide 14 text
APIと@auth ● 情報取得はAmplifyのAPI(GraphQL) ● @authで認可ルール指定できる ○ ownerを指定:対象レコードを操作できるユーザを制限 ○ groupsを指定:対象レコードを操作できるユーザグループを制限 ● 操作種類 ○ create,read,update,delete 14
Slide 15
Slide 15 text
スキーマ定義 15 イベント情報と学生の申込情報にそれぞれ認可ルールを設定
Slide 16
Slide 16 text
学生個人閲覧情報の制限-実装方法 16 ● ownerにCognitoのUserNameを設定 ○ アカウント作成時にUserNameは取得 ● groupsは管理者グループを設定 ● イベント情報作成・更新時にownerをセット ● 学生の申し込みレコードに対してもownerをセットしてアクセス制御 ○ すでに存在するレコードに対してもownerをセット
Slide 17
Slide 17 text
懺悔 ● レコードごとにownerを設定するので大量に学生がいると更新に時間が かかってしまう。 ○ @connectionしてたらイベントのowner設定だけで絞れるとかできて欲しい。(調 べたけどできなかった) ● この方法でマルチテナント方式にしだすとしぬ 17
Slide 18
Slide 18 text
実際作った機能・要件 ● 企業アカウント発行 ● 学生個人情報の閲覧制限 ● ファイル共有 18
Slide 19
Slide 19 text
ファイル共有-要件 19 ● ファイル共有を管理者から各企業ごとにできるようにしたい ○ イベント運用のための資料やイベント後のアンケート結果の共有 ● もちろんセキュアに管理したい ○ 共有したファイルは共有対象のアカウントのみアクセスできるようにしたい
Slide 20
Slide 20 text
Storage ● ファイル関連はAmplifyのStorage ● 認証済みユーザがファイルディレクトリにアクセスできる。 ● ファイルの公開範囲 ○ public:全員アクセス、操作可能 ○ protected:全員アクセス可能、操作はアップロードしたユーザのみ ○ private:アップロードしたユーザのみアクセス、操作可能 20
Slide 21
Slide 21 text
Storageのライブラリ これだと管理者から企業へのファイル共有ができない 21 上げるとしたらここだが private/{user_identity_id}/ の配下にしかあげられない user_identity_id はCognitoのフェ デレーティッドID
Slide 22
Slide 22 text
管理者から企業へのファイル共有 ● 自前でS3を操作するためのfunctionを作成 ○ CLIでfunction作成時にアクセス可能のリソースを指定。 ○ functionそのものへのアクセスはAPIのスキーマ定義で設定。もちろん@authも OK ○ Pathにuser_identity_idが必要なので、ログイン時に保存するように。 ○ 主な機能 ■ 署名付きURLの発行。これでアップロードもダウンロードも ■ ファイル一覧 ■ ファイル削除 ● 企業アカウントからはStorageライブラリで操作 22
Slide 23
Slide 23 text
1年間の感想 ● 開発自体は非常に楽 ○ 認証まわりは特に。 ○ 拡張性も高い。 ○ 困ったらfunctionで頑張る。 23
Slide 24
Slide 24 text
最後に宣伝 ● 弊社POLでは、Wantedlyで採用募集や、月1で公開雑談という名の勉強 会やってますので興味ありましたら是非! 24
Slide 25
Slide 25 text
ご静聴ありがとうございました 25