さわらブログ

さわら(@xhiroga)の技術ブログ

ググって出てきたCognito UserPoolのベストプラクティスを雑にまとめる

(このブログは、 #技術書典7 で出展する「Cognito屋さん/ Cognito ユーザー移行入門(仮)」の下調べのために書いてます.)

タイトル通り、ググって出てきたCognito UserPoolのベストプラクティスを雑にまとめていきます。

Security / Best Practice for poolData (UserPoolId, ClientId) in a browser JS app

github.com

UserPoolIDとClientIDは、JSのコード内で公開していいの?という質問。
スレッドにある通り、これらの値は unauthenticated APIs のリクエストにしか使われないので大丈夫。

Cognito user pools, in my experience, are terrible to work with

www.reddit.com

ベストプラクティスじゃないけど...Cognito使うのしんどいよね、って話。
いっそ新しいサービス出したらいいんじゃない?って指摘には私も同意。
Cognito is a flawed product that should become redundant. AWS should either build a new service with a new name or build a backwards incompatible Cognito 2.0.

[レポート] サーバーレスアーキテクチャデザインパターンとベストプラクティス! #reinvent #ARC305

dev.classmethod.jp

たしかに、Cognito使いたい人ってAPI Gatewayを認証付きで提供したい人だよね。
1.一時的なAWS認証 or 2.UserPoolのトークン or 3.Lambdaオーソライザー。特に 1.と2. は混同しやすいのでは?

HOW TO USE NEW ADVANCED SECURITY FEATURES FOR AMAZON COGNITO USER POOLS

noise.getoto.net

せっかくだしMFAもちょっと触ってから本を書いたほうがいい気がしてきた

SaaS Identity and Isolation with Amazon Cognito on the AWS Cloud

https://aws-quickstart.s3.amazonaws.com/saas-identity-cognito/doc/saas-identity-and-isolation-with-cognito-on-the-aws-cloud.pdf

弊社(justInCase)のアーキテクチャじゃんこれ!!!知らずしてここにたどり着いたんだなあ...
CloudMapを使ってるとこだけが違う。

Are email addresses supposed to be case-sensitive?

https://forums.aws.amazon.com/forum.jspa?forumID=173&start=0

そうそう、メアドが大文字小文字違いで登録できちゃうんだよね。

「あとで読む」を読む - 2019-06-23

f:id:hiroga_cc:20190529163402p:plain

難民をテック人材へ、3団体協働のもと日本初「難民プログラミング道場」が今秋スタート | LoveTechMedia - ラブテックメディア - Part 2

ドイツに「ReDI School」という同じスタイルのプログラミングスクールがあるらしい。
素敵な取り組みだな、と思ってたらWELgeeってASACで名前見たことあるな。
プログラミング教室もパソコンの貸与も、他の団体と協力してやってる、ってのが素敵だなって思った。

speakerdeck.com WebAuthnについて概略をつかめた。
OAuthがクライアントから認可を分離したように、WebAuthnは認可サーバーから認証を分離した、って表現は正しいかな...? ちょっと思ったのは、もし人間の脳みそが超ハイスペックに拡張されていたら、サービスごとの秘密鍵を暗記&署名を暗算できるようになり、結果この仕組もいらないのかな?

aws.amazon.com

自分で考えて、責任を持って、実施までできる、という立場がスタートアップ。 良い表現...。

blog.cybozu.io カスタムリソースを考慮したことがなかったけどかなり便利かも。なんならCloudWatch LogsのSubscriptionをLambdaに後から追加する、とかもCDKじゃなくてこっちでOKでは?

その他

  • Googleのコード検索ツールの記事良かった。なるほど、自分の参考リポジトリにindex貼っておくのは賢いかも。あれ、ということは、自分のお気に入りの技術ドキュメントだけにindexを貼る、とかもやれば余裕なのか。
  • dockle試した。よかった。

「あとで読む」を読む5選@2019-06-13

f:id:hiroga_cc:20190529163402p:plain

note.mu DeNAめっちゃええ会社やん...

rfushimi.hatenablog.jp 「マネジメントになるのは昇進ではない」ほんとそれ。
一方で、経営者から評価されやすいのはやっぱりマネージャーじゃないの?対面にいるんだもの。そしたらお給料も自然と高くなってしまわない?

aws.amazon.comAPI Gatewayの認証タイプや統合タイプについて一番わかり易い資料
・WebSocketのAPIを一度作ってみたいので、これを使ってなにか作るかもしれない ・AWSサービスのAPI化って実はやったことない。ミニマムにサービスを作るときに便利そう

www.haconiwa-mag.com たしかにグレーのビニール傘はオシャレで使いたくなる。

devmart.jp 売れてるのかな?と思って過去の出品を見たらたしかに売れているものもある。
これは面白いな...!

「あとで読む」を読む @ 2019-06-03

f:id:hiroga_cc:20190529163402p:plain

フォトグラメトリで小笠原

スマホの複数の写真とWindowsの専用ソフトでできるらしい。

React Nativeのテストライブラリ選定

tech.kitchhike.com * グレーボックステストって初めて聞いたけど、要はブラックボックステストを、内部仕様に基づいて改良したものだと思えば良さそうだ。
* avaって初めて聞いた!いつもmochaばっかり使ってるから、次は使ってみようかしら。

Lambda LayersをCIでキャッシュした取り組み

dev.classmethod.jp * そもそもLamdba Layersについてようやくキャッチアップ。要するに、Lambdaの特定のパスに展開するオブジェクトを別途指定できるようだ。

微妙エンジニア

tkot.hatenablog.com "最新のサービスを使うことしか頭にない" サーセン!!!!!コスパもっと意識していこう

コンテナ運用のおすすめの方法

cloud.google.com * 便利なエンドポイントをどんどん生やそう!(メトリクスとかヘルスチェックとか)
* WebPageを作るときにも、本番ページにテスト用のページを追加しておいて、デバッグ時はそこにアクセスしてもらう、とか聞いたことがある。APIサーバーでも同じことか。

あなたの知らない詐欺グラフの世界

note.mu * 棒グラフとはその面積で意味をもたせるグラフです

SAMを通してCodeDeploy

dev.classmethod.jp 本格的なCIの構築ができる!というより、SAMだけでパッとCIまで構築できる!というのが強みと見た。

任意聴取の隠し撮り音声

* 2019年から取り調べの可視化が義務付けられるのをそもそも知らなかった * その対象が重大事件のみ、かつ強制捜査?に限られるのも知らなかった * 全部録音しろよ...

Web系エンジニア

ogihara-ryo.github.io 私の身の回りは、働き方の自由さより、将来起業する上でエンジニア通っておこう、って人が多い気がする。

さわらが「あとで読む」を読んだブログ @2019-05-29

f:id:hiroga_cc:20190529163402p:plain
「あとで読む」を読む

三菱UFJ銀行がIDaaS始める

r.nikkei.com

リアルOAuth2.0じゃん。かっこい〜
ちなみに金融系サービスの本人確認のことをKYC(Know Your Customer)っていうらしい

セッションとトークンの違い

norikone.hatenablog.com

  • セッションはID、トークンはJSON。だからトークンのほうが情報量が多い。
  • セッションを使う場合はサーバー側にセッション情報を持つ。トークンの場合は持たない...これって本質的な違いじゃなくない?トークンでもアプリ側でステート持ち始めたら同じでしょ?

量子コンピューターのアルゴリズムの話

mag.japaaan.com

量子コンピューターってまだ実用化はされてないよね?と思ったら、文中に書いてあって納得した、
これは、「実用的な量子コンピュータができたとしたら」という仮定に基づいた、とても数学的で抽象的な分野の研究です。今はまだ理論のみに留まっていますが、やがて量子コンピュータのハードウェアが実現し、この研究が目に見える形で役立つ日がやってくることを期待しています。

Yahoo!Japanはオンプレなのでk8sが大変ありがたいらしい

speakerdeck.com

  • スライド可愛くない?
  • コンテナオーケストレーションツール、SwarmとMesosがk8sと同じポジションのソフトウェアなのね。理解

AWSの3Dインフラマップ

infrastructure.aws ぬるぬる動いて楽しい!!!

クラメソさんのサーバレス開発部の知見

speakerdeck.com パラメータストアの使い方勉強になる

k8s関連ツールをAWSでいい感じに使う kops編

aws.amazon.com いろんなツールがあるんだね。そのうちお世話になります。

AWS Innovate なんてあったの!?今知った悔しい

dev.classmethod.jp よさげなアーキテクチャの資料をまるっともらえるだけで羨ましい

オーストラリア初のゲーム、Necrobarista

www.4gamer.net ピングドラムっぽいなと一瞬だけ思った

Karate入門

qiita.com もともとRubyでCucumberっていうE2Eテストツールがあって、それのJava実装プラスアルファ、DSLで書けるのが特徴、と。

浅田真央選手のインタビュー

www.asahi.com この人も僕の2コ上だ。こんな大変そうだって思わなかった、本とか読んでみようかな。

macOSにHomebrewでgcloudコマンドをインストールしたらタブ補完が効かなかった時のメモ

TL;DR

こちらのQiita記事を参考にしました。
(記事中にタブ補完について言及がなかったので私もブログを書いている次第です) qiita.com

解説

brew ないし brew cask では、インストールしたパッケージについての情報を参照するコマンドがあります。 例えば awscli だと...

$ brew info awscli
awscli: stable 1.16.130 (bottled), HEAD
Official Amazon AWS command-line interface
https://aws.amazon.com/cli/
/usr/local/Cellar/awscli/1.16.130 (5,272 files, 49MB) *
  Poured from bottle on 2019-04-05 at 18:05:00
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/awscli.rb
==> Dependencies
Required: python ✔
==> Options
--HEAD
    Install HEAD version
==> Caveats
The "examples" directory has been installed to:
  /usr/local/share/awscli/examples

Bash completion has been installed to:
  /usr/local/etc/bash_completion.d

zsh completions and functions have been installed to:
  /usr/local/share/zsh/site-functions
==> Analytics
install: 51,155 (30 days), 172,572 (90 days), 663,663 (365 days)
install_on_request: 48,269 (30 days), 161,871 (90 days), 601,401 (365 days)
build_error: 0 (30 days)

Caveats (ユーザーへの要求)として、いくつか項目があげられるのがわかると思います。

したがって、 gcloudgoogle-cloud-sdk )のinfoを参照すると...

brew cask info google-cloud-sdk
google-cloud-sdk: latest
https://cloud.google.com/sdk/
/usr/local/Caskroom/google-cloud-sdk/latest (20,446 files, 281.3MB)
From: https://github.com/Homebrew/homebrew-cask/blob/master/Casks/google-cloud-sdk.rb
==> Name
Google Cloud SDK
==> Artifacts
google-cloud-sdk/install.sh (Installer)
google-cloud-sdk/bin/bq (Binary)
google-cloud-sdk/bin/docker-credential-gcloud (Binary)
google-cloud-sdk/bin/gcloud (Binary)
google-cloud-sdk/bin/git-credential-gcloud.sh (Binary)
google-cloud-sdk/bin/gsutil (Binary)
==> Caveats
google-cloud-sdk is installed at /usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk. Add your profile:

  for bash users
    source '/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/path.bash.inc'
    source '/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/completion.bash.inc'

  for zsh users
    source '/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/path.zsh.inc'
    source '/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/completion.zsh.inc'

あとは Conveats の記述に従って .bashrc (タブ補完は対話実行に関わる設定だから .bash_profile じゃなくて.bashc ですね。毎回迷う。)を設定すればOKです。

...なんで awsclibrew なのに、 gcloudbrew cask なんだろう...?

BitBucketの"Please make sure you have the correct access rights and the repository exists." と戦うのをやめてHTTPS接続にした

以下のエラーに対してトラブルシューティングを試みたのですが、どうもうまくいかないのでSSH接続を諦めました。

$ git pull
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

やったこと

1. ssh接続の確認

ssh -v git@bitbucket.org
~~~
You can use git or hg to connect to Bitbucket. Shell access is disabled.
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: channel 0: free: client-session, nchannels 1
Connection to bitbucket.org closed.
Transferred: sent 2988, received 1860 bytes, in 0.4 seconds
Bytes per second: sent 7712.1, received 4800.7
debug1: Exit status 0

2. remoteのurl の形式の確認

× git@bitbucket.org:{USER_NAME}/{REPOSITORY_NAME}.git
× ssh://git@bitbucket.org/{USER_NAME}/{REPOSITORY_NAME}.git

どうにもならなかったので

素直にHTTPS接続にしました。

git remote remove origin
git remote add origin https://{USER_NAME}@bitbucket.org/{USER_NAME}/{REPOSITORY_NAME}.git
git fetch

悔しい...!