AWS CDK constructs for ImmuKV - Immutable key-value store using S3 versioning
Project description
cdk-immukv
AWS CDK constructs for deploying ImmuKV infrastructure.
Installation
TypeScript/JavaScript
npm install cdk-immukv
Python
pip install cdk-immukv
Usage
Basic Setup
TypeScript
import * as cdk from 'aws-cdk-lib';
import { ImmuKV } from 'cdk-immukv';
const app = new cdk.App();
const stack = new cdk.Stack(app, 'MyStack');
new ImmuKV(stack, 'ImmuKV', {
bucketName: 'my-immukv-bucket',
s3Prefix: 'myapp/',
});
Python
import aws_cdk as cdk
from cdk_immukv import ImmuKV
app = cdk.App()
stack = cdk.Stack(app, "MyStack")
ImmuKV(stack, "ImmuKV",
bucket_name="my-immukv-bucket",
s3_prefix="myapp/",
)
S3 Event Notifications
You can optionally configure S3 event notifications to trigger when log entries are created. This supports Lambda functions, SNS topics, and SQS queues.
All notification destinations can be configured using the onLogEntryCreated property. Destinations can be in the same stack or different stacks - the Construct pattern handles this cleanly.
TypeScript - Lambda Trigger
import * as cdk from 'aws-cdk-lib';
import * as lambda from 'aws-cdk-lib/aws-lambda';
import * as s3n from 'aws-cdk-lib/aws-s3-notifications';
import { ImmuKV } from 'cdk-immukv';
const app = new cdk.App();
const stack = new cdk.Stack(app, 'MyStack');
// Create a Lambda function
const processorFn = new lambda.Function(stack, 'LogProcessor', {
runtime: lambda.Runtime.PYTHON_3_11,
handler: 'index.handler',
code: lambda.Code.fromAsset('lambda'),
});
// Configure ImmuKV to trigger the Lambda on log entry creation
new ImmuKV(stack, 'ImmuKV', {
bucketName: 'my-immukv-bucket',
onLogEntryCreated: new s3n.LambdaDestination(processorFn),
});
TypeScript - SNS Topic
import * as cdk from 'aws-cdk-lib';
import * as sns from 'aws-cdk-lib/aws-sns';
import * as s3n from 'aws-cdk-lib/aws-s3-notifications';
import { ImmuKV } from 'cdk-immukv';
const app = new cdk.App();
const stack = new cdk.Stack(app, 'MyStack');
// Create SNS topic
const topic = new sns.Topic(stack, 'LogEntryTopic');
// Configure ImmuKV to publish to SNS on log entry creation
new ImmuKV(stack, 'ImmuKV', {
bucketName: 'my-immukv-bucket',
onLogEntryCreated: new s3n.SnsDestination(topic),
});
TypeScript - SQS Queue
import * as cdk from 'aws-cdk-lib';
import * as sqs from 'aws-cdk-lib/aws-sqs';
import * as s3n from 'aws-cdk-lib/aws-s3-notifications';
import { ImmuKV } from 'cdk-immukv';
const app = new cdk.App();
const stack = new cdk.Stack(app, 'MyStack');
// Create SQS queue
const queue = new sqs.Queue(stack, 'LogEntryQueue');
// Configure ImmuKV to send to SQS on log entry creation
new ImmuKV(stack, 'ImmuKV', {
bucketName: 'my-immukv-bucket',
onLogEntryCreated: new s3n.SqsDestination(queue),
});
Python - Lambda Trigger
import aws_cdk as cdk
from aws_cdk import aws_lambda as lambda_
from aws_cdk.aws_s3_notifications import LambdaDestination
from cdk_immukv import ImmuKV
app = cdk.App()
stack = cdk.Stack(app, "MyStack")
# Create Lambda function
processor_fn = lambda_.Function(stack, "LogProcessor",
runtime=lambda_.Runtime.PYTHON_3_11,
handler="index.handler",
code=lambda_.Code.from_asset("lambda"),
)
# Configure ImmuKV with Lambda trigger
ImmuKV(stack, "ImmuKV",
bucket_name="my-immukv-bucket",
on_log_entry_created=LambdaDestination(processor_fn),
)
API
The ImmuKV construct accepts the following properties:
bucketName(optional): Name for the S3 bucket. If not specified, an auto-generated bucket name will be used.s3Prefix(optional): Prefix for S3 keysonLogEntryCreated(optional): S3 notification destination for log entry eventslogVersionRetention(optional): Duration to retain old log versionslogVersionsToRetain(optional): Number of old log versions to retainkeyVersionRetention(optional): Duration to retain old key object versionskeyVersionsToRetain(optional): Number of old key versions to retain per keyuseKmsEncryption(optional): Enable KMS encryption instead of S3-managed encryption (default: false)
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cdk_immukv-0.1.19.tar.gz.
File metadata
- Download URL: cdk_immukv-0.1.19.tar.gz
- Upload date:
- Size: 31.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2680782b7e9c4d10be77b1ca855f3d0b50e68a815bbca65645073479b746f001
|
|
| MD5 |
4d77dedd6405be2e86211f055914efe9
|
|
| BLAKE2b-256 |
984e35916aa97a7fa5a674897b571f5551fabdac92a564ceb1ffb42fecf3daef
|
Provenance
The following attestation bundles were made for cdk_immukv-0.1.19.tar.gz:
Publisher:
build.yml on Portfoligno/immukv
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cdk_immukv-0.1.19.tar.gz -
Subject digest:
2680782b7e9c4d10be77b1ca855f3d0b50e68a815bbca65645073479b746f001 - Sigstore transparency entry: 894733640
- Sigstore integration time:
-
Permalink:
Portfoligno/immukv@b98fb3008683a4320f467b3f1d6f74a3105be9c2 -
Branch / Tag:
refs/tags/0.1.19 - Owner: https://github.com/Portfoligno
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@b98fb3008683a4320f467b3f1d6f74a3105be9c2 -
Trigger Event:
push
-
Statement type:
File details
Details for the file cdk_immukv-0.1.19-py3-none-any.whl.
File metadata
- Download URL: cdk_immukv-0.1.19-py3-none-any.whl
- Upload date:
- Size: 30.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dcb70b47a46053ac32f7ed58269438e5426d1bccd10af9242f4698fe9af9625d
|
|
| MD5 |
9bb1970c647ec90931256350f13516c2
|
|
| BLAKE2b-256 |
f8ac0b470716e0830fa2c62dd4ac6f2a78f123dc8c806b3eec885bab53d33494
|
Provenance
The following attestation bundles were made for cdk_immukv-0.1.19-py3-none-any.whl:
Publisher:
build.yml on Portfoligno/immukv
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cdk_immukv-0.1.19-py3-none-any.whl -
Subject digest:
dcb70b47a46053ac32f7ed58269438e5426d1bccd10af9242f4698fe9af9625d - Sigstore transparency entry: 894733656
- Sigstore integration time:
-
Permalink:
Portfoligno/immukv@b98fb3008683a4320f467b3f1d6f74a3105be9c2 -
Branch / Tag:
refs/tags/0.1.19 - Owner: https://github.com/Portfoligno
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@b98fb3008683a4320f467b3f1d6f74a3105be9c2 -
Trigger Event:
push
-
Statement type: