AWSラムダがログを記録するCloudWatchロググループを指定する方法はありますか?ラムダ名から直接生成されるようです。ただし、たとえば、複数のラムダを単一のロググループに集約すると特に便利です。 CloudFormationテンプレートによってラムダが作成されるときにロググループを指定することに特に関心があります。
私はそれが可能だとは思わない。
were可能であったとしても、各AWS Lambdaインスタンスは独自のログストリームに書き込みます。そして、異なる呼び出し同じラムダのは同じログストリームに書き込むことができますが(ラムダインスタンスが再利用されるとき)、これは間違いなく異なるラムダの場合ではありません(異なるラムダインスタンスを使用する必要があるため) )。
そのため、複数のログストリームを集約するツールが必要です。もしそうなら、別のロググループからログストリームを集約できるように、もう少し汎用的にすることの問題は何ですか?
実際には、少なくともある程度までは可能です。私も答えを探していて、これを試してみました。これが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に設定されたようです。おそらくそれで十分なので、ストリームが手に負えなくなることはありません...
答えの1つとして述べられているようにロググループを作成すると、うまくいきます。スタックが削除された後も保持ポリシーを保持するには、DeletionPolicyを追加するだけです。
"MyLambdaFunctionLogGroup": {
"Type": "AWS::Logs::LogGroup",
"DependsOn": "MyLambdaFunction",
"DeletionPolicy": "Retain",
"Properties": {
"LogGroupName": {"Fn::Join": ["", ["/aws/lambda/", {"Ref": "MyLambdaFunction"}]]},
"RetentionInDays": 14
}
}
面白い。 。 。これを試すと、ロググループは作成されますが、ストリームは書き込まれません。 My Lambdaは引き続きデフォルトのログストリームに書き込みます。 。 。 Lambdaのアクセス許可により、新しいグループへのアクセスが許可されます。