Amazon CloudWatch Synthetics Canary から起動される Lambda 関数の割り当てメモリサイズを変更する方法を教えてください。

Synthetics Canary から起動される Lambda 関数の割り当てメモリサイズは、AWS CLI コマンド update-canary で変更することが可能です。
2023.10.18

困っていること

Amazon CloudWatch Synthetics Canary を使用して、Webページをモニタリングしています。

Canary がタイムアウトとなり、エラーが発生する事象が発生しました。

Canary が実行している Lambda 関数のログを確認したところ、下記のようにメモリ使用量がひっ迫していました。

Memory Size: 1000 MB Max Memory Used: 1000 MB

Lambda 関数の割り当てメモリサイズを変更する方法があれば、教えてください。

どう対応すればいいの?

Canary から実行される Lambda 関数の割り当てメモリサイズは、AWS CLI の update-canary コマンドを使用して変更できます。 メモリサイズは 960 MB から 3008 MB の間で設定可能です。

やってみた

CloudWatch コンソールの左ペインから Synthetics Canaries を選択し、Canary を作成ボタンを押下します。

設計図でハートビートのモニタリングを選択し、任意の名前を付け、エンドポイント URL にモニタリングしたい URL を入力します。それ以外はすべてデフォルトとして、Canary を作成ボタンを押下します。

初回の Lambda 関数の実行結果が、CloudWatch Logs のロググループ/aws/lambda/cwsyn-canary-test-(任意の文字列)に保存されていました。確認したところ、割り当てメモリサイズは 1000 MB となっていました。

REPORT RequestId: 92SAMPLE-8e2f-43de-89fa-3f51caSAMPLE 
Duration: 11094.73 ms Billed Duration: 11095 ms 
Memory Size: 1000 MB Max Memory Used: 736 MB 
Init Duration: 1189.57 ms XRAY TraceId: 1-65SAMPLE-3b99f7d02e4276d3beSAMPLE 
SegmentId: SAMPLE9e1cSAMPLE Sampled: true

AWS CLI コマンド update-canary コマンドで割り当てメモリサイズを変更してみます。

$ aws synthetics update-canary --name canary-test --run-config MemoryInMB=3008

再度、ロググループを確認したところ、割り当てメモリサイズが 3008 MB になっていることが確認できました。

REPORT RequestId: 93b9cc3SAMPLE-4737-9d16-d468f0SAMPLE  
Duration: 4752.41 ms Billed Duration: 4753 ms   
Memory Size: 3008 MB Max Memory Used: 790 MB    
Init Duration: 1109.93 ms XRAY TraceId: 1-65SAMPLE-842e9f42ea42400069SAMPLE 
SegmentId: SAMPLEc80cSAMPLE Sampled: true

注意点

本稿記載時点では、マネジメントコンソールからメモリサイズを変更する機能は提供されておりません。

参考資料

update-canary — AWS CLI 1.29.65 Command Reference

--run-config (structure)

MemoryInMB -> (integer) The maximum amount of memory available to the canary while it is running, in MB. This value must be a multiple of 64.

CanaryRunConfigInput - Amazon CloudWatch Synthetics

MemoryInMB The maximum amount of memory available to the canary while it is running, in MB. This value must be a multiple of 64.

Type: Integer Valid Range: Minimum value of 960. Maximum value of 3008. Required: No