Reference: AWS: CloudWatchLogs
dependencies {
implementation(platform("org.http4k:http4k-bom:6.36.0.0"))
implementation("org.http4k:http4k-connect-amazon-cloudwatchlogs")
implementation("org.http4k:http4k-connect-amazon-cloudwatchlogs-fake")
}
The CloudWatchLogs connector provides the following Actions:
- CreateLogGroup
- CreateLogStream
- DeleteLogGroup
- DeleteLogStream
- FilterLogEvents
- PutLogEvents
The client APIs utilise the http4k-platform-aws module for request signing, which means no dependencies on the incredibly fat
Amazon-SDK JARs. This means this integration is perfect for running Serverless Lambdas where binary size is a
performance factor.
Example usage
Kotlin
example.kt
package content.ecosystem.connect.reference.amazon.cloudwatchlogs
import dev.forkhandles.result4k.Result
import org.http4k.aws.AwsCredentials
import org.http4k.client.JavaHttpClient
import org.http4k.connect.RemoteFailure
import org.http4k.connect.amazon.cloudwatchlogs.CloudWatchLogs
import org.http4k.connect.amazon.cloudwatchlogs.FakeCloudWatchLogs
import org.http4k.connect.amazon.cloudwatchlogs.Http
import org.http4k.connect.amazon.cloudwatchlogs.action.PutLogEventsResponse
import org.http4k.connect.amazon.cloudwatchlogs.model.LogGroupName
import org.http4k.connect.amazon.cloudwatchlogs.model.LogStreamName
import org.http4k.connect.amazon.cloudwatchlogs.putLogEvents
import org.http4k.connect.amazon.core.model.Region
import org.http4k.core.HttpHandler
import org.http4k.filter.debug
const val USE_REAL_CLIENT = false
val http: HttpHandler = if (USE_REAL_CLIENT) JavaHttpClient() else FakeCloudWatchLogs()
// create a client
val cloudWatchLogs =
CloudWatchLogs.Http(Region.US_EAST_1, { AwsCredentials("accessKeyId", "secretKey") }, http.debug())
val result: Result<PutLogEventsResponse, RemoteFailure> = cloudWatchLogs.putLogEvents(
LogGroupName.of("foobar"),
LogStreamName.of("stream"),
emptyList()
)
fun main() {
println(result)
}
Default Fake port: 56514
To start:
Kotlin
fake.kt
package content.ecosystem.connect.reference.amazon.cloudwatchlogs
import org.http4k.chaos.start
import org.http4k.connect.amazon.cloudwatchlogs.FakeCloudWatchLogs
val fakeCloudWatchLogs = FakeCloudWatchLogs().start()
