AWS CloudWatchプラットフォームでのログ記録を停止するようにAWSに指示する手段がないため、AWS CloudWatchでのLambdaのロギングは大量の隠れたコストになる可能性があります。私はそれを行うに発見した 唯一の方法は、(すべてのラムダに関連した)カスタムIAMポリシーを管理し、explicitally ログへのアクセスを拒否することです:...アクション:CloudWatchにログオンするAWS Lambda関数を停止する方法
{
"Sid": "DisableAllLogs",
"Resource": "*",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Effect": "Deny"
}
今、私がしようとしていますいくつかのラムダだけをログに記録するようにポリシーを細かく設定することができます。
{
"Sid": "EnableLogsForWantedLambdaTriggers",
"Resource": "*",
"Condition": {
"ArnEquals": {
"aws:SourceArn": "arn:aws:lambda:REGION:ACCOUNT-ID:function:FUNCTION-NAME"
}
},
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Effect": "Allow"
}
が、このように何もログがCloudWatchのに送信されません:。私は政策の条件パラメータを使用していることを行うために、ソースARNは間違っていると思いますが、正しいARNを見つけることができません。
手がかりはありますか?
私はあなたが同様にあなたのCloudFormationでラムダを作成していると仮定します。
たとえば、次は生産のものを無視して、関数の唯一の開発バージョンを有効にするのだろうか? "Fn :: GetAtt"で正しいARNを取得できるはずです:["FUNCTION-NAME"、 "Arn"] ' – Squirrel
私は、ログを削除したり、見ている。私はすべての機能ログを作成してから特定のものを選択し、それらへのアクセスを拒否する前にそれを行います。 – arjabbar
残念ながら、コストの大部分はログ保存サイズではなくCloudWatchコールに関連しているため、有効期限を1日に設定するだけでは不十分です –