AWS Lambda の Traffic Shifting Using Aliases で無理やり Chaos Engineering
できんじゃねと思ったらできました。無理やり。
この間発表された AWS Lambda の更新で、エイリアスに対して割合で別バージョンを割り振ることができるようになりました。
ユースケースとしては Canary や Blue/Green が上がってたんですが、Chaos もいけんじゃねと思ってやってみたら一応できました。
正常なコードが以下です。バージョン 1 です。
import json print('Loading function') def lambda_handler(event, context): #print("Received event: " + json.dumps(event, indent=2)) print("value1 = " + event['key1']) print("value2 = " + event['key2']) print("value3 = " + event['key3']) return event['key1'] # Echo back the first key value #raise Exception('Something went wrong')
異常なコードが以下です。バージョン 2 です。
なんも考えてません。例外はくだけ。
import json print('Loading function') def lambda_handler(event, context): raise Exception('Something went wrong')
んで、エイリアス chaos
をつくり、バージョン 2 へ 5% の確率で行くよう設定します。
あとはひたすらポチポチ実行。
おー、できました。無理やり感が否めないですがw
例外パターンを最初に考えないときつそうかなー。
あとどうやって例外バージョンを指定して割り振るかってのが難しそう。
ただ形にできると発展も効きそうです。ひたすらスリープして落ちるとか。
Serverless のプラグインとかですかね?