Skip to content

LogGroup

The LogGroup resource lets you manage AWS Logs LogGroups which act as containers for log streams that share the same retention, monitoring, and access control settings.

Minimal Example

Create a basic LogGroup with a retention policy and a tag.

ts
import AWS from "alchemy/aws/control";

const logGroup = await AWS.Logs.LogGroup("myLogGroup", {
  logGroupName: "MyApplicationLogs",
  retentionInDays: 14,
  tags: [{
    key: "Environment",
    value: "Production"
  }]
});

Advanced Configuration

Configure a LogGroup with a custom KMS key and field index policies.

ts
const secureLogGroup = await AWS.Logs.LogGroup("secureLogGroup", {
  logGroupName: "SecureApplicationLogs",
  kmsKeyId: "arn:aws:kms:us-west-2:123456789012:key/abcd1234-a123-456a-a12b-a123b4cd56ef",
  fieldIndexPolicies: [{
    field: "userId",
    index: "true"
  }],
  retentionInDays: 30,
  tags: [{
    key: "Application",
    value: "MySecureApp"
  }]
});

Adoption of Existing LogGroup

Adopt an existing LogGroup instead of failing if it already exists.

ts
const existingLogGroup = await AWS.Logs.LogGroup("existingLogGroup", {
  logGroupName: "ExistingApplicationLogs",
  adopt: true
});

Data Protection Policy

Create a LogGroup with a data protection policy for enhanced security.

ts
const protectedLogGroup = await AWS.Logs.LogGroup("protectedLogGroup", {
  logGroupName: "ProtectedApplicationLogs",
  dataProtectionPolicy: {
    version: "2012-10-17",
    statement: [{
      effect: "Allow",
      action: "logs:PutLogEvents",
      resource: "arn:aws:logs:us-west-2:123456789012:log-group:ProtectedApplicationLogs:*",
      condition: {
        test: "StringEquals",
        variable: "aws:username",
        values: ["admin"]
      }
    }]
  },
  retentionInDays: 365
});