Documentation
¶
Index ¶
- Constants
- Variables
- type ChildShard
- type ConfigProvider
- type Consumer
- type CreateStreamInput
- type DecreaseStreamRetentionPeriodInput
- type DeleteResourcePolicyInput
- type DeleteStreamInput
- type DeregisterStreamConsumerInput
- type DescribeAccountSettingsOutput
- type DescribeStreamConsumerInput
- type DescribeStreamConsumerOutput
- type DescribeStreamInput
- type DescribeStreamOutput
- type DisableEnhancedMonitoringInput
- type DisableEnhancedMonitoringOutput
- type EnableEnhancedMonitoringInput
- type EnableEnhancedMonitoringOutput
- type GetRecordResult
- type GetRecordsInput
- type GetRecordsOutput
- type GetResourcePolicyInput
- type GetResourcePolicyOutput
- type GetShardIteratorInput
- type GetShardIteratorOutput
- type Handler
- func (h *Handler) ChaosOperations() []string
- func (h *Handler) ChaosRegions() []string
- func (h *Handler) ChaosServiceName() string
- func (h *Handler) ExecuteFISAction(ctx context.Context, action service.FISActionExecution) error
- func (h *Handler) ExtractOperation(c *echo.Context) string
- func (h *Handler) ExtractResource(c *echo.Context) string
- func (h *Handler) FISActions() []service.FISActionDefinition
- func (h *Handler) GetSupportedOperations() []string
- func (h *Handler) Handler() echo.HandlerFunc
- func (h *Handler) MatchPriority() int
- func (h *Handler) Name() string
- func (h *Handler) Purge(ctx context.Context, cutoff time.Time)
- func (h *Handler) Reset()
- func (h *Handler) Restore(ctx context.Context, data []byte) error
- func (h *Handler) RouteMatcher() service.Matcher
- func (h *Handler) Snapshot(ctx context.Context) []byte
- func (h *Handler) StartWorker(ctx context.Context) error
- func (h *Handler) StopWorker()
- func (h *Handler) WithJanitor(interval time.Duration, taskTimeout ...time.Duration) *Handler
- type InMemoryBackend
- func (b *InMemoryBackend) AddStreamInternal(stream *Stream)
- func (b *InMemoryBackend) CountOnDemandStreams(ctx context.Context) int
- func (b *InMemoryBackend) CountOpenShards(ctx context.Context) int
- func (b *InMemoryBackend) CreateStream(ctx context.Context, input *CreateStreamInput) error
- func (b *InMemoryBackend) DecreaseStreamRetentionPeriod(ctx context.Context, input *DecreaseStreamRetentionPeriodInput) error
- func (b *InMemoryBackend) DeleteResourcePolicy(ctx context.Context, input *DeleteResourcePolicyInput) error
- func (b *InMemoryBackend) DeleteStream(ctx context.Context, input *DeleteStreamInput) error
- func (b *InMemoryBackend) DeregisterStreamConsumer(ctx context.Context, input *DeregisterStreamConsumerInput) error
- func (b *InMemoryBackend) DescribeAccountSettings(_ context.Context) (*DescribeAccountSettingsOutput, error)
- func (b *InMemoryBackend) DescribeStream(ctx context.Context, input *DescribeStreamInput) (*DescribeStreamOutput, error)
- func (b *InMemoryBackend) DescribeStreamConsumer(ctx context.Context, input *DescribeStreamConsumerInput) (*DescribeStreamConsumerOutput, error)
- func (b *InMemoryBackend) DisableEnhancedMonitoring(ctx context.Context, input *DisableEnhancedMonitoringInput) (*DisableEnhancedMonitoringOutput, error)
- func (b *InMemoryBackend) EnableEnhancedMonitoring(ctx context.Context, input *EnableEnhancedMonitoringInput) (*EnableEnhancedMonitoringOutput, error)
- func (b *InMemoryBackend) GetRecords(ctx context.Context, input *GetRecordsInput) (*GetRecordsOutput, error)
- func (b *InMemoryBackend) GetResourcePolicy(ctx context.Context, input *GetResourcePolicyInput) (*GetResourcePolicyOutput, error)
- func (b *InMemoryBackend) GetShardIterator(ctx context.Context, input *GetShardIteratorInput) (*GetShardIteratorOutput, error)
- func (b *InMemoryBackend) IncreaseStreamRetentionPeriod(ctx context.Context, input *IncreaseStreamRetentionPeriodInput) error
- func (b *InMemoryBackend) ListAll(_ context.Context) []StreamInfo
- func (b *InMemoryBackend) ListShards(ctx context.Context, input *ListShardsInput) (*ListShardsOutput, error)
- func (b *InMemoryBackend) ListStreamConsumers(ctx context.Context, input *ListStreamConsumersInput) (*ListStreamConsumersOutput, error)
- func (b *InMemoryBackend) ListStreams(ctx context.Context, input *ListStreamsInput) (*ListStreamsOutput, error)
- func (b *InMemoryBackend) ListTagsForResource(ctx context.Context, input *ListTagsForResourceInput) (*ListTagsForResourceOutput, error)
- func (b *InMemoryBackend) MergeShards(ctx context.Context, input *MergeShardsInput) error
- func (b *InMemoryBackend) OnDemandStreamCountLimit(_ context.Context) int
- func (b *InMemoryBackend) Purge(ctx context.Context, cutoff time.Time)
- func (b *InMemoryBackend) PutRecord(ctx context.Context, input *PutRecordInput) (*PutRecordOutput, error)
- func (b *InMemoryBackend) PutRecords(ctx context.Context, input *PutRecordsInput) (*PutRecordsOutput, error)
- func (b *InMemoryBackend) PutResourcePolicy(ctx context.Context, input *PutResourcePolicyInput) error
- func (b *InMemoryBackend) Region() string
- func (b *InMemoryBackend) RegisterStreamConsumer(ctx context.Context, input *RegisterStreamConsumerInput) (*RegisterStreamConsumerOutput, error)
- func (b *InMemoryBackend) Reset()
- func (b *InMemoryBackend) Restore(ctx context.Context, data []byte) error
- func (b *InMemoryBackend) SetOnDemandStreamCountLimit(n int)
- func (b *InMemoryBackend) Snapshot(ctx context.Context) []byte
- func (b *InMemoryBackend) SplitShard(ctx context.Context, input *SplitShardInput) error
- func (b *InMemoryBackend) StartStreamEncryption(ctx context.Context, input *StartStreamEncryptionInput) error
- func (b *InMemoryBackend) StopStreamEncryption(ctx context.Context, input *StopStreamEncryptionInput) error
- func (b *InMemoryBackend) SubscribeToShard(ctx context.Context, input *SubscribeToShardInput) (*SubscribeToShardOutput, error)
- func (b *InMemoryBackend) TagResource(ctx context.Context, input *TagResourceInput) error
- func (b *InMemoryBackend) TaggedStreams() []TaggedEntry
- func (b *InMemoryBackend) UntagResource(ctx context.Context, input *UntagResourceInput) error
- func (b *InMemoryBackend) UpdateAccountSettings(_ context.Context, input *UpdateAccountSettingsInput) (*UpdateAccountSettingsOutput, error)
- func (b *InMemoryBackend) UpdateMaxRecordSize(ctx context.Context, input *UpdateMaxRecordSizeInput) error
- func (b *InMemoryBackend) UpdateShardCount(ctx context.Context, input *UpdateShardCountInput) (*UpdateShardCountOutput, error)
- func (b *InMemoryBackend) UpdateStreamMode(ctx context.Context, input *UpdateStreamModeInput) error
- func (b *InMemoryBackend) UpdateStreamWarmThroughput(ctx context.Context, input *UpdateStreamWarmThroughputInput) (*UpdateStreamWarmThroughputOutput, error)
- func (b *InMemoryBackend) WithKMSValidator(v KMSKeyValidator) *InMemoryBackend
- type IncreaseStreamRetentionPeriodInput
- type Janitor
- type KMSKeyValidator
- type ListShardsInput
- type ListShardsOutput
- type ListStreamConsumersInput
- type ListStreamConsumersOutput
- type ListStreamsInput
- type ListStreamsOutput
- type ListTagsForResourceInput
- type ListTagsForResourceOutput
- type MergeShardsInput
- type MinimumThroughputBillingCommitmentInput
- type MinimumThroughputBillingCommitmentOutput
- type Provider
- type PutRecordInput
- type PutRecordOutput
- type PutRecordsEntry
- type PutRecordsInput
- type PutRecordsOutput
- type PutRecordsResultEntry
- type PutResourcePolicyInput
- type Record
- type RegisterStreamConsumerInput
- type RegisterStreamConsumerOutput
- type Settings
- type Shard
- type ShardDescription
- type ShardIterator
- type SplitShardInput
- type StartStreamEncryptionInput
- type StartingPosition
- type StopStreamEncryptionInput
- type StorageBackend
- type Stream
- type StreamInfo
- type StreamModeDetails
- type SubscribeToShardEvent
- type SubscribeToShardInput
- type SubscribeToShardOutput
- type TagResourceInput
- type TaggedEntry
- type UntagResourceInput
- type UpdateAccountSettingsInput
- type UpdateAccountSettingsOutput
- type UpdateMaxRecordSizeInput
- type UpdateShardCountInput
- type UpdateShardCountOutput
- type UpdateStreamModeInput
- type UpdateStreamWarmThroughputInput
- type UpdateStreamWarmThroughputOutput
- type WarmThroughputObject
Constants ¶
const ( // StreamModeProvisioned is the PROVISIONED stream mode. StreamModeProvisioned = "PROVISIONED" // StreamModeOnDemand is the ON_DEMAND stream mode. StreamModeOnDemand = "ON_DEMAND" )
Variables ¶
var ( ErrStreamNotFound = awserr.New("ResourceNotFoundException", awserr.ErrNotFound) ErrStreamAlreadyExists = awserr.New("ResourceInUseException", awserr.ErrAlreadyExists) // ErrStreamHasConsumers is returned by DeleteStream when the stream has // registered enhanced fan-out consumers and EnforceConsumerDeletion is // unset or false (real DeleteStreamInput.EnforceConsumerDeletion doc // comment: "the call to DeleteStream fails with a ResourceInUseException"). ErrStreamHasConsumers = awserr.New("ResourceInUseException", awserr.ErrConflict) ErrInvalidArgument = awserr.New("InvalidArgumentException", awserr.ErrInvalidParameter) ErrUnknownAction = errors.New("UnknownOperationException") ErrShardIteratorExpired = errors.New("ExpiredIteratorException") ErrConsumerNotFound = awserr.New("ResourceNotFoundException", awserr.ErrNotFound) ErrConsumerAlreadyExists = awserr.New("ResourceInUseException", awserr.ErrAlreadyExists) ErrResourcePolicyNotFound = awserr.New("ResourceNotFoundException", awserr.ErrNotFound) ErrProvisionedThroughputExceeded = awserr.New( "ProvisionedThroughputExceededException", errRateExceeded, ) ErrTagLimitExceeded = awserr.New("LimitExceededException", awserr.ErrInvalidParameter) ErrLimitExceeded = awserr.New("LimitExceededException", awserr.ErrInvalidParameter) // ErrKMSNotFound indicates the KMS key referenced by StartStreamEncryption's // KeyId does not exist. Only reachable when a KMSKeyValidator is wired via // WithKMSValidator (see stream_encryption.go); with no validator wired, // KeyId is format-checked only, matching pre-existing behavior for // deployments that don't wire cross-service KMS validation. ErrKMSNotFound = errors.New("KMSNotFoundException") // ErrKMSDisabled indicates the KMS key exists but is disabled or pending // deletion/import, matching the real KMSDisabledException/ // KMSInvalidStateException split (see stream_encryption.go for which // applies to which key state). ErrKMSDisabled = errors.New("KMSDisabledException") // ErrKMSInvalidState indicates the KMS key is in a state (e.g. pending // deletion, pending import) that doesn't allow use for encryption. ErrKMSInvalidState = errors.New("KMSInvalidStateException") // ErrKMSAccessDenied is modeled per the real aws-sdk-go-v2/service/kinesis // error set for StartStreamEncryption/StopStreamEncryption/ // UpdateMaxRecordSize (types.KMSAccessDeniedException), but gopherstack has // no IAM/key-policy evaluation engine to ever produce it -- defined for // wire-shape completeness and left with no trigger path (see PARITY.md gaps). ErrKMSAccessDenied = errors.New("KMSAccessDeniedException") )
Sentinel errors for Kinesis operations.
var ErrNilAppContext = errors.New("kinesis: AppContext must not be nil")
ErrNilAppContext is returned by Init when the AppContext is nil.
var ErrShardCountScaling = errors.New(
"UpdateShardCount cannot scale by more than double or less than half " +
"of the current shard count within a single call",
)
ErrShardCountScaling indicates that an UpdateShardCount target fell outside the AWS per-call scaling window: within a single call the target shard count may not be more than double or less than half of the current open shard count. AWS surfaces this as ValidationException. The sentinel's message is the error text returned to the client.
var ErrValidation = errors.New("kinesis: validation error")
ErrValidation is the sentinel error for Kinesis input validation failures.
Functions ¶
This section is empty.
Types ¶
type ChildShard ¶ added in v1.3.1
type ChildShard struct {
ShardID string
HashKeyRangeStart string
HashKeyRangeEnd string
ParentShards []string
}
ChildShard describes a shard that resulted from splitting or merging the shard a GetRecords call just finished reading (aws-sdk-go-v2 types.ChildShard). Real AWS only returns this "when the end of the current shard is reached" -- i.e. exactly when NextShardIterator is empty because the shard is Closed and fully consumed.
type ConfigProvider ¶
type ConfigProvider interface {
GetKinesisSettings() Settings
}
ConfigProvider is a private interface to extract Kinesis configuration from the abstract AppContext Config.
type Consumer ¶
type Consumer struct {
ConsumerCreationTimestamp time.Time `json:"consumerCreationTimestamp"`
Tags map[string]string `json:"tags,omitempty"`
ConsumerName string `json:"consumerName"`
ConsumerARN string `json:"consumerARN"`
ConsumerStatus string `json:"consumerStatus"`
StreamARN string `json:"streamARN"`
}
Consumer represents a registered Kinesis enhanced fan-out consumer.
type CreateStreamInput ¶
type CreateStreamInput struct {
StreamName string
Region string
AccountID string
StreamMode string
ShardCount int
// MaxRecordSizeInKiB mirrors CreateStreamInput's own field of the same
// name (kinesis@v1.46.4 api_op_CreateStream.go:101-103), not just
// UpdateMaxRecordSize's. Zero means "not specified" -- CreateStream keeps
// defaultMaxRecordSizeBytes, same as an omitted request member.
MaxRecordSizeInKiB int
// WarmThroughputMiBps mirrors CreateStreamInput's own field of the same
// name (kinesis@v1.46.4 api_op_CreateStream.go:119-121). Zero means "not
// specified".
WarmThroughputMiBps int
}
CreateStreamInput is the input for CreateStream.
type DecreaseStreamRetentionPeriodInput ¶
DecreaseStreamRetentionPeriodInput is the input for DecreaseStreamRetentionPeriod.
type DeleteResourcePolicyInput ¶
type DeleteResourcePolicyInput struct {
ResourceARN string
}
DeleteResourcePolicyInput is the input for DeleteResourcePolicy.
type DeleteStreamInput ¶
type DeleteStreamInput struct {
StreamName string
// EnforceConsumerDeletion mirrors the real DeleteStreamInput field: unset
// or false with registered consumers fails the call with
// ResourceInUseException instead of deleting the stream.
EnforceConsumerDeletion bool
}
DeleteStreamInput is the input for DeleteStream.
type DeregisterStreamConsumerInput ¶
type DeregisterStreamConsumerInput struct {
StreamARN string
ConsumerARN string
ConsumerName string
}
DeregisterStreamConsumerInput is the input for DeregisterStreamConsumer.
type DescribeAccountSettingsOutput ¶
type DescribeAccountSettingsOutput struct {
MinimumThroughputBillingCommitment MinimumThroughputBillingCommitmentOutput
}
DescribeAccountSettingsOutput is the output for DescribeAccountSettings.
type DescribeStreamConsumerInput ¶
DescribeStreamConsumerInput is the input for DescribeStreamConsumer.
type DescribeStreamConsumerOutput ¶
type DescribeStreamConsumerOutput struct {
ConsumerDescription Consumer
}
DescribeStreamConsumerOutput is the output for DescribeStreamConsumer.
type DescribeStreamInput ¶
type DescribeStreamInput struct {
StreamName string
// ExclusiveStartShardID resumes shard pagination after the given shard ID.
ExclusiveStartShardID string
// Limit caps the number of ShardDescription entries returned (AWS default
// 100, max 10000). Zero means "use the AWS default".
Limit int
}
DescribeStreamInput is the input for DescribeStream.
type DescribeStreamOutput ¶
type DescribeStreamOutput struct {
StreamCreationTimestamp time.Time
StreamName string
StreamARN string
StreamStatus string
EncryptionType string
StreamMode string
KeyID string
Shards []ShardDescription
EnhancedMonitoring []string
RetentionPeriodHours int
// HasMoreShards indicates the shard list was truncated by Limit and more
// shards can be fetched with a follow-up call using ExclusiveStartShardID.
HasMoreShards bool
// MaxRecordSizeBytes and WarmThroughputMiBps mirror the same-named Stream
// fields (see UpdateMaxRecordSize/UpdateStreamWarmThroughput). Real
// StreamDescriptionSummary carries both (MaxRecordSizeInKiB/WarmThroughput);
// StreamDescription (DescribeStream) does not, so only
// handleDescribeStreamSummary reads these.
MaxRecordSizeBytes int
WarmThroughputMiBps int
}
DescribeStreamOutput is the output for DescribeStream.
type DisableEnhancedMonitoringInput ¶
DisableEnhancedMonitoringInput is the input for DisableEnhancedMonitoring.
type DisableEnhancedMonitoringOutput ¶
type DisableEnhancedMonitoringOutput struct {
StreamName string
CurrentShardLevelMetrics []string
DesiredShardLevelMetrics []string
}
DisableEnhancedMonitoringOutput is the output for DisableEnhancedMonitoring.
type EnableEnhancedMonitoringInput ¶
EnableEnhancedMonitoringInput is the input for EnableEnhancedMonitoring.
type EnableEnhancedMonitoringOutput ¶
type EnableEnhancedMonitoringOutput struct {
StreamName string
CurrentShardLevelMetrics []string
DesiredShardLevelMetrics []string
}
EnableEnhancedMonitoringOutput is the output for EnableEnhancedMonitoring.
type GetRecordResult ¶
type GetRecordResult struct {
ApproximateArrivalTimestamp time.Time
PartitionKey string
SequenceNumber string
Data []byte
}
GetRecordResult is a single record returned by GetRecords.
type GetRecordsInput ¶
GetRecordsInput is the input for GetRecords.
type GetRecordsOutput ¶
type GetRecordsOutput struct {
NextShardIterator string
Records []GetRecordResult
ChildShards []ChildShard
MillisBehindLatest int64
}
GetRecordsOutput is the output for GetRecords.
type GetResourcePolicyInput ¶
type GetResourcePolicyInput struct {
ResourceARN string
}
GetResourcePolicyInput is the input for GetResourcePolicy.
type GetResourcePolicyOutput ¶
type GetResourcePolicyOutput struct {
Policy string
}
GetResourcePolicyOutput is the output for GetResourcePolicy.
type GetShardIteratorInput ¶
type GetShardIteratorInput struct {
Timestamp *time.Time
StreamName string
ShardID string
ShardIteratorType string
StartingSequenceNumber string
}
GetShardIteratorInput is the input for GetShardIterator. Timestamp is a pointer so a genuinely omitted value (nil) can be distinguished from an explicit epoch-zero timestamp; required (non-nil) when ShardIteratorType is AT_TIMESTAMP.
type GetShardIteratorOutput ¶
type GetShardIteratorOutput struct {
ShardIterator string
}
GetShardIteratorOutput is the output for GetShardIterator.
type Handler ¶
type Handler struct {
Backend StorageBackend
DefaultRegion string
AccountID string
// contains filtered or unexported fields
}
Handler is the Echo HTTP handler for Kinesis operations.
func NewHandler ¶
func NewHandler(backend StorageBackend) *Handler
NewHandler creates a new Kinesis Handler.
func (*Handler) ChaosOperations ¶
ChaosOperations returns all operations that can be fault-injected.
func (*Handler) ChaosRegions ¶
ChaosRegions returns all regions this Kinesis instance handles.
func (*Handler) ChaosServiceName ¶
ChaosServiceName returns the lowercase AWS service name for fault rule matching.
func (*Handler) ExecuteFISAction ¶
ExecuteFISAction executes a FIS action against resolved Kinesis targets.
func (*Handler) ExtractOperation ¶
ExtractOperation extracts the Kinesis action from the X-Amz-Target header.
func (*Handler) ExtractResource ¶
ExtractResource extracts the stream name from the JSON request body.
func (*Handler) FISActions ¶
func (h *Handler) FISActions() []service.FISActionDefinition
FISActions returns the FIS action definitions that the Kinesis service supports.
func (*Handler) GetSupportedOperations ¶
GetSupportedOperations returns the list of supported Kinesis operations.
func (*Handler) Handler ¶
func (h *Handler) Handler() echo.HandlerFunc
Handler returns the Echo handler function for Kinesis operations.
func (*Handler) MatchPriority ¶
MatchPriority returns the routing priority for the Kinesis handler.
func (*Handler) Purge ¶
Purge implements service.Purgeable by removing all Kinesis streams older than cutoff.
func (*Handler) Reset ¶
func (h *Handler) Reset()
Reset clears all in-memory state from the backend. It is used by the POST /_gopherstack/reset endpoint for CI pipelines and rapid local development.
func (*Handler) RouteMatcher ¶
RouteMatcher returns a function that matches incoming Kinesis requests.
func (*Handler) Snapshot ¶
Snapshot implements persistence.Persistable by delegating to the backend.
func (*Handler) StartWorker ¶
StartWorker starts the background janitor if one is configured.
func (*Handler) StopWorker ¶
func (h *Handler) StopWorker()
StopWorker stops the background worker if one is configured.
type InMemoryBackend ¶
type InMemoryBackend struct {
OnStreamPurged func(string)
// contains filtered or unexported fields
}
InMemoryBackend implements StorageBackend using in-memory maps.
Streams are keyed by a composite "region/name" key (see streamKey) inside a single flat store.Table, with a secondary store.Index grouping them by region — so same-named streams in different regions remain fully isolated, including their shards, records, and consumers, all of which stay inline fields on Stream (see pkgs/store's package doc: shards/records are the per-stream hot path and are not decomposed into their own tables). fisThroughputFaults and resourcePolicies are NOT store.Table candidates: their value types (a pointer with no self-describing identity, and a bare string) carry no key of their own to hand a Table keyFn, so they remain plain nested maps guarded the same way as before.
func NewInMemoryBackend ¶
func NewInMemoryBackend() *InMemoryBackend
NewInMemoryBackend creates a new empty InMemoryBackend with default account/region.
func NewInMemoryBackendWithConfig ¶
func NewInMemoryBackendWithConfig(accountID, region string) *InMemoryBackend
NewInMemoryBackendWithConfig creates a new InMemoryBackend with the given account ID and region.
func (*InMemoryBackend) AddStreamInternal ¶
func (b *InMemoryBackend) AddStreamInternal(stream *Stream)
AddStreamInternal seeds a stream directly into the backend for testing. Caller must provide a non-nil stream with at least Name and ARN set. The stream is placed in the region encoded in its ARN, falling back to the backend's default region when the ARN carries none.
func (*InMemoryBackend) CountOnDemandStreams ¶ added in v1.3.1
func (b *InMemoryBackend) CountOnDemandStreams(ctx context.Context) int
CountOnDemandStreams returns the number of ON_DEMAND streams in the region carried on ctx, for DescribeLimits' required OnDemandStreamCount member (kinesis@v1.46.4 api_op_DescribeLimits.go:34-45). DescribeLimits is region-scoped in AWS, matching CountOpenShards' convention.
func (*InMemoryBackend) CountOpenShards ¶
func (b *InMemoryBackend) CountOpenShards(ctx context.Context) int
CountOpenShards returns the total number of open (non-closed) shards across every stream in the region carried on ctx. DescribeLimits is region-scoped in AWS, so this counts within a single region.
func (*InMemoryBackend) CreateStream ¶
func (b *InMemoryBackend) CreateStream(ctx context.Context, input *CreateStreamInput) error
CreateStream creates a new Kinesis stream.
func (*InMemoryBackend) DecreaseStreamRetentionPeriod ¶
func (b *InMemoryBackend) DecreaseStreamRetentionPeriod( ctx context.Context, input *DecreaseStreamRetentionPeriodInput, ) error
DecreaseStreamRetentionPeriod decreases the retention period for a stream. Mirroring IncreaseStreamRetentionPeriod, a target equal to the current retention period is an idempotent no-op returning success (HTTP 200), matching real AWS behaviour. A target above the current period or below minRetentionHours (24h) is rejected with InvalidArgumentException.
func (*InMemoryBackend) DeleteResourcePolicy ¶
func (b *InMemoryBackend) DeleteResourcePolicy(ctx context.Context, input *DeleteResourcePolicyInput) error
DeleteResourcePolicy removes the resource-based policy for the given stream or consumer ARN.
func (*InMemoryBackend) DeleteStream ¶
func (b *InMemoryBackend) DeleteStream(ctx context.Context, input *DeleteStreamInput) error
DeleteStream removes a stream.
func (*InMemoryBackend) DeregisterStreamConsumer ¶
func (b *InMemoryBackend) DeregisterStreamConsumer(ctx context.Context, input *DeregisterStreamConsumerInput) error
DeregisterStreamConsumer removes a registered consumer from a stream.
func (*InMemoryBackend) DescribeAccountSettings ¶
func (b *InMemoryBackend) DescribeAccountSettings(_ context.Context) (*DescribeAccountSettingsOutput, error)
DescribeAccountSettings returns the account's minimum throughput billing commitment configuration (kinesis@v1.46.4 api_op_DescribeAccountSettings.go:34-45).
func (*InMemoryBackend) DescribeStream ¶
func (b *InMemoryBackend) DescribeStream( ctx context.Context, input *DescribeStreamInput, ) (*DescribeStreamOutput, error)
DescribeStream returns full stream details including shards.
func (*InMemoryBackend) DescribeStreamConsumer ¶
func (b *InMemoryBackend) DescribeStreamConsumer( ctx context.Context, input *DescribeStreamConsumerInput, ) (*DescribeStreamConsumerOutput, error)
DescribeStreamConsumer returns details about a registered consumer. Lookup is by ConsumerARN, or by StreamARN + ConsumerName.
func (*InMemoryBackend) DisableEnhancedMonitoring ¶
func (b *InMemoryBackend) DisableEnhancedMonitoring( ctx context.Context, input *DisableEnhancedMonitoringInput, ) (*DisableEnhancedMonitoringOutput, error)
DisableEnhancedMonitoring removes shard-level metrics from a stream.
func (*InMemoryBackend) EnableEnhancedMonitoring ¶
func (b *InMemoryBackend) EnableEnhancedMonitoring( ctx context.Context, input *EnableEnhancedMonitoringInput, ) (*EnableEnhancedMonitoringOutput, error)
EnableEnhancedMonitoring adds shard-level metrics to a stream.
func (*InMemoryBackend) GetRecords ¶
func (b *InMemoryBackend) GetRecords(ctx context.Context, input *GetRecordsInput) (*GetRecordsOutput, error)
GetRecords retrieves records starting at the given shard iterator position.
The region is taken from the iterator token (encoded by GetShardIterator), not from ctx, so an iterator issued for one region always reads that region's records even if the GetRecords call carries a different ctx region.
func (*InMemoryBackend) GetResourcePolicy ¶
func (b *InMemoryBackend) GetResourcePolicy( ctx context.Context, input *GetResourcePolicyInput, ) (*GetResourcePolicyOutput, error)
GetResourcePolicy retrieves the resource-based policy for the given stream or consumer ARN.
func (*InMemoryBackend) GetShardIterator ¶
func (b *InMemoryBackend) GetShardIterator( ctx context.Context, input *GetShardIteratorInput, ) (*GetShardIteratorOutput, error)
GetShardIterator returns an iterator for reading records from a shard.
func (*InMemoryBackend) IncreaseStreamRetentionPeriod ¶
func (b *InMemoryBackend) IncreaseStreamRetentionPeriod( ctx context.Context, input *IncreaseStreamRetentionPeriodInput, ) error
IncreaseStreamRetentionPeriod increases the retention period for a stream. A target equal to the current retention period is treated as an idempotent no-op returning success (HTTP 200), matching real AWS behaviour: the Terraform AWS provider calls IncreaseStreamRetentionPeriod on stream create for ANY configured retention_period > 0 (see the provider's resourceStreamCreate, guard `v.(int) > 0`), so a stream created with the default retention_period of 24h receives IncreaseStreamRetentionPeriod(24) against a stream already at 24h. Rejecting that equal value with InvalidArgumentException (as a strict reading of the SDK doc "Must be more than the current retention period" would suggest) breaks every default-retention Terraform stream, so real AWS accepts it. A target below the current period, below minRetentionHours (24h), or above maxRetentionHours (8760h) is rejected with InvalidArgumentException.
func (*InMemoryBackend) ListAll ¶
func (b *InMemoryBackend) ListAll(_ context.Context) []StreamInfo
ListAll returns a snapshot of all streams as StreamInfo values across every region. It is used by the dashboard, which presents a global inventory.
func (*InMemoryBackend) ListShards ¶
func (b *InMemoryBackend) ListShards(ctx context.Context, input *ListShardsInput) (*ListShardsOutput, error)
ListShards returns the shards for a stream.
func (*InMemoryBackend) ListStreamConsumers ¶
func (b *InMemoryBackend) ListStreamConsumers( ctx context.Context, input *ListStreamConsumersInput, ) (*ListStreamConsumersOutput, error)
ListStreamConsumers lists all registered consumers for a stream.
func (*InMemoryBackend) ListStreams ¶
func (b *InMemoryBackend) ListStreams(ctx context.Context, input *ListStreamsInput) (*ListStreamsOutput, error)
ListStreams returns stream names with optional pagination.
AWS contract: results are returned in alphabetical order. When `Limit` is set the response contains at most that many names. Pagination is keyed on either `ExclusiveStartStreamName` or the opaque `NextToken` (which we treat as the previously returned last stream name) so that callers can iterate over arbitrarily large account inventories.
func (*InMemoryBackend) ListTagsForResource ¶
func (b *InMemoryBackend) ListTagsForResource( ctx context.Context, input *ListTagsForResourceInput, ) (*ListTagsForResourceOutput, error)
ListTagsForResource returns the tags associated with a Kinesis resource identified by its ARN -- a stream (tags stored on the stream's internal Tags store, set via TagResource) or, per the real op's doc comment ("the specified Kinesis resource"), an enhanced fan-out consumer (tags stored on Consumer.Tags, set via RegisterStreamConsumer's Tags parameter or TagResource against the consumer's own ARN).
func (*InMemoryBackend) MergeShards ¶
func (b *InMemoryBackend) MergeShards(ctx context.Context, input *MergeShardsInput) error
MergeShards merges two adjacent shards into one. The merged shard spans the combined hash key range of both parent shards.
func (*InMemoryBackend) OnDemandStreamCountLimit ¶ added in v1.3.1
func (b *InMemoryBackend) OnDemandStreamCountLimit(_ context.Context) int
OnDemandStreamCountLimit returns the account's current cap on ON_DEMAND streams, for DescribeLimits' required OnDemandStreamCountLimit member. Real AWS manages this as a Service Quota, not adjustable via UpdateAccountSettings; see SetOnDemandStreamCountLimit for how this backend exposes changing it (a Go-level config knob, not a wire operation).
func (*InMemoryBackend) Purge ¶
func (b *InMemoryBackend) Purge(ctx context.Context, cutoff time.Time)
Purge removes all Kinesis streams and consumers created before the cutoff time.
func (*InMemoryBackend) PutRecord ¶
func (b *InMemoryBackend) PutRecord(ctx context.Context, input *PutRecordInput) (*PutRecordOutput, error)
PutRecord writes a single record to a stream shard.
func (*InMemoryBackend) PutRecords ¶
func (b *InMemoryBackend) PutRecords(ctx context.Context, input *PutRecordsInput) (*PutRecordsOutput, error)
PutRecords writes multiple records to a stream.
Request-level validation errors (empty/oversized batch, unknown stream) fail the whole call with a single top-level exception, matching the AWS contract: only per-record issues (throughput, per-record validation) surface as per-entry ErrorCode/ErrorMessage inside a 200 response.
func (*InMemoryBackend) PutResourcePolicy ¶
func (b *InMemoryBackend) PutResourcePolicy(ctx context.Context, input *PutResourcePolicyInput) error
PutResourcePolicy stores a resource-based policy for the given stream or consumer ARN.
func (*InMemoryBackend) Region ¶
func (b *InMemoryBackend) Region() string
Region returns the AWS region this backend is configured to use as its default.
func (*InMemoryBackend) RegisterStreamConsumer ¶
func (b *InMemoryBackend) RegisterStreamConsumer( ctx context.Context, input *RegisterStreamConsumerInput, ) (*RegisterStreamConsumerOutput, error)
RegisterStreamConsumer registers a new enhanced fan-out consumer on a stream.
func (*InMemoryBackend) Reset ¶
func (b *InMemoryBackend) Reset()
Reset clears all in-memory state from the backend. It is used by the POST /_gopherstack/reset endpoint for CI pipelines and rapid local development.
func (*InMemoryBackend) Restore ¶
func (b *InMemoryBackend) Restore(ctx context.Context, data []byte) error
Restore loads backend state from a JSON snapshot. It implements persistence.Persistable.
func (*InMemoryBackend) SetOnDemandStreamCountLimit ¶ added in v1.3.1
func (b *InMemoryBackend) SetOnDemandStreamCountLimit(n int)
SetOnDemandStreamCountLimit configures the account-level cap CreateStream enforces for ON_DEMAND streams (default defaultOnDemandStreamCountLimit). No real Kinesis wire operation can change this account setting -- it was previously (and incorrectly) exposed as a fabricated field on UpdateAccountSettingsInput; real AWS manages it as a Service Quota. This method is the Go-level replacement, mirroring how WithKMSValidator wires cross-service config outside the wire protocol.
func (*InMemoryBackend) Snapshot ¶
func (b *InMemoryBackend) Snapshot(ctx context.Context) []byte
Snapshot serialises the backend state to JSON. It implements persistence.Persistable. Note: shard sequence number counters are now serialised via the NextSeq field.
func (*InMemoryBackend) SplitShard ¶
func (b *InMemoryBackend) SplitShard(ctx context.Context, input *SplitShardInput) error
SplitShard splits a shard into two at the given new starting hash key.
func (*InMemoryBackend) StartStreamEncryption ¶
func (b *InMemoryBackend) StartStreamEncryption(ctx context.Context, input *StartStreamEncryptionInput) error
StartStreamEncryption enables server-side encryption on a stream.
func (*InMemoryBackend) StopStreamEncryption ¶
func (b *InMemoryBackend) StopStreamEncryption(ctx context.Context, input *StopStreamEncryptionInput) error
StopStreamEncryption disables server-side encryption on a stream.
func (*InMemoryBackend) SubscribeToShard ¶
func (b *InMemoryBackend) SubscribeToShard( ctx context.Context, input *SubscribeToShardInput, ) (*SubscribeToShardOutput, error)
SubscribeToShard delivers records from a shard to an enhanced fan-out consumer. For mock purposes this is a single-shot delivery of all available records.
func (*InMemoryBackend) TagResource ¶
func (b *InMemoryBackend) TagResource(ctx context.Context, input *TagResourceInput) error
TagResource adds or updates tags on a Kinesis resource identified by its ARN -- a stream (the ARN-based counterpart to AddTagsToStream) or an enhanced fan-out consumer.
func (*InMemoryBackend) TaggedStreams ¶ added in v1.2.0
func (b *InMemoryBackend) TaggedStreams() []TaggedEntry
TaggedStreams returns every Kinesis stream that currently has at least one tag, across every region this backend holds streams for.
func (*InMemoryBackend) UntagResource ¶
func (b *InMemoryBackend) UntagResource(ctx context.Context, input *UntagResourceInput) error
UntagResource removes tags from a Kinesis resource identified by its ARN -- a stream (the ARN-based counterpart to RemoveTagsFromStream) or an enhanced fan-out consumer.
func (*InMemoryBackend) UpdateAccountSettings ¶
func (b *InMemoryBackend) UpdateAccountSettings( _ context.Context, input *UpdateAccountSettingsInput, ) (*UpdateAccountSettingsOutput, error)
UpdateAccountSettings sets the account's minimum throughput billing commitment status (kinesis@v1.46.4 api_op_UpdateAccountSettings.go:42-51). This backend has no billing engine: no billing behaviour follows from enabling the commitment. Status/StartedAt/EndedAt only track the requested transition; see MinimumThroughputBillingCommitmentOutput.
func (*InMemoryBackend) UpdateMaxRecordSize ¶
func (b *InMemoryBackend) UpdateMaxRecordSize(ctx context.Context, input *UpdateMaxRecordSizeInput) error
UpdateMaxRecordSize changes the per-record data payload size limit for a stream. The wire input is MaxRecordSizeInKiB (kinesis@v1.46.4 api_op_UpdateMaxRecordSize.go:30-47); this backend stores the limit in bytes on Stream.MaxRecordSizeBytes, so the requested KiB value is converted via bytesPerKiB. The valid range is [defaultMaxRecordSizeBytes, absoluteMaxRecordSizeBytes] (1 MiB - 10 MiB). The real Input has no StreamName member, only StreamARN.
func (*InMemoryBackend) UpdateShardCount ¶
func (b *InMemoryBackend) UpdateShardCount( ctx context.Context, input *UpdateShardCountInput, ) (*UpdateShardCountOutput, error)
UpdateShardCount resizes a stream to the given number of shards. Existing records in the stream are not migrated; new shards start empty.
func (*InMemoryBackend) UpdateStreamMode ¶
func (b *InMemoryBackend) UpdateStreamMode(ctx context.Context, input *UpdateStreamModeInput) error
UpdateStreamMode changes the mode of a stream identified by its ARN.
func (*InMemoryBackend) UpdateStreamWarmThroughput ¶
func (b *InMemoryBackend) UpdateStreamWarmThroughput( ctx context.Context, input *UpdateStreamWarmThroughputInput, ) (*UpdateStreamWarmThroughputOutput, error)
UpdateStreamWarmThroughput configures pre-warmed throughput for a stream (kinesis@v1.46.4 api_op_UpdateStreamWarmThroughput.go:63-70, required WarmThroughputMiBps). Real AWS applies this asynchronously (stream goes UPDATING then back to ACTIVE); this backend has no transient-state model for that (streams are always ACTIVE), so the change is applied synchronously and Current/Target always match on read -- see UpdateStreamWarmThroughputOutput and PARITY.md.
func (*InMemoryBackend) WithKMSValidator ¶ added in v1.2.0
func (b *InMemoryBackend) WithKMSValidator(v KMSKeyValidator) *InMemoryBackend
WithKMSValidator attaches a KMSKeyValidator so StartStreamEncryption can verify a KeyId resolves to a real, usable KMS key. Returns b for chaining.
type IncreaseStreamRetentionPeriodInput ¶
IncreaseStreamRetentionPeriodInput is the input for IncreaseStreamRetentionPeriod.
type Janitor ¶
type Janitor struct {
Backend *InMemoryBackend
Interval time.Duration
// TaskTimeout bounds each individual janitor task. When non-zero, each task
// runs with a child context that expires after this duration, preventing a
// stalled operation from blocking the janitor loop indefinitely.
TaskTimeout time.Duration
// contains filtered or unexported fields
}
Janitor is the Kinesis background worker that enforces per-stream retention periods by evicting records older than stream.RetentionPeriod hours.
func NewJanitor ¶
func NewJanitor(backend *InMemoryBackend, interval time.Duration) *Janitor
NewJanitor creates a new Kinesis Janitor for the given backend. A zero interval falls back to defaultJanitorInterval.
type KMSKeyValidator ¶ added in v1.2.0
type KMSKeyValidator interface {
// ValidateKMSKey resolves keyID against the KMS backend and returns nil if
// the key exists and is usable, or one of ErrKMSNotFound/ErrKMSDisabled/
// ErrKMSInvalidState (kinesis sentinels) describing why it is not.
ValidateKMSKey(ctx context.Context, keyID string) error
}
KMSKeyValidator optionally validates a KMS KeyId against a real KMS backend. Implemented by an adapter wrapping the KMS service backend and attached via WithKMSValidator (mirrors services/ssm's KMSEncryptor injection pattern -- see cli.go's wireKinesisKMS). When no validator is wired, StartStreamEncryption still enforces the KeyId *shape* AWS documents (UUID / key ARN / alias ARN / "alias/..." name) but cannot know whether the key actually exists, is disabled, or is pending deletion -- those KMS-specific exceptions require real cross-service key state.
type ListShardsInput ¶
type ListShardsInput struct {
ShardFilterTimestamp *time.Time
StreamName string
NextToken string
ExclusiveStartShardID string
ShardFilter string
ShardFilterType string
ShardFilterShardID string
MaxResults int
}
ListShardsInput is the input for ListShards.
type ListShardsOutput ¶
type ListShardsOutput struct {
NextToken string
Shards []ShardDescription
}
ListShardsOutput is the output for ListShards.
type ListStreamConsumersInput ¶
ListStreamConsumersInput is the input for ListStreamConsumers.
type ListStreamConsumersOutput ¶
ListStreamConsumersOutput is the output for ListStreamConsumers.
type ListStreamsInput ¶
ListStreamsInput is the input for ListStreams.
type ListStreamsOutput ¶
ListStreamsOutput is the output for ListStreams.
type ListTagsForResourceInput ¶
type ListTagsForResourceInput struct {
ResourceARN string
}
ListTagsForResourceInput is the input for ListTagsForResource.
type ListTagsForResourceOutput ¶
ListTagsForResourceOutput is the output for ListTagsForResource.
type MergeShardsInput ¶
type MergeShardsInput struct {
StreamName string
StreamARN string
ShardToMerge string
AdjacentShardToMerge string
}
MergeShardsInput is the input for MergeShards.
type MinimumThroughputBillingCommitmentInput ¶ added in v1.3.1
type MinimumThroughputBillingCommitmentInput struct {
// Status is required: minimumThroughputBillingCommitmentEnabled or
// minimumThroughputBillingCommitmentDisabled.
Status string
}
MinimumThroughputBillingCommitmentInput is the input shape for the commitment status requested via UpdateAccountSettings (types.MinimumThroughputBillingCommitmentInput; Status is its only, required, member -- kinesis@v1.46.4 types/types.go:168-176).
type MinimumThroughputBillingCommitmentOutput ¶ added in v1.3.1
type MinimumThroughputBillingCommitmentOutput struct {
EarliestAllowedEndAt time.Time `json:"earliestAllowedEndAt"`
EndedAt time.Time `json:"endedAt"`
StartedAt time.Time `json:"startedAt"`
Status string `json:"status"`
}
MinimumThroughputBillingCommitmentOutput is the account's current minimum throughput billing commitment (types.MinimumThroughputBillingCommitmentOutput, kinesis@v1.46.4 types/types.go:178-197). This backend has no billing engine: Status/StartedAt/EndedAt only track the state transitions UpdateAccountSettings requests; EarliestAllowedEndAt is never populated since computing it needs a commitment-window model this backend doesn't have (see PARITY.md gaps), and Status never reports minimumThroughputBillingCommitmentEnabledUntilEnd for the same reason.
type Provider ¶
type Provider struct{}
Provider implements service.Provider for the Kinesis service.
func (*Provider) Init ¶
func (p *Provider) Init(ctx *service.AppContext) (service.Registerable, error)
Init initializes the Kinesis service backend and handler.
type PutRecordInput ¶
type PutRecordInput struct {
StreamName string
PartitionKey string
ExplicitHashKey string
Data []byte
}
PutRecordInput is the input for PutRecord.
type PutRecordOutput ¶
PutRecordOutput is the output for PutRecord.
type PutRecordsEntry ¶
PutRecordsEntry is a single entry in a PutRecords request.
type PutRecordsInput ¶
type PutRecordsInput struct {
StreamName string
Records []PutRecordsEntry
}
PutRecordsInput is the input for PutRecords.
type PutRecordsOutput ¶
type PutRecordsOutput struct {
Records []PutRecordsResultEntry
FailedRecordCount int
}
PutRecordsOutput is the output for PutRecords.
type PutRecordsResultEntry ¶
type PutRecordsResultEntry struct {
ShardID string
SequenceNumber string
ErrorCode string
ErrorMessage string
}
PutRecordsResultEntry is a single result entry in a PutRecords response.
type PutResourcePolicyInput ¶
PutResourcePolicyInput is the input for PutResourcePolicy.
type Record ¶
type Record struct {
ApproximateArrivalTimestamp time.Time `json:"approximateArrivalTimestamp"`
PartitionKey string `json:"partitionKey"`
SequenceNumber string `json:"sequenceNumber"`
Data []byte `json:"data"`
}
Record represents a single Kinesis data record.
type RegisterStreamConsumerInput ¶
type RegisterStreamConsumerInput struct {
Tags map[string]string
StreamARN string
ConsumerName string
}
RegisterStreamConsumerInput is the input for RegisterStreamConsumer.
type RegisterStreamConsumerOutput ¶
type RegisterStreamConsumerOutput struct {
Consumer Consumer
}
RegisterStreamConsumerOutput is the output for RegisterStreamConsumer.
type Settings ¶
type Settings struct {
JanitorInterval time.Duration `json:"janitor_interval" env:"KINESIS_JANITOR_INTERVAL" default:"1m" help:"Janitor tick interval."` //nolint:lll // Kong struct tag makes this line long
}
Settings holds service-level configuration for the Kinesis backend. Fields are picked up by the Kong CLI parser when this struct is embedded in the root CLI command.
type Shard ¶
type Shard struct {
// StartedAt is when this shard became open (stream creation for the initial
// shard set, or reshard time for shards born from SplitShard/MergeShards/
// UpdateShardCount/UpdateStreamMode). Used by ListShards' AT_TIMESTAMP/
// FROM_TIMESTAMP/AT_TRIM_HORIZON ShardFilter to bound shard lineage by time.
StartedAt time.Time `json:"startedAt"`
// ClosedAt is when this shard was closed (zero if still open). Populated
// alongside Closed by closeShard. omitempty has no effect on a struct
// field like time.Time, so it is intentionally omitted here.
ClosedAt time.Time `json:"closedAt"`
ID string `json:"id"`
HashKeyRangeStart string `json:"hashKeyRangeStart"`
HashKeyRangeEnd string `json:"hashKeyRangeEnd"`
ParentShardID string `json:"parentShardId,omitempty"`
AdjacentParentShardID string `json:"adjacentParentShardId,omitempty"`
Records shardRecords `json:"records"`
NextSeq uint64 `json:"nextSeq"`
Closed bool `json:"closed,omitempty"`
}
Shard represents a single Kinesis shard within a stream.
type ShardDescription ¶
type ShardDescription struct {
ShardID string
HashKeyRangeStart string
HashKeyRangeEnd string
SequenceNumberRangeStart string
SequenceNumberRangeEnd string
ParentShardID string
AdjacentParentShardID string
Closed bool
}
ShardDescription describes a shard in a DescribeStream response.
type ShardIterator ¶
type ShardIterator struct {
CreatedAt time.Time `json:"CreatedAt"`
StreamName string `json:"StreamName"`
ShardID string `json:"ShardID"`
SequenceNumber string `json:"SequenceNumber"`
Region string `json:"Region"`
Position int `json:"Position"`
}
ShardIterator holds the position within a shard for GetRecords. Region is encoded into the iterator token so that GetRecords resolves the record store of the same region the iterator was issued in, keeping same-named streams in different regions isolated on the record hot path.
type SplitShardInput ¶
type SplitShardInput struct {
StreamName string
StreamARN string
ShardToSplit string
NewStartingHashKey string
}
SplitShardInput is the input for SplitShard.
type StartStreamEncryptionInput ¶
type StartStreamEncryptionInput struct {
StreamName string
StreamARN string
EncryptionType string
KeyID string
}
StartStreamEncryptionInput is the input for StartStreamEncryption.
type StartingPosition ¶
type StartingPosition struct {
Timestamp *time.Time `json:"Timestamp,omitempty"`
Type string `json:"Type"`
SequenceNumber string `json:"SequenceNumber,omitempty"`
}
StartingPosition describes where to start reading in SubscribeToShard.
type StopStreamEncryptionInput ¶
type StopStreamEncryptionInput struct {
StreamName string
StreamARN string
EncryptionType string
KeyID string
}
StopStreamEncryptionInput is the input for StopStreamEncryption.
type StorageBackend ¶
type StorageBackend interface {
CreateStream(ctx context.Context, input *CreateStreamInput) error
DeleteStream(ctx context.Context, input *DeleteStreamInput) error
DescribeStream(ctx context.Context, input *DescribeStreamInput) (*DescribeStreamOutput, error)
ListStreams(ctx context.Context, input *ListStreamsInput) (*ListStreamsOutput, error)
PutRecord(ctx context.Context, input *PutRecordInput) (*PutRecordOutput, error)
PutRecords(ctx context.Context, input *PutRecordsInput) (*PutRecordsOutput, error)
GetShardIterator(ctx context.Context, input *GetShardIteratorInput) (*GetShardIteratorOutput, error)
GetRecords(ctx context.Context, input *GetRecordsInput) (*GetRecordsOutput, error)
ListShards(ctx context.Context, input *ListShardsInput) (*ListShardsOutput, error)
RegisterStreamConsumer(
ctx context.Context,
input *RegisterStreamConsumerInput,
) (*RegisterStreamConsumerOutput, error)
DescribeStreamConsumer(
ctx context.Context,
input *DescribeStreamConsumerInput,
) (*DescribeStreamConsumerOutput, error)
ListStreamConsumers(ctx context.Context, input *ListStreamConsumersInput) (*ListStreamConsumersOutput, error)
DeregisterStreamConsumer(ctx context.Context, input *DeregisterStreamConsumerInput) error
SubscribeToShard(ctx context.Context, input *SubscribeToShardInput) (*SubscribeToShardOutput, error)
UpdateShardCount(ctx context.Context, input *UpdateShardCountInput) (*UpdateShardCountOutput, error)
EnableEnhancedMonitoring(
ctx context.Context,
input *EnableEnhancedMonitoringInput,
) (*EnableEnhancedMonitoringOutput, error)
DisableEnhancedMonitoring(
ctx context.Context,
input *DisableEnhancedMonitoringInput,
) (*DisableEnhancedMonitoringOutput, error)
IncreaseStreamRetentionPeriod(ctx context.Context, input *IncreaseStreamRetentionPeriodInput) error
DecreaseStreamRetentionPeriod(ctx context.Context, input *DecreaseStreamRetentionPeriodInput) error
MergeShards(ctx context.Context, input *MergeShardsInput) error
SplitShard(ctx context.Context, input *SplitShardInput) error
StartStreamEncryption(ctx context.Context, input *StartStreamEncryptionInput) error
StopStreamEncryption(ctx context.Context, input *StopStreamEncryptionInput) error
DeleteResourcePolicy(ctx context.Context, input *DeleteResourcePolicyInput) error
GetResourcePolicy(ctx context.Context, input *GetResourcePolicyInput) (*GetResourcePolicyOutput, error)
PutResourcePolicy(ctx context.Context, input *PutResourcePolicyInput) error
ListTagsForResource(ctx context.Context, input *ListTagsForResourceInput) (*ListTagsForResourceOutput, error)
TagResource(ctx context.Context, input *TagResourceInput) error
UntagResource(ctx context.Context, input *UntagResourceInput) error
UpdateStreamMode(ctx context.Context, input *UpdateStreamModeInput) error
UpdateAccountSettings(ctx context.Context, input *UpdateAccountSettingsInput) (*UpdateAccountSettingsOutput, error)
UpdateMaxRecordSize(ctx context.Context, input *UpdateMaxRecordSizeInput) error
UpdateStreamWarmThroughput(
ctx context.Context,
input *UpdateStreamWarmThroughputInput,
) (*UpdateStreamWarmThroughputOutput, error)
DescribeAccountSettings(ctx context.Context) (*DescribeAccountSettingsOutput, error)
CountOpenShards(ctx context.Context) int
CountOnDemandStreams(ctx context.Context) int
OnDemandStreamCountLimit(ctx context.Context) int
ListAll(ctx context.Context) []StreamInfo
}
StorageBackend defines the interface for a Kinesis backend.
Every method takes a context.Context so the per-request AWS region can be threaded through and resources kept isolated per region. The region is read from the context via getRegion, falling back to the backend's default region when the context carries no region.
type Stream ¶
type Stream struct {
CreatedAt time.Time `json:"createdAt"`
Tags *tags.Tags `json:"tags,omitempty"`
Consumers map[string]*Consumer `json:"consumers,omitempty"`
Name string `json:"name"`
ARN string `json:"arn"`
// Region is the AWS region this stream lives in. It is the second half of
// the composite key (see streamKey in backend.go) that keeps same-named
// streams in different regions isolated inside the single flat
// store.Table[Stream] — the region-nested map it replaced used the
// region as an outer map key instead of a field on Stream itself.
Region string `json:"region,omitempty"`
Status string `json:"status"`
EncryptionType string `json:"encryptionType,omitempty"`
KeyID string `json:"keyId,omitempty"`
StreamMode string `json:"streamMode,omitempty"`
Shards []*Shard `json:"shards"`
EnhancedMonitoring []string `json:"enhancedMonitoring,omitempty"`
RetentionPeriod int `json:"retentionPeriod"`
// MaxRecordSizeBytes is the per-record data payload size limit for this stream.
// Defaults to defaultMaxRecordSizeBytes (1 MiB); updatable via UpdateMaxRecordSize
// (wire unit is MaxRecordSizeInKiB; converted to bytes on write via bytesPerKiB).
MaxRecordSizeBytes int `json:"maxRecordSizeBytes,omitempty"`
// WarmThroughputMiBps is the stream's current UpdateStreamWarmThroughput
// setting. Applied synchronously (this backend has no UPDATING transient
// state), so Current and Target always match on read -- see
// UpdateStreamWarmThroughputOutput and PARITY.md.
WarmThroughputMiBps int `json:"warmThroughputMiBps,omitempty"`
// contains filtered or unexported fields
}
Stream represents an in-memory Kinesis stream.
type StreamInfo ¶
StreamInfo holds summary information about a stream, safe to return without lock.
type StreamModeDetails ¶
type StreamModeDetails struct {
StreamMode string
}
StreamModeDetails describes the mode of a Kinesis stream.
type SubscribeToShardEvent ¶
type SubscribeToShardEvent struct {
ContinuationSequenceNumber string
Records []GetRecordResult
MillisBehindLatest int64
}
SubscribeToShardEvent is a single event in the SubscribeToShard response.
type SubscribeToShardInput ¶
type SubscribeToShardInput struct {
ConsumerARN string
ShardID string
StartingPosition StartingPosition
}
SubscribeToShardInput is the input for SubscribeToShard.
type SubscribeToShardOutput ¶
type SubscribeToShardOutput struct {
Event SubscribeToShardEvent
}
SubscribeToShardOutput is the output for SubscribeToShard.
type TagResourceInput ¶
TagResourceInput is the input for TagResource (ARN-based tagging).
type TaggedEntry ¶ added in v1.2.0
TaggedEntry pairs a stream ARN with its tag map, for cross-service tag enumeration by the Resource Groups Tagging API (see cli.go's wireTaggingKinesis).
type UntagResourceInput ¶
UntagResourceInput is the input for UntagResource (ARN-based tag removal).
type UpdateAccountSettingsInput ¶
type UpdateAccountSettingsInput struct {
// MinimumThroughputBillingCommitment is required.
MinimumThroughputBillingCommitment *MinimumThroughputBillingCommitmentInput
}
UpdateAccountSettingsInput is the input for UpdateAccountSettings.
type UpdateAccountSettingsOutput ¶ added in v1.3.1
type UpdateAccountSettingsOutput struct {
MinimumThroughputBillingCommitment MinimumThroughputBillingCommitmentOutput
}
UpdateAccountSettingsOutput is the output for UpdateAccountSettings.
type UpdateMaxRecordSizeInput ¶
type UpdateMaxRecordSizeInput struct {
StreamARN string
// MaxRecordSizeInKiB is required; wire unit is KiB, not bytes.
MaxRecordSizeInKiB int
}
UpdateMaxRecordSizeInput is the input for UpdateMaxRecordSize. Unlike most stream-identifying inputs in this file, the real shape has no StreamName member -- only StreamARN (and StreamId, reserved for future use) -- kinesis@v1.46.4 api_op_UpdateMaxRecordSize.go:30-47.
type UpdateShardCountInput ¶
UpdateShardCountInput is the input for UpdateShardCount.
type UpdateShardCountOutput ¶
UpdateShardCountOutput is the output for UpdateShardCount.
type UpdateStreamModeInput ¶
type UpdateStreamModeInput struct {
StreamARN string
StreamModeDetails StreamModeDetails
// WarmThroughputMiBps mirrors UpdateStreamModeInput's own field
// (kinesis@v1.46.4 api_op_UpdateStreamMode.go, "only valid when the
// stream mode is being updated to on-demand"). Zero means "not
// specified".
WarmThroughputMiBps int
}
UpdateStreamModeInput is the input for UpdateStreamMode.
type UpdateStreamWarmThroughputInput ¶
type UpdateStreamWarmThroughputInput struct {
StreamName string
StreamARN string
// WarmThroughputMiBps is required (api_op_UpdateStreamWarmThroughput.go:63-70).
WarmThroughputMiBps int
}
UpdateStreamWarmThroughputInput is the input for UpdateStreamWarmThroughput.
type UpdateStreamWarmThroughputOutput ¶ added in v1.3.1
type UpdateStreamWarmThroughputOutput struct {
StreamARN string
StreamName string
WarmThroughput WarmThroughputObject
}
UpdateStreamWarmThroughputOutput is the output for UpdateStreamWarmThroughput.
type WarmThroughputObject ¶ added in v1.3.1
WarmThroughputObject mirrors types.WarmThroughputObject (kinesis@v1.46.4 types/types.go:729-740).
Source Files
¶
- account_settings.go
- cbor.go
- consumers.go
- errors.go
- fis.go
- handler.go
- handler_account_settings.go
- handler_consumers.go
- handler_monitoring.go
- handler_records.go
- handler_resharding.go
- handler_resource_policy.go
- handler_shard_iterators.go
- handler_shards.go
- handler_stream_encryption.go
- handler_stream_modes.go
- handler_stream_retention.go
- handler_streams.go
- handler_tags.go
- interfaces.go
- janitor.go
- models.go
- monitoring.go
- persistence.go
- provider.go
- records.go
- resharding.go
- resource_policy.go
- ring_buffer.go
- settings.go
- shard_iterators.go
- shards.go
- store.go
- stream_encryption.go
- stream_modes.go
- stream_retention.go
- streams.go
- tags.go