2016-08-29 18 views
4

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を見つけることができません。

手がかりはありますか?

+0

私はあなたが同様にあなたのCloudFormationでラムダを作成していると仮定します。

たとえば、次は生産のものを無視して、関数の唯一の開発バージョンを有効にするのだろうか? "Fn :: GetAtt"で正しいARNを取得できるはずです:["FUNCTION-NAME"、 "Arn"] ' – Squirrel

+0

私は、ログを削除したり、見ている。私はすべての機能ログを作成してから特定のものを選択し、それらへのアクセスを拒否する前にそれを行います。 – arjabbar

+0

残念ながら、コストの大部分はログ保存サイズではなくCloudWatchコールに関連しているため、有効期限を1日に設定するだけでは不十分です –

答えて

0

私が見つけた可能性のある回避策は、アクションの呼び出し元ARNではなく、リソースにポリシーを集中させることです。中

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Sid": "EnableLogsForWantedLambdaTriggers", 
     "Resource": [ 
      "arn:aws:logs:<region>:<ID>:log-group:<logGroupName>:log-stream:<logStreamName>" 
     ], 
     "Action": [ 
      "logs:CreateLogGroup", 
      "logs:CreateLogStream", 
      "logs:PutLogEvents" 
     ], 
     "Effect": "Allow" 
    } 
    ] 
} 

を:だから、今私ラムダlogGroupNamelogStreamName(と私は常に、今これらの)場合、私はロガーdocumented naming convention以下、作成されたリソースを超えるアクションのみを許可することができますこの方法で、私は選択された関数バージョン($ LATEST、1,2、...)を希望するラムダおよび/または(ストリーム名に作用する)選択をすることができます。

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Sid": "EnableLogsForWantedLambdaTriggers", 
     "Resource": [ 
      "arn:aws:logs:<region>:<ID>:log-group:<logGroupName>:log-stream:*/*/*/[$LATEST]*" 
     ], 
     "Action": [ 
      "logs:CreateLogGroup", 
      "logs:CreateLogStream", 
      "logs:PutLogEvents" 
     ], 
     "Effect": "Allow" 
    } 
    ] 
} 
関連する問題