## What changed? Split `searchattribute.TestNameTypeMap` in two: one for ES setup, and one for SQL DB setup. ## Why? `searchattribute.TestNameTypeMap` is used in tests as the predefined list of custom search attributes. However, it mixes how custom search attributes work differently in Elasticsearch vs SQL databases. This PR splits the variable in two (one for each) so the tests will be a better representation of the actual system. ## How did you test it? - [x] built - [ ] run locally and tested manually - [x] covered by existing tests - [ ] added new unit test(s) - [ ] added new functional test(s) ## Potential risks
Amazon S3 blobstore
Configuration
See https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials on how to set up authentication against s3
Enabling archival is done by using the configuration below. Region and bucket URI are required
archival:
history:
state: "enabled"
enableRead: true
provider:
s3store:
region: "us-east-1"
logLevel: 0
visibility:
state: "enabled"
enableRead: true
provider:
s3store:
region: "us-east-1"
logLevel: 0
namespaceDefaults:
archival:
history:
state: "enabled"
URI: "s3://<bucket-name>"
visibility:
state: "enabled"
URI: "s3://<bucket-name>"
Visibility query syntax
You can query the visibility store by using the tctl workflow listarchived command
The syntax for the query is based on SQL
Supported column names are
- WorkflowId String
- WorkflowTypeName String
- StartTime Date
- CloseTime Date
- SearchPrecision String - Day, Hour, Minute, Second
WorkflowId or WorkflowTypeName is required. If filtering on date use StartTime or CloseTime in combination with SearchPrecision.
Searching for a record will be done in times in the UTC timezone
SearchPrecision specifies what range you want to search for records. If you use SearchPrecision = 'Day'
it will search all records starting from 2020-01-21T00:00:00Z to 2020-01-21T59:59:59Z
Limitations
- The only operator supported is
=due to how records are stored in s3.
Example
Searches for all records done in day 2020-01-21 with the specified workflow id
./tctl --ns samples-namespace workflow listarchived -q "StartTime = '2020-01-21T00:00:00Z' AND WorkflowId='workflow-id' AND SearchPrecision='Day'"
Storage in S3
Workflow runs are stored in s3 using the following structure
s3://<bucket-name>/<namespace-id>/
history/<workflow-id>/<run-id>
visibility/
workflowTypeName/<workflow-type-name>/
startTimeout/2020-01-21T16:16:11Z/<run-id>
closeTimeout/2020-01-21T16:16:11Z/<run-id>
workflowID/<workflow-id>/
startTimeout/2020-01-21T16:16:11Z/<run-id>
closeTimeout/2020-01-21T16:16:11Z/<run-id>
Enable AWS SDK Logging with config parameter logLevel. For example enable debug logging with logLevel: 4096. Possbile Values:
- LogOff = 0 = 0x0
- LogDebug = 4096 = 0x1000
- LogDebugWithSigning = 4097 = 0x1001
- LogDebugWithHTTPBody = 4098 = 0x1002
- LogDebugWithRequestRetries = 4100 = 0x1004
- LogDebugWithRequestErrors = 4104 = 0x1008
- LogDebugWithEventStreamBody = 4112 = 0x1010
- LogDebugWithDeprecated = 4128 = 0x1020
Permissions
Your s3 user must have at least the following permissions:
- s3:ListBucket
- s3:GetObject
- s3:PutObject