dynamoDB基礎 自分用メモ

ざっくり

awsのkvs。
高速なパフォーマンスとシームレスな拡張性がウリ。スケーリングとかをよしなにやってくれる。
超大量のデータをSQLに格納するのはとてもしんどい。そんなときに高速に読み書きを行うことができ圧倒的なスケーリングをすることができるdynamoDBが輝く。

1秒あたり数万もしくは数百万のr/wが必要な場合とかに。

ただしSQLに比べ複雑な読み込みができない(できてもそういったケースはそもそもdynamoDBが適していない)。

続きを読む

【nginx】CloudFront, ALBどちらからのリクエストでも適切なremote_addrを取得する【php-fpm】

本記事の趣旨

とあるアプリケーションの前段にCloudFrontを挟む作業をしていたのですが、CloudFrontが挟まるとnginx側でシンプルに X-Forwarder-forを使用してuser側のIPを取得することができませんでした。

また、ごく一部にALB越しでのアクセスが存在しており、あとは無停止でalbからcloudfrontへ移行する必要があったので、nginx側でcloudfront越しのIPとalb越しのIPどちらのIPも適切なものを所得できる必要がありました。

一部のブログではset_real_ip_fromディレクティブに 0.0.0.0/0を挿入し、すべてのIPを信頼するといったやり方が紹介されていますが、 X-Fowarded-Forは偽装可能なので今回は使用を避けました。 (もちろんアプリケーションの仕様によってはこちらを採用しても良いと思います。)

そこで、cloudfrontのカスタムヘッダである CloudFront-Viewer-Addressを使用しクライアントののIP:Portを取得し、そのままだとport番号まで文字列に含まれているので一部加工してからアプリケーションへ渡すことにしました。

また、alb cloudfrontともに対応するために該当ヘッダが存在するかどうかで最終的に渡すipを決めています。

続きを読む