Destination ​
The Destination resource lets you manage AWS Logs Destinations for routing log events to AWS services. A destination is an AWS resource that allows you to send logs from Amazon CloudWatch Logs to other services like Amazon Kinesis Data Streams or Amazon Kinesis Data Firehose.
Minimal Example ​
Create a basic log destination that sends logs to a Kinesis Data Stream.
ts
import AWS from "alchemy/aws/control";
const logDestination = await AWS.Logs.Destination("myLogDestination", {
DestinationName: "MyKinesisStream",
TargetArn: "arn:aws:kinesis:us-east-1:123456789012:stream/my-kinesis-stream",
RoleArn: "arn:aws:iam::123456789012:role/myCloudWatchLogsRole",
DestinationPolicy: JSON.stringify({
Version: "2012-10-17",
Statement: [
{
Effect: "Allow",
Principal: {
Service: "logs.amazonaws.com"
},
Action: "kinesis:PutRecord",
Resource: "arn:aws:kinesis:us-east-1:123456789012:stream/my-kinesis-stream"
}
]
})
});
Advanced Configuration ​
Configure a log destination with a more specific IAM policy for controlling access.
ts
const advancedLogDestination = await AWS.Logs.Destination("advancedLogDestination", {
DestinationName: "AdvancedKinesisStream",
TargetArn: "arn:aws:kinesis:us-east-1:123456789012:stream/advanced-kinesis-stream",
RoleArn: "arn:aws:iam::123456789012:role/myAdvancedCloudWatchLogsRole",
DestinationPolicy: JSON.stringify({
Version: "2012-10-17",
Statement: [
{
Effect: "Allow",
Principal: {
Service: "logs.amazonaws.com"
},
Action: [
"kinesis:PutRecord",
"kinesis:PutRecords"
],
Resource: "arn:aws:kinesis:us-east-1:123456789012:stream/advanced-kinesis-stream"
},
{
Effect: "Allow",
Principal: {
Service: "logs.amazonaws.com"
},
Action: "iam:PassRole",
Resource: "arn:aws:iam::123456789012:role/myAdvancedCloudWatchLogsRole"
}
]
})
});
Adoption of Existing Resource ​
If you want to adopt an existing log destination resource instead of failing if it already exists, you can set the adopt property to true.
ts
const adoptLogDestination = await AWS.Logs.Destination("adoptLogDestination", {
DestinationName: "ExistingLogDestination",
TargetArn: "arn:aws:kinesis:us-east-1:123456789012:stream/existing-kinesis-stream",
RoleArn: "arn:aws:iam::123456789012:role/myExistingCloudWatchLogsRole",
adopt: true
});