Documentation ¶
Overview ¶
Package dynamodb provides a DynamoDB-backed feature store for the LaunchDarkly Go SDK.
By caching feature flag data in DynamoDB, LaunchDarkly clients don't need to call out to the LaunchDarkly API every time they're created. This is useful for environments like AWS Lambda where workloads can be sensitive to cold starts.
In contrast to the Redis-backed feature store, the DynamoDB store can be used without requiring access to any VPC resources, i.e. ElastiCache Redis. See https://blog.launchdarkly.com/go-serveless-not-flagless-implementing-feature-flags-in-serverless-environments/ for more background information.
Here's how to use the feature store with the LaunchDarkly client:
store, err := dynamodb.NewDynamoDBFeatureStore("some-table", nil) if err != nil { ... } config := ld.DefaultConfig config.FeatureStore = store config.UseLdd = true // Enable daemon mode to only read flags from DynamoDB ldClient, err := ld.MakeCustomClient("some-sdk-key", config, 5*time.Second) if err != nil { ... }
Index ¶
- type DynamoDBFeatureStore
- func (store *DynamoDBFeatureStore) All(kind ld.VersionedDataKind) (map[string]ld.VersionedData, error)
- func (store *DynamoDBFeatureStore) Delete(kind ld.VersionedDataKind, key string, version int) error
- func (store *DynamoDBFeatureStore) Get(kind ld.VersionedDataKind, key string) (ld.VersionedData, error)
- func (store *DynamoDBFeatureStore) Init(allData map[ld.VersionedDataKind]map[string]ld.VersionedData) error
- func (store *DynamoDBFeatureStore) Initialized() bool
- func (store *DynamoDBFeatureStore) Upsert(kind ld.VersionedDataKind, item ld.VersionedData) error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type DynamoDBFeatureStore ¶
type DynamoDBFeatureStore struct { // Client to access DynamoDB Client dynamodbiface.DynamoDBAPI // Name of the DynamoDB table Table string // Logger to write all log messages to Logger ld.Logger // contains filtered or unexported fields }
DynamoDBFeatureStore provides a DynamoDB-backed feature store for LaunchDarkly.
func NewDynamoDBFeatureStore ¶
func NewDynamoDBFeatureStore(table string, logger ld.Logger) (*DynamoDBFeatureStore, error)
NewDynamoDBFeatureStore creates a new DynamoDB feature store ready to be used by the LaunchDarkly client.
This function uses https://docs.aws.amazon.com/sdk-for-go/api/aws/session/#NewSession to configure access to DynamoDB, which means that environment variables like AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, and AWS_REGION work as expected.
For more control, compose your own DynamoDBFeatureStore with a custom DynamoDB client.
func (*DynamoDBFeatureStore) All ¶
func (store *DynamoDBFeatureStore) All(kind ld.VersionedDataKind) (map[string]ld.VersionedData, error)
All returns all items currently stored in DynamoDB that are of the given data kind. (It won't return items marked as deleted.)
func (*DynamoDBFeatureStore) Delete ¶
func (store *DynamoDBFeatureStore) Delete(kind ld.VersionedDataKind, key string, version int) error
Delete marks an item as deleted. (It won't actually remove the item from DynamoDB.)
func (*DynamoDBFeatureStore) Get ¶
func (store *DynamoDBFeatureStore) Get(kind ld.VersionedDataKind, key string) (ld.VersionedData, error)
Get returns a specific item with the given key. It returns nil if the item does not exist or if it's marked as deleted.
func (*DynamoDBFeatureStore) Init ¶
func (store *DynamoDBFeatureStore) Init(allData map[ld.VersionedDataKind]map[string]ld.VersionedData) error
Init initializes the store by writing the given data to DynamoDB. It will delete all existing data from the table.
func (*DynamoDBFeatureStore) Initialized ¶
func (store *DynamoDBFeatureStore) Initialized() bool
Initialized returns true if the store has been initialized.
func (*DynamoDBFeatureStore) Upsert ¶
func (store *DynamoDBFeatureStore) Upsert(kind ld.VersionedDataKind, item ld.VersionedData) error
Upsert either creates a new item of the given data kind if it doesn't already exist, or updates an existing item if the given item has a higher version.