内容
-
Lambda が新たに FIS と連携。これにより、開発者はコードを変更せずに、Lambda 関数に対して以下のような障害シナリオをシミュレーション可能
- 遅延 aws:lambda:invocation-add-delay
- エラー aws:lambda:invocation-error
- http統合の応答 aws:lambda:invocation-http-integration-response
これらの機能を活用することで、アプリケーションのパフォーマンスや回復性を向上させるためのテストが容易になります。
開発者はコードを変更せずにという点がポイントかと思います。
やってみる
Lambda関数を設定する
ドキュメント通りやってみます。
① S3 読み取りアクセスポリシーを Lambda 関数にアタッチする。
下記ドキュメントに記載の IAM ポリシーを作成し、Lambda の IAM ロールにアタッチします。
② FIS 拡張機能をレイヤーとして関数にアタッチする。
arn:aws:lambda:ap-northeast-1:339712942424:layer:aws-fis-extension-x86_64:9
③ AWS_FIS_CONFIGURATION_LOCATION
変数を arn:aws:s3:::<S3バケット名>/FisConfigs/
に設定する。
④ AWS_LAMBDA_EXEC_WRAPPER
変数を /opt/aws-fis/bootstrap
に設定する。
実験テンプレートを準備する
Fault Injection Service で実験テンプレートを作成します。
なお、今回は FIS アクションに AWS Lambda がサポートしたということがメインですので、FIS の細かい設定は省きます。過去に投稿している記事などもありますので参考にご覧下さい。
Lamba のタイムアウト値を 3 秒にし、Startup delay milliseconds で 5 秒遅らせるようにしてみます。
また、実験レポート生成機能を追加されたというアップデートがあったので、ついでにこちらも試してみます。
テスト開始
準備が整いましたので実験開始です。
「running」となったら、この間にリクエストを投げてみます。
(base) naata@naatanoMacBook-Air backup %
curl -i -X POST https://XXX.execute-api.ap-northeast-1.amazonaws.com/Stage/ \
-H "Content-Type: application/json" \
-d '{"id": "123", "name": "Test Item"}'
HTTP/2 502
content-type: application/json
content-length: 36
date: Thu, 12 Dec 2024 11:35:36 GMT
x-amz-apigw-id: CrST9GqPNjMELLw=
x-amzn-requestid: 3aeaf55d-be4a-4d56-b812-06ce6766ce70
x-amzn-errortype: InternalServerErrorException
x-cache: Error from cloudfront
via: 1.1 b95e72b30bcace3da0a33c6d9607f382.cloudfront.net (CloudFront)
x-amz-cf-pop: NRT20-P6
x-amz-cf-id: mIG5HYB4f-SgBuqBjUyxeCetGuvUcJrmkYoN0bRFI3YFOczX6YqnFg==
{"message": "Internal server error"}%
コードを変更せず、意図的に障害を起こすことができました。
また、S3 にレポートも生成されていることが確認できました。
レポートの中身を確認しましたが、これだけ見て正直なところうーん、、、といったところが実際の感想です。
うん、なんか急に料金が高くなっているなと思ったら、レポートごとに 5 USD かかるのか。。。要注意。。。