web-dev-qa-db-ja.com

AWSラムダのロググループを指定しますか?

AWSラムダがログを記録するCloudWatchロググループを指定する方法はありますか?ラムダ名から直接生成されるようです。ただし、たとえば、複数のラムダを単一のロググループに集約すると特に便利です。 CloudFormationテンプレートによってラムダが作成されるときにロググループを指定することに特に関心があります。

33
JohnJ

私はそれが可能だとは思わない。

were可能であったとしても、各AWS Lambdaインスタンスは独自のログストリームに書き込みます。そして、異なる呼び出し同じラムダのは同じログストリームに書き込むことができますが(ラムダインスタンスが再利用されるとき)、これは間違いなく異なるラムダの場合ではありません(異なるラムダインスタンスを使用する必要があるため) )。

そのため、複数のログストリームを集約するツールが必要です。もしそうなら、別のロググループからログストリームを集約できるように、もう少し汎用的にすることの問題は何ですか?

11
Leon

実際には、少なくともある程度までは可能です。私も答えを探していて、これを試してみました。これが2つのリソースのスニペットです。ラムダ関数とロググループ:

"MyLambdaFunction": {
    "Type": "AWS::Lambda::Function",
    "DependsOn": "ReadWriteRole",
    "Properties": {
        //snip
    }
},

"MyLambdaFunctionLogGroup": {
    "Type": "AWS::Logs::LogGroup",
    "DependsOn": "MyLambdaFunction",
    "Properties": {
        "LogGroupName": {"Fn::Join": ["", ["/aws/lambda/", {"Ref": "MyLambdaFunction"}]]},
        "RetentionInDays": 14
    }
},

ロググループは、示されているように14日間の保持で作成されたことがわかりました。ラムダ関数を実行すると、このグループにログストリームが作成されます。ただし、スタックを削除すると、ロググループがnotで削除され、保持がnever expireに設定されたようです。おそらくそれで十分なので、ストリームが手に負えなくなることはありません...

24
lingrlongr

答えの1つとして述べられているようにロググループを作成すると、うまくいきます。スタックが削除された後も保持ポリシーを保持するには、DeletionPolicyを追加するだけです。

"MyLambdaFunctionLogGroup": {
  "Type": "AWS::Logs::LogGroup",
  "DependsOn": "MyLambdaFunction",
  "DeletionPolicy": "Retain",
  "Properties": {
    "LogGroupName": {"Fn::Join": ["", ["/aws/lambda/", {"Ref": "MyLambdaFunction"}]]},
    "RetentionInDays": 14
  }
}
6
cardella

面白い。 。 。これを試すと、ロググループは作成されますが、ストリームは書き込まれません。 My Lambdaは引き続きデフォルトのログストリームに書き込みます。 。 。 Lambdaのアクセス許可により、新しいグループへのアクセスが許可されます。

1