Documentation
¶
Index ¶
- Variables
- type Action
- type ActionExecutor
- type ActionHistory
- type ActionHistoryDetails
- type ActionPatch
- type ActionRecord
- type ActionThreshold
- type AutoAdjustData
- type Budget
- type BudgetNotificationsForAccount
- type BudgetRecord
- type BudgetedAndActualAmounts
- type CalculatedSpend
- type CostTypes
- type Definition
- type Delivery
- type Expression
- type Handler
- func (h *Handler) ChaosOperations() []string
- func (h *Handler) ChaosRegions() []string
- func (h *Handler) ChaosServiceName() string
- func (h *Handler) ExtractOperation(c *echo.Context) string
- func (h *Handler) ExtractResource(c *echo.Context) string
- func (h *Handler) GetSupportedOperations() []string
- func (h *Handler) Handler() echo.HandlerFunc
- func (h *Handler) MatchPriority() int
- func (h *Handler) Name() string
- 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
- type HealthStatus
- type HistoricalOptions
- type IamActionDefinition
- type InMemoryBackend
- func (b *InMemoryBackend) AccountID() string
- func (b *InMemoryBackend) BudgetPerformance(account, name string, tp *TimePeriod, token string, maxResults *int32) (*PerformanceHistory, string, error)
- func (b *InMemoryBackend) CreateBudget(ctx context.Context, account string, bg Budget, ...) error
- func (b *InMemoryBackend) CreateBudgetAction(account, name string, a Action, rtags []ResourceTag) (string, error)
- func (b *InMemoryBackend) CreateNotification(ctx context.Context, account, name string, n Notification, subs []Subscriber) error
- func (b *InMemoryBackend) CreateSubscriber(account, name string, n Notification, s Subscriber) error
- func (b *InMemoryBackend) DeleteBudget(account, name string) error
- func (b *InMemoryBackend) DeleteBudgetAction(account, name, id string) (*Action, error)
- func (b *InMemoryBackend) DeleteNotification(account, name string, n Notification) error
- func (b *InMemoryBackend) DeleteSubscriber(account, name string, n Notification, s Subscriber) error
- func (b *InMemoryBackend) EvaluateAll(ctx context.Context)
- func (b *InMemoryBackend) ExecuteBudgetAction(ctx context.Context, account, name, id, execType string) error
- func (b *InMemoryBackend) GetAction(ctx context.Context, account, name, id string) (*Action, error)
- func (b *InMemoryBackend) GetBudget(ctx context.Context, account, name string, showFilter bool) (*Budget, error)
- func (b *InMemoryBackend) ListActionHistories(account, name, id string, tp *TimePeriod, token string, maxResults *int32) (page.Page[ActionHistory], error)
- func (b *InMemoryBackend) ListActionsForAccount(ctx context.Context, account, token string, maxResults *int32) (page.Page[Action], error)
- func (b *InMemoryBackend) ListActionsForBudget(ctx context.Context, account, name, token string, maxResults *int32) (page.Page[Action], error)
- func (b *InMemoryBackend) ListBudgetNotificationsForAccount(ctx context.Context, account, token string, maxResults *int32) (page.Page[BudgetNotificationsForAccount], error)
- func (b *InMemoryBackend) ListBudgets(ctx context.Context, account, token string, maxResults *int32, showFilter bool) (page.Page[Budget], error)
- func (b *InMemoryBackend) ListNotifications(ctx context.Context, account, name, token string, maxResults *int32) (page.Page[Notification], error)
- func (b *InMemoryBackend) ListSubscribers(account, name string, n Notification, token string, maxResults *int32) (page.Page[Subscriber], error)
- func (b *InMemoryBackend) ListTagsForResource(resource string) (map[string]string, error)
- func (b *InMemoryBackend) Region() string
- func (b *InMemoryBackend) Reset()
- func (b *InMemoryBackend) Restore(ctx context.Context, data []byte) error
- func (b *InMemoryBackend) SetActionExecutor(e ActionExecutor)
- func (b *InMemoryBackend) SetNotifier(n Notifier)
- func (b *InMemoryBackend) SetSpendSource(s SpendSource)
- func (b *InMemoryBackend) Snapshot(ctx context.Context) []byte
- func (b *InMemoryBackend) StartEvaluator(ctx context.Context, interval time.Duration)
- func (b *InMemoryBackend) TagResource(resource string, add []ResourceTag) error
- func (b *InMemoryBackend) UntagResource(resource string, keys []string) error
- func (b *InMemoryBackend) UpdateBudget(ctx context.Context, account string, bg Budget) error
- func (b *InMemoryBackend) UpdateBudgetAction(account, name, id string, p ActionPatch) (*Action, *Action, error)
- func (b *InMemoryBackend) UpdateNotification(ctx context.Context, account, name string, oldN, newN Notification) error
- func (b *InMemoryBackend) UpdateSubscriber(account, name string, n Notification, oldS, newS Subscriber) error
- type Notification
- type NotificationRecord
- type NotificationWithSubscribers
- type Notifier
- type PerformanceHistory
- type Provider
- type ResourceTag
- type ScpActionDefinition
- type Spend
- type SpendSource
- type SsmActionDefinition
- type Subscriber
- type TimePeriod
- type Timestamp
- type ValuesFilter
Constants ¶
This section is empty.
Variables ¶
var ( ErrNotFound = errors.New("not found") ErrDuplicateRecord = errors.New("duplicate record") ErrCreationLimitExceeded = errors.New("creation limit exceeded") ErrInvalidParameter = errors.New("invalid parameter") ErrInvalidNextToken = errors.New("invalid next token") ErrResourceLocked = errors.New("resource locked") )
Sentinels, one per exception the pinned SDK declares and this service raises.
Functions ¶
This section is empty.
Types ¶
type Action ¶
type Action struct {
ActionThreshold *ActionThreshold `json:"ActionThreshold,omitempty"`
Definition *Definition `json:"Definition,omitempty"`
ActionID string `json:"ActionId"`
ActionType string `json:"ActionType"`
ApprovalModel string `json:"ApprovalModel"`
BudgetName string `json:"BudgetName"`
ExecutionRoleArn string `json:"ExecutionRoleArn"`
NotificationType string `json:"NotificationType"`
Status string `json:"Status"`
Subscribers []Subscriber `json:"Subscribers"`
}
Action is a budget action.
type ActionExecutor ¶
type ActionExecutor interface {
Run(ctx context.Context, accountID string, a Action, reverse bool) error
}
ActionExecutor applies (or reverses) a budget action against IAM, Organizations or SSM.
type ActionHistory ¶
type ActionHistory struct {
Timestamp Timestamp `json:"Timestamp"`
EventType string `json:"EventType"`
Status string `json:"Status"`
ActionHistoryDetails ActionHistoryDetails `json:"ActionHistoryDetails"`
}
ActionHistory is one action event.
type ActionHistoryDetails ¶
ActionHistoryDetails is the payload of a history entry.
type ActionPatch ¶
type ActionPatch struct {
ActionThreshold *ActionThreshold
Definition *Definition
ApprovalModel string
ExecutionRoleArn string
NotificationType string
Subscribers []Subscriber
}
ActionPatch holds UpdateBudgetAction fields; zero values are unchanged.
type ActionRecord ¶
type ActionRecord struct {
Tags map[string]string `json:"tags,omitempty"`
Key string `json:"key"`
AccountID string `json:"accountID"`
Action Action `json:"action"`
History []ActionHistory `json:"history,omitempty"`
}
ActionRecord is a stored budget action with its history and tags.
type ActionThreshold ¶
type ActionThreshold struct {
ActionThresholdType string `json:"ActionThresholdType"`
ActionThresholdValue float64 `json:"ActionThresholdValue"`
}
ActionThreshold triggers an action.
type AutoAdjustData ¶
type AutoAdjustData struct {
HistoricalOptions *HistoricalOptions `json:"HistoricalOptions,omitempty"`
LastAutoAdjustTime *Timestamp `json:"LastAutoAdjustTime,omitempty"`
AutoAdjustType string `json:"AutoAdjustType"`
}
AutoAdjustData configures automatic limit adjustment.
type Budget ¶
type Budget struct {
AutoAdjustData *AutoAdjustData `json:"AutoAdjustData,omitempty"`
BudgetLimit *Spend `json:"BudgetLimit,omitempty"`
CalculatedSpend *CalculatedSpend `json:"CalculatedSpend,omitempty"`
CostFilters map[string][]string `json:"CostFilters,omitempty"`
CostTypes *CostTypes `json:"CostTypes,omitempty"`
FilterExpression *Expression `json:"FilterExpression,omitempty"`
HealthStatus *HealthStatus `json:"HealthStatus,omitempty"`
LastUpdatedTime *Timestamp `json:"LastUpdatedTime,omitempty"`
PlannedBudgetLimits map[string]Spend `json:"PlannedBudgetLimits,omitempty"`
TimePeriod *TimePeriod `json:"TimePeriod,omitempty"`
BillingViewArn string `json:"BillingViewArn,omitempty"`
BudgetName string `json:"BudgetName"`
BudgetType string `json:"BudgetType"`
TimeUnit string `json:"TimeUnit"`
Metrics []string `json:"Metrics,omitempty"`
}
Budget is a budget as stored and returned.
type BudgetNotificationsForAccount ¶
type BudgetNotificationsForAccount struct {
BudgetName string `json:"BudgetName"`
Notifications []Notification `json:"Notifications"`
}
BudgetNotificationsForAccount groups notifications by budget.
type BudgetRecord ¶
type BudgetRecord struct {
Tags map[string]string `json:"tags,omitempty"`
Key string `json:"key"`
AccountID string `json:"accountID"`
Budget Budget `json:"budget"`
Notifications []NotificationRecord `json:"notifications,omitempty"`
}
BudgetRecord is a stored budget with its notifications and tags.
type BudgetedAndActualAmounts ¶
type BudgetedAndActualAmounts struct {
ActualAmount *Spend `json:"ActualAmount,omitempty"`
BudgetedAmount *Spend `json:"BudgetedAmount,omitempty"`
TimePeriod *TimePeriod `json:"TimePeriod,omitempty"`
}
BudgetedAndActualAmounts is one performance-history period.
type CalculatedSpend ¶
type CalculatedSpend struct {
ForecastedSpend *Spend `json:"ForecastedSpend,omitempty"`
ActualSpend Spend `json:"ActualSpend"`
}
CalculatedSpend is the derived spend of the current period.
type CostTypes ¶
type CostTypes struct {
IncludeCredit *bool `json:"IncludeCredit,omitempty"`
IncludeDiscount *bool `json:"IncludeDiscount,omitempty"`
IncludeOtherSubscription *bool `json:"IncludeOtherSubscription,omitempty"`
IncludeRecurring *bool `json:"IncludeRecurring,omitempty"`
IncludeRefund *bool `json:"IncludeRefund,omitempty"`
IncludeSubscription *bool `json:"IncludeSubscription,omitempty"`
IncludeSupport *bool `json:"IncludeSupport,omitempty"`
IncludeTax *bool `json:"IncludeTax,omitempty"`
IncludeUpfront *bool `json:"IncludeUpfront,omitempty"`
UseAmortized *bool `json:"UseAmortized,omitempty"`
UseBlended *bool `json:"UseBlended,omitempty"`
}
CostTypes selects which charges a budget includes.
type Definition ¶
type Definition struct {
IamActionDefinition *IamActionDefinition `json:"IamActionDefinition,omitempty"`
ScpActionDefinition *ScpActionDefinition `json:"ScpActionDefinition,omitempty"`
SsmActionDefinition *SsmActionDefinition `json:"SsmActionDefinition,omitempty"`
}
Definition holds the type-specific action parameters.
type Delivery ¶
type Delivery struct {
AccountID string
BudgetName string
Subject string
Message string
Subscribers []Subscriber
}
Delivery is one alert to send to subscribers.
type Expression ¶
type Expression struct {
CostCategories *ValuesFilter `json:"CostCategories,omitempty"`
Dimensions *ValuesFilter `json:"Dimensions,omitempty"`
Tags *ValuesFilter `json:"Tags,omitempty"`
ProductAttributes *ValuesFilter `json:"ProductAttributes,omitempty"`
Not *Expression `json:"Not,omitempty"`
And []Expression `json:"And,omitempty"`
Or []Expression `json:"Or,omitempty"`
}
Expression is a budget filter expression tree.
type Handler ¶
type Handler struct {
Backend *InMemoryBackend
}
Handler serves the Budgets awsjson1.1 API.
func (*Handler) ChaosOperations ¶
ChaosOperations lists the fault-injectable operations.
func (*Handler) ChaosRegions ¶
ChaosRegions lists the regions this handler serves; Budgets is homed in one region.
func (*Handler) ChaosServiceName ¶
ChaosServiceName returns the lowercase service name for fault rules.
func (*Handler) ExtractOperation ¶
ExtractOperation returns the operation name from X-Amz-Target.
func (*Handler) ExtractResource ¶
ExtractResource returns the operation name; the API has no single resource key.
func (*Handler) GetSupportedOperations ¶
GetSupportedOperations lists every routed operation.
func (*Handler) Handler ¶
func (h *Handler) Handler() echo.HandlerFunc
Handler returns the echo handler.
func (*Handler) MatchPriority ¶
MatchPriority returns the routing priority.
func (*Handler) RouteMatcher ¶
RouteMatcher matches the AWSBudgetServiceGateway X-Amz-Target prefix.
type HealthStatus ¶
type HealthStatus struct {
LastUpdatedTime *Timestamp `json:"LastUpdatedTime,omitempty"`
Status string `json:"Status,omitempty"`
StatusReason string `json:"StatusReason,omitempty"`
}
HealthStatus reports billing-view health.
type HistoricalOptions ¶
type HistoricalOptions struct {
BudgetAdjustmentPeriod int32 `json:"BudgetAdjustmentPeriod"`
LookBackAvailablePeriods int32 `json:"LookBackAvailablePeriods,omitempty"`
}
HistoricalOptions configures historical auto-adjust.
type IamActionDefinition ¶
type IamActionDefinition struct {
PolicyArn string `json:"PolicyArn"`
Groups []string `json:"Groups,omitempty"`
Roles []string `json:"Roles,omitempty"`
Users []string `json:"Users,omitempty"`
}
IamActionDefinition attaches a policy to principals.
type InMemoryBackend ¶
type InMemoryBackend struct {
// contains filtered or unexported fields
}
InMemoryBackend is the Budgets state; one coarse lock guards every table.
func NewInMemoryBackend ¶
func NewInMemoryBackend(accountID, region string) *InMemoryBackend
NewInMemoryBackend creates an empty backend.
func (*InMemoryBackend) AccountID ¶
func (b *InMemoryBackend) AccountID() string
AccountID returns the default account.
func (*InMemoryBackend) BudgetPerformance ¶
func (b *InMemoryBackend) BudgetPerformance( account, name string, tp *TimePeriod, token string, maxResults *int32, ) (*PerformanceHistory, string, error)
BudgetPerformance returns per-period budgeted and actual amounts, newest period last.
func (*InMemoryBackend) CreateBudget ¶
func (b *InMemoryBackend) CreateBudget( ctx context.Context, account string, bg Budget, notifs []NotificationWithSubscribers, rtags []ResourceTag, ) error
CreateBudget stores a budget with optional notifications and tags.
func (*InMemoryBackend) CreateBudgetAction ¶
func (b *InMemoryBackend) CreateBudgetAction( account, name string, a Action, rtags []ResourceTag, ) (string, error)
CreateBudgetAction stores an action in STANDBY and returns its ID.
func (*InMemoryBackend) CreateNotification ¶
func (b *InMemoryBackend) CreateNotification( ctx context.Context, account, name string, n Notification, subs []Subscriber, ) error
CreateNotification adds a notification with its first subscribers.
func (*InMemoryBackend) CreateSubscriber ¶
func (b *InMemoryBackend) CreateSubscriber(account, name string, n Notification, s Subscriber) error
CreateSubscriber adds a recipient to a notification.
func (*InMemoryBackend) DeleteBudget ¶
func (b *InMemoryBackend) DeleteBudget(account, name string) error
DeleteBudget removes a budget with its actions.
func (*InMemoryBackend) DeleteBudgetAction ¶
func (b *InMemoryBackend) DeleteBudgetAction(account, name, id string) (*Action, error)
DeleteBudgetAction removes an action and returns it.
func (*InMemoryBackend) DeleteNotification ¶
func (b *InMemoryBackend) DeleteNotification(account, name string, n Notification) error
DeleteNotification removes a notification and its subscribers.
func (*InMemoryBackend) DeleteSubscriber ¶
func (b *InMemoryBackend) DeleteSubscriber(account, name string, n Notification, s Subscriber) error
DeleteSubscriber removes a recipient; the last one cannot be removed.
func (*InMemoryBackend) EvaluateAll ¶
func (b *InMemoryBackend) EvaluateAll(ctx context.Context)
EvaluateAll evaluates every budget.
func (*InMemoryBackend) ExecuteBudgetAction ¶
func (b *InMemoryBackend) ExecuteBudgetAction( ctx context.Context, account, name, id, execType string, ) error
ExecuteBudgetAction drives an action through approve, retry, reverse or reset.
func (*InMemoryBackend) GetBudget ¶
func (b *InMemoryBackend) GetBudget(ctx context.Context, account, name string, showFilter bool) (*Budget, error)
GetBudget returns one budget.
func (*InMemoryBackend) ListActionHistories ¶
func (b *InMemoryBackend) ListActionHistories( account, name, id string, tp *TimePeriod, token string, maxResults *int32, ) (page.Page[ActionHistory], error)
ListActionHistories pages an action's events, newest first, within an optional window.
func (*InMemoryBackend) ListActionsForAccount ¶
func (b *InMemoryBackend) ListActionsForAccount( ctx context.Context, account, token string, maxResults *int32, ) (page.Page[Action], error)
ListActionsForAccount pages every action of an account.
func (*InMemoryBackend) ListActionsForBudget ¶
func (b *InMemoryBackend) ListActionsForBudget( ctx context.Context, account, name, token string, maxResults *int32, ) (page.Page[Action], error)
ListActionsForBudget pages a budget's actions.
func (*InMemoryBackend) ListBudgetNotificationsForAccount ¶
func (b *InMemoryBackend) ListBudgetNotificationsForAccount( ctx context.Context, account, token string, maxResults *int32, ) (page.Page[BudgetNotificationsForAccount], error)
ListBudgetNotificationsForAccount pages budgets that have notifications.
func (*InMemoryBackend) ListBudgets ¶
func (b *InMemoryBackend) ListBudgets( ctx context.Context, account, token string, maxResults *int32, showFilter bool, ) (page.Page[Budget], error)
ListBudgets pages an account's budgets by name.
func (*InMemoryBackend) ListNotifications ¶
func (b *InMemoryBackend) ListNotifications( ctx context.Context, account, name, token string, maxResults *int32, ) (page.Page[Notification], error)
ListNotifications pages a budget's notifications.
func (*InMemoryBackend) ListSubscribers ¶
func (b *InMemoryBackend) ListSubscribers( account, name string, n Notification, token string, maxResults *int32, ) (page.Page[Subscriber], error)
ListSubscribers pages a notification's recipients.
func (*InMemoryBackend) ListTagsForResource ¶
func (b *InMemoryBackend) ListTagsForResource(resource string) (map[string]string, error)
ListTagsForResource returns a resource's tags.
func (*InMemoryBackend) Region ¶
func (b *InMemoryBackend) Region() string
Region returns the home region.
func (*InMemoryBackend) Restore ¶
func (b *InMemoryBackend) Restore(ctx context.Context, data []byte) error
Restore loads a snapshot; an incompatible version is discarded.
func (*InMemoryBackend) SetActionExecutor ¶
func (b *InMemoryBackend) SetActionExecutor(e ActionExecutor)
SetActionExecutor wires action execution.
func (*InMemoryBackend) SetNotifier ¶
func (b *InMemoryBackend) SetNotifier(n Notifier)
SetNotifier wires alert delivery.
func (*InMemoryBackend) SetSpendSource ¶
func (b *InMemoryBackend) SetSpendSource(s SpendSource)
SetSpendSource wires the cost data used for CalculatedSpend and alerting.
func (*InMemoryBackend) Snapshot ¶
func (b *InMemoryBackend) Snapshot(ctx context.Context) []byte
Snapshot serialises the backend state.
func (*InMemoryBackend) StartEvaluator ¶
func (b *InMemoryBackend) StartEvaluator(ctx context.Context, interval time.Duration)
StartEvaluator re-evaluates every budget's notifications and actions each interval until ctx ends.
func (*InMemoryBackend) TagResource ¶
func (b *InMemoryBackend) TagResource(resource string, add []ResourceTag) error
TagResource adds or replaces tags on a budget or action.
func (*InMemoryBackend) UntagResource ¶
func (b *InMemoryBackend) UntagResource(resource string, keys []string) error
UntagResource removes tags by key.
func (*InMemoryBackend) UpdateBudget ¶
UpdateBudget replaces a budget definition, keeping its notifications and tags.
func (*InMemoryBackend) UpdateBudgetAction ¶
func (b *InMemoryBackend) UpdateBudgetAction( account, name, id string, p ActionPatch, ) (*Action, *Action, error)
UpdateBudgetAction patches an action and returns its old and new forms.
func (*InMemoryBackend) UpdateNotification ¶
func (b *InMemoryBackend) UpdateNotification( ctx context.Context, account, name string, oldN, newN Notification, ) error
UpdateNotification replaces a notification's definition, keeping its subscribers.
func (*InMemoryBackend) UpdateSubscriber ¶
func (b *InMemoryBackend) UpdateSubscriber(account, name string, n Notification, oldS, newS Subscriber) error
UpdateSubscriber replaces a recipient.
type Notification ¶
type Notification struct {
ComparisonOperator string `json:"ComparisonOperator"`
NotificationState string `json:"NotificationState,omitempty"`
NotificationType string `json:"NotificationType"`
ThresholdType string `json:"ThresholdType,omitempty"`
Threshold float64 `json:"Threshold"`
}
Notification is a budget alert rule.
type NotificationRecord ¶
type NotificationRecord struct {
Notification Notification `json:"notification"`
Subscribers []Subscriber `json:"subscribers"`
}
NotificationRecord is a notification and its subscribers.
type NotificationWithSubscribers ¶
type NotificationWithSubscribers struct {
Notification Notification `json:"Notification"`
Subscribers []Subscriber `json:"Subscribers"`
}
NotificationWithSubscribers pairs a notification with its recipients.
type PerformanceHistory ¶
type PerformanceHistory struct {
CostFilters map[string][]string `json:"CostFilters,omitempty"`
CostTypes *CostTypes `json:"CostTypes,omitempty"`
FilterExpression *Expression `json:"FilterExpression,omitempty"`
BillingViewArn string `json:"BillingViewArn,omitempty"`
BudgetName string `json:"BudgetName"`
BudgetType string `json:"BudgetType"`
TimeUnit string `json:"TimeUnit"`
Metrics []string `json:"Metrics,omitempty"`
BudgetedAndActualAmountsList []BudgetedAndActualAmounts `json:"BudgetedAndActualAmountsList"`
}
PerformanceHistory is the DescribeBudgetPerformanceHistory payload.
type Provider ¶
type Provider struct{}
Provider implements service.Provider for AWS Budgets.
func (*Provider) Init ¶
func (p *Provider) Init(ctx *service.AppContext) (service.Registerable, error)
Init builds the backend and starts the notification evaluator.
type ResourceTag ¶
ResourceTag is a key/value tag.
type ScpActionDefinition ¶
type ScpActionDefinition struct {
PolicyID string `json:"PolicyId"`
TargetIDs []string `json:"TargetIds"`
}
ScpActionDefinition attaches a service control policy to targets.
type SpendSource ¶
type SpendSource interface {
Spend(start, end time.Time, filters map[string][]string, metric string) (float64, bool)
}
SpendSource supplies spend for a window [start, end). ok is false when no cost data exists.
type SsmActionDefinition ¶
type SsmActionDefinition struct {
ActionSubType string `json:"ActionSubType"`
Region string `json:"Region"`
InstanceIDs []string `json:"InstanceIds"`
}
SsmActionDefinition runs a Systems Manager document against instances.
type Subscriber ¶
type Subscriber struct {
Address string `json:"Address"`
SubscriptionType string `json:"SubscriptionType"`
}
Subscriber is an alert recipient.
type TimePeriod ¶
type TimePeriod struct {
Start *Timestamp `json:"Start,omitempty"`
End *Timestamp `json:"End,omitempty"`
}
TimePeriod is a half-open budget window.
type Timestamp ¶
Timestamp marshals as epoch seconds.
func (Timestamp) MarshalJSON ¶
MarshalJSON renders the epoch-seconds number the SDK expects.
func (*Timestamp) UnmarshalJSON ¶
UnmarshalJSON reads an epoch-seconds number.
type ValuesFilter ¶
type ValuesFilter struct {
Key string `json:"Key,omitempty"`
Values []string `json:"Values,omitempty"`
MatchOptions []string `json:"MatchOptions,omitempty"`
}
ValuesFilter is the shared shape of CostCategories, Dimensions, Tags and ProductAttributes clauses.