AWS SNS + S3 でバケット内の状態を即座に EC2 に反映するまで

ウェブアプリケーションが EC2 上で動作していて, そのコンテンツ内容を S3 バケットによって管理しているシチュエーションにおいて, S3 バケットの状態を即座にそのウェブアプリケーションに反映させたいという事例はよくあると思う(ステージング云々は, 一旦置いておくとして). 本エントリは, AWS SNS による HTTP リクエストをトリガーに, S3 バケットの状態を EC2 上のコンテンツへ即座に反映するための構造と簡単な実装について取り上げる.


ベイズの定理

ベイズの定理の導出から, モンティ・ホール問題への応用まで.

ベイズの定理の導出

事象 AA が発生する確率を「P(A)=AP(A) = A が発生する確率 ÷\div すべての事象の数」と書くとき, ベイズの定理は

ベイズの定理

事象 BB のもとで事象 AA が発生する確率 P(AB)=P(BA)P(A)P(B) (P(B)>0)P(A\mid B)=\dfrac{P(B\mid A)P(A)}{P(B)}\ (P(B)\gt 0)

と定義される. 以下ベイズの定理を導出する. 例として, 起こり得る全ての事象の数を 200200, 事象 AA, 事象 BB(以下単に AA, BB と書く)が発生した回数をそれぞれ 60, 4060,\ 40 とし, AA および BB が発生した確率を 1010 とする. 簡単のために, この事象関係を表すベン図を次に示す1.

ある事象を表したベン図

オイラーの定理とカーマイケルの定理

以前の記事, エルガマル暗号では, エルガマル暗号に関する諸々の前提の説明と, その実装について示した. 同エントリ内で, フェルマーの小定理1については取り扱ったものの, その一般形であるオイラーの定理およびカーマイケルの定理について特に触れなかったため, 本エントリでそれらに関してまとめる. しばしば値の確認には, 簡単のため Haskell を使う.


VRRP on AWS VPC-EC2

本エントリでは, VPC-EC2 で MASTER 側のヘルスが確認できなくなったときに, VRRP を用いてフェールオーバし, 一定度の可用性担保を実現する場合について1取り上げる. VRRP の実装としては keepalived を用いることとする.

前提

次のシチュエーションを前提としている.

  • インスタンスが 2 つ以上作成済みで, 24, 80 番ポートを SG の設定で開けてあり, どちらにおいても apache2 と keepalived が稼働している.
  • keepalived.conf にそれぞれ MASTER と BACKUP が設定済みで, VPC-EC2 のルートテーブルにて, いまの設定にあわせて 1 つに VIP (192.168.1.1/32) が設定してある.

このシチュエーションがオンプレミス環境上の話であれば, 何の問題もなく, これでフェールオーバが実現できるのだが, AWS EC2 でこれを実現するためには, AWS のルートテーブル側の VIP ターゲットをも貼り直す操作が必要となり, この操作については, ある程度自分で実装しなければならない. いくらか調べて見ると, awscli で同様の環境を作っている事例を多く見るのだが, 本エントリでは諸事情より AWS SDK for go を使って, 操作することとした.


Connector/C++ で MySQL を操作

  • 2018/07/20 09:31
  • C++

学校の関係で MySQL を触る機会が増えてきたので, MySQL の C++ 向けライブラリを一度触っておこうという忘備録.

これを実行すると, 次のように, 実在しそうでしなさそうな, 妙に怪しい雰囲気1の一覧が出力される.