Используйте настраиваемый ресурс лямбда в вашем облаке. Пользовательский ресурс будет запущен автоматически с первого раза и обновит политику хранения существующей группы журналов. Если вам это нужно, вы можете каждый раз запускать свой собственный лямбда-ресурс, а затем использовать шаблонизатор, такой как jinja2.
import boto3
client = boto3.client('logs')
response = client.put_retention_policy(
logGroupName='string',
retentionInDays=123
)
Вы можете в основном заставить свой шаблон CF делать (почти) все, что вы хотите, используя Custom Resource
Дополнительная информация (Boto3, вы можете найти соответствующий SDK для языка, который вы используете) - https://boto3.amazonaws.com/v1/documentation/api/1.9.42/reference/services/logs.html#CloudWatchLogs.Client.put_retention_policy
РЕДАКТИРОВАТЬ: В шаблоне CloudFormation это будет выглядеть примерно так:
LogRetentionSetFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: src
Handler: set_retention_period.handler
Role: !GetAtt LambdaRole.Arn
DeploymentPreference:
Type: AllAtOnce
PermissionForLogRetentionSetup:
Type: AWS::Lambda::Permission
Properties:
Action: lambda:invokeFunction
FunctionName:
Fn::GetAtt: [ LogRetentionSetFunction, Arn ]
Principal: lambda.amazonaws.com
InvokeLambdaFunctionToSetLogRetention:
DependsOn: [PermissionForLogRetentionSetup]
Type: Custom::SetLogRetention
Properties:
ServiceToken: !GetAtt LogRetentionSetFunction.Arn
StackName: !Ref AWS::StackName
AnyVariable: "Choose whatever you want to send"
Tags:
'owner': !Ref owner
'task': !Ref task
Лямбда-функция будет иметь код, который устанавливает сохранение журнала в соответствии с кодом, который я уже указывал ранее.
Для получения дополнительной информации, пожалуйста, Google "пользовательский ресурс лямбда с поддержкой". Также, чтобы вы начали, я добавил чернила ниже:
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-custom-resources.html