Par défaut, lorsque je crée une fonction Lambda, le groupe de journaux CloudWatch est défini sur Never Expire. Est-il possible de définir l'expiration (par exemple, 14 jours) afin que je n'ai pas à le définir manuellement à partir de la console après la création?
Mis à jour n ° 1
Merci à @jens walter answer ceci est un extrait de code montrant comment résoudre le problème
Resources:
LambdaFunction:
Type: AWS::Serverless::Function
Properties:
Handler: index.handler
Runtime: nodejs6.10
CodeUri: <your code uri>
Policies: <your policies>
LambdaFunctionLogGroup:
Type: "AWS::Logs::LogGroup"
DependsOn: "LambdaFunction"
Properties:
RetentionInDays: 14
LogGroupName: !Join ["", ["/aws/lambda/", !Ref LambdaFunction]]
Si vous créez votre Lambda via la console, il n'est pas possible de définir la conservation des journaux en conséquence. Il n'est également pas possible de définir une rétention par défaut pour tous les journaux CloudWatch.
CloudFormation est le seul moyen d'influencer la conservation des journaux. Dans ce cas, vous devez déployer votre système Lambda via CloudFormation, puis définir un groupe logistique correspondant avec une rétention personnalisée dans ce modèle.
Vous pouvez réellement modifier la durée de conservation du journal après avoir créé votre Lambda dans la console, mais vous devez le faire à partir de la console CloudWatch.
Si vous accédez à la console CloudWatch et affichez les journaux (CloudWatch> Groupes de journaux), vous remarquerez que les données de la colonne Expire Events After sont des liens. En cliquant sur l'un de ceux-ci, vous pouvez modifier l'expiration.
Vous pouvez utiliser Depends On
dans CloudFormation. Faites quelque chose comme ça:
Resources:
LambdaFunction:
Type: AWS::Serverless::Function
DependsOn: LambdaLogGroup
Properties:
FunctionName: 'LambdaName'
Handler: <handlerPath>
Runtime: Java8
MemorySize: 512
LambdaLogGroup:
Type: AWS::Logs::LogGroup
Properties:
LogGroupName: '/aws/lambda/LambdaLogGroup'
RetentionInDays: 30