Skip to content

Releases: optiflowic/kumolo

v0.2.3

Choose a tag to compare

@hisanari-dev hisanari-dev released this 19 Jun 12:30
1703503

What's Changed

Added

S3

  • PutObjectLockConfiguration with DefaultRetention now enforces the configured mode (GOVERNANCE / COMPLIANCE) and period (days or years) on every new object uploaded via PutObject, CopyObject, and CompleteMultipartUpload
  • BucketLifecycle now evaluates NoncurrentVersionExpiration and NoncurrentVersionTransition rules
  • BucketLifecycle now accepts the x-amz-transition-default-minimum-object-size request header (required by Terraform AWS Provider v6)
  • BucketReplication now replicates delete markers when DeleteMarkerReplication is enabled in the replication configuration
  • BucketReplication now supports tag-based filter rules (Filter.Tag and Filter.And.Tags) in addition to key prefix matching
  • Presigned POST (POST Object): browser-based direct-to-S3 uploads via HTML multipart form; supports ${filename} substitution in the object key and success_action_status / success_action_redirect response control

Server

  • Request logs now include method, path, status code, and latency in a structured, color-coded format; color is disabled automatically when stderr is not a terminal or NO_COLOR is set

Fixed

S3

  • PutBucketVersioning now returns InvalidBucketState when attempting to suspend versioning on an Object Lock-enabled bucket

Server

  • Fixed Windows build failure caused by syscall.Stderr (uintptr) being incompatible with term.IsTerminal after golang.org/x/term v0.44.0 unified the signature to int; replaced with int(os.Stderr.Fd())

Full Changelog: v0.2.2...v0.2.3

v0.2.2

Choose a tag to compare

@hisanari-dev hisanari-dev released this 14 Jun 08:02
9032bd4

What's Changed

Added

DynamoDB

  • TagResource and UntagResource now accept index ARNs (e.g. table/Name/index/IndexName) in addition to table ARNs

S3

  • ListObjects and ListObjectsV2 now support encoding-type=url; key names, prefixes, delimiters, and markers are percent-encoded in the response
  • CopyObject now supports x-amz-tagging-directive (COPY or REPLACE); COPY (default) preserves source tags, REPLACE applies tags from x-amz-tagging
  • CopyObject now evaluates x-amz-copy-source-if-match, x-amz-copy-source-if-none-match, x-amz-copy-source-if-modified-since, and x-amz-copy-source-if-unmodified-since
  • CompleteMultipartUpload now applies x-amz-tagging from the CreateMultipartUpload request to the final object

Fixed

DynamoDB

  • TagResource and UntagResource now enforce the 50-tag limit and key/value length constraints (key: 1–128, value: 0–256), returning ValidationException for violations

KMS

  • CreateKey now rejects ECC_SECG_P256K1 as KeySpec with UnsupportedOperationException immediately; previously the key was created but GetPublicKey failed later

STS

  • AssumeRole and GetSessionToken now validate DurationSeconds (AssumeRole: 900–43200, GetSessionToken: 900–129600), returning ValidationError for out-of-range values

Full Changelog: v0.2.1...v0.2.2

v0.2.1

Choose a tag to compare

@hisanari-dev hisanari-dev released this 12 Jun 15:04
269babd

What's Changed

Fixed

S3

  • CopyObject and all multipart upload operations now enforce ACL permission checks for anonymous requests; previously anonymous callers could bypass ACL restrictions on these paths

STS

  • AssumeRole now validates RoleArn (length 20–2048) and RoleSessionName (length 2–64, pattern [\w+=,.@-]*), returning ValidationError for out-of-range or malformed inputs

KMS

  • CreateKey now persists the Tags parameter; previously tags were accepted but silently discarded, causing Terraform's default_tags mechanism to loop indefinitely on plan/apply

DynamoDB

  • CreateTable now persists the Tags parameter; previously tags were accepted but silently discarded

Full Changelog: https://github.com/optiflowic/kumolo/blob/main/CHANGELOG.md

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 11 Jun 10:27
877f51a

What's New

KMS (new service)

  • Core key management: CreateKey, DescribeKey, ListKeys, GetKeyPolicy, PutKeyPolicy
  • Data plane: GenerateDataKey, GenerateDataKeyWithoutPlaintext, GenerateDataKeyPair, GenerateDataKeyPairWithoutPlaintext, Encrypt, Decrypt
  • Key aliases: CreateAlias, DeleteAlias, UpdateAlias, ListAliases
  • Key lifecycle: EnableKey, DisableKey, ScheduleKeyDeletion, CancelKeyDeletion
  • Key rotation: EnableKeyRotation, DisableKeyRotation, GetKeyRotationStatus, RotateKeyOnDemand, ListKeyRotations
  • Grant management: CreateGrant, ListGrants, RetireGrant, RevokeGrant, ListRetirableGrants
  • Tagging: TagResource, UntagResource, ListResourceTags

S3

  • SelectObjectContent — CSV and JSON input/output with SQL expression evaluation
  • SSE-C: server-side encryption with customer-provided keys (x-amz-server-side-encryption-customer-* headers validated and stored on PutObject, GetObject, HeadObject, UploadPart, CopyObject)
  • SSE header validation: x-amz-server-side-encryption now rejects invalid values; AES256, aws:kms, and aws:kms:dsse accepted
  • SSE-KMS integration: KMS GenerateDataKey called on object writes when a KMS key is specified; x-amz-server-side-encryption-aws-kms-key-id resolved and echoed in responses
  • BucketKeyEnabled request/response header and object metadata
  • Default encryption applied to PutObject, CopyObject, and CreateMultipartUpload when a bucket default encryption rule is configured
  • BucketLogging: access log records now delivered to the configured target bucket and prefix
  • BucketReplication: objects now replicated to the configured destination bucket on PutObject, CopyObject, and multipart upload completion

DynamoDB

  • PartiQL: ExecuteStatement, BatchExecuteStatement, ExecuteTransaction
  • ReturnValuesOnConditionCheckFailure on PartiQL write statements
  • DynamoDB Streams: ListStreams, DescribeStream, GetShardIterator, GetRecords

Go testing library

  • pkg/kumolo: in-process Go testing library — start kumolo in a httptest.Server with a single call, no Docker required

Bug Fixes

S3

  • ACL operations (GetBucketAcl, PutBucketAcl, GetObjectAcl, PutObjectAcl) stored grants but never enforced them — previously stored grants are now enforced on GetObject / PutObject
  • Lifecycle rule Expiration.Date (absolute expiry date) and ExpiredObjectDeleteMarker were never evaluated by the background enforcement loop

DynamoDB

  • ReturnConsumedCapacity: ConsumedCapacity (or ConsumedCapacities) was accepted as a parameter but omitted from all responses; it is now included

Full Changelog

https://github.com/optiflowic/kumolo/blob/main/CHANGELOG.md

v0.1.1

Choose a tag to compare

@hisanari-dev hisanari-dev released this 28 May 13:27
d3e916b

Fixed

DynamoDB

  • CreateTable returned ResourceInUseException when a previous failed attempt left an orphan directory — table existence is now determined by the presence of the .table.json metadata file, not the directory
  • CreateTable can now reuse an orphan directory left by a failed prior attempt instead of failing with a directory-exists error
  • ListTables included orphan directories (no .table.json) in its output, causing DescribeTable to return ResourceNotFoundException for the same name
  • ListTables silently swallowed non-ErrNotExist I/O errors from stat; these are now propagated to the caller
  • TransactWriteItems did not roll back writes already applied to disk when a later write in Phase 2 failed, violating atomicity; each item's pre-write state is now snapshotted and restored in reverse order on failure

Full Changelog: https://github.com/optiflowic/kumolo/blob/main/CHANGELOG.md

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 24 May 02:53
29de554

Changelog

Read more