ソモサン

私rohkiによる活動や読書の記録をつらつらと書くページです

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% の確率で行くよう設定します。

f:id:rohki:20171201230126p:plain

あとはひたすらポチポチ実行。

f:id:rohki:20171201230439p:plain

おー、できました。無理やり感が否めないですがw

例外パターンを最初に考えないときつそうかなー。
あとどうやって例外バージョンを指定して割り振るかってのが難しそう。

ただ形にできると発展も効きそうです。ひたすらスリープして落ちるとか。
Serverless のプラグインとかですかね?