Настройка возврата журнала для ECS

Я хочу настроить журналирование служб ecs Fargate с помощью CDK

Эти службы имеют два контейнера и одну группу журналов.

var logRetention = logs.RetentionDays.ONE_DAY 

const logGroup = new logs.LogGroup(this, 'ServiceLogGroup', {
  logGroupName: ecsInfos['logGroup'],
  removalPolicy: RemovalPolicy.DESTROY,

});
const nginxContainer = taskDefinitionAdmin.addContainer("NginxContainer", {
  image: nginxImage,
  containerName:ecsInfos['containerNginx'],
  logging: ecs.LogDriver.awsLogs({
    streamPrefix: "log-nginx",
    logRetention:logRetention,
    logGroup,
  }),
});

const djangoContainer = taskDefinitionAdmin.addContainer("DjangoContainer", {
  image: djangoImage,
  containerName:ecsInfos['containerDjango'],
  logging: ecs.LogDriver.awsLogs({
    streamPrefix: "log-django",
    logRetention:logRetention,
    logGroup,
  }),
});

Этот код показывает ошибку ниже.

Error: Cannot specify both `logGroup` and `logRetentionDays`.
    at new AwsLogDriver (/Users/whitebear/MyCode/httproot/proj_cdk/node_modules/aws-cdk-lib/aws-ecs/lib/log-drivers/aws-log-driver.js:1:1214)
    at Function.awsLogs (/Users/whitebear/MyCode/httproot/proj_cdk/node_modules/aws-cdk-lib/aws-ecs/lib/log-drivers/log-driver.js:1:624)
    at new CdkStFargateStack (/Users/whitebear/MyCode/httproot/proj_cdk/lib/cdk_st-fargate-stack.ts:81:30)
    at Object.<anonymous> (/Users/whitebear/MyCode/httproot/proj_cdk/bin/cdk_st.ts:45:17)
    at Module._compile (node:internal/modules/cjs/loader:1159:14)
    at Module.m._compile (/Users/whitebear/MyCode/httproot/proj_cdk/node_modules/ts-node/src/index.ts:1056:23)
    at Module._extensions..js (node:internal/modules/cjs/loader:1213:10)
    at Object.require.extensions.<computed> [as .ts] (/Users/whitebear/MyCode/httproot/proj_cdk/node_modules/ts-node/src/index.ts:1059:12)
    at Module.load (node:internal/modules/cjs/loader:1037:32)
    at Function.Module._load (node:internal/modules/cjs/loader:878:12)

Думаю, мне следует установить logRetention в logs.LogGroup, однако реквизита logRetantion нет.

Как я могу это решить?


74
1

Ответ:

Решено

Если вы создаете LogGroup, вам необходимо установить сохранение в самой группе журналов :

const logGroup = new logs.LogGroup(this, 'ServiceLogGroup', {
  logGroupName: ecsInfos['logGroup'],
  removalPolicy: RemovalPolicy.DESTROY,
  retention: logRetention 
});

При указании конфигурации журнала в определении задачи вы либо указываете существующую группу журналов, либо указываете все остальные параметры для новой группы журналов, которая будет создана для вас.