// Code generated by smithy-go-codegen DO NOT EDIT. package iotfleetwise import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" "github.com/aws/aws-sdk-go-v2/service/iotfleetwise/types" "github.com/aws/smithy-go/middleware" smithyhttp "github.com/aws/smithy-go/transport/http" "time" ) // Creates an orchestration of data collection rules. The Amazon Web Services IoT // FleetWise Edge Agent software running in vehicles uses campaigns to decide how // to collect and transfer data to the cloud. You create campaigns in the cloud. // After you or your team approve campaigns, Amazon Web Services IoT FleetWise // automatically deploys them to vehicles. For more information, see Collect and // transfer data with campaigns (https://docs.aws.amazon.com/iot-fleetwise/latest/developerguide/campaigns.html) // in the Amazon Web Services IoT FleetWise Developer Guide. func (c *Client) CreateCampaign(ctx context.Context, params *CreateCampaignInput, optFns ...func(*Options)) (*CreateCampaignOutput, error) { if params == nil { params = &CreateCampaignInput{} } result, metadata, err := c.invokeOperation(ctx, "CreateCampaign", params, optFns, c.addOperationCreateCampaignMiddlewares) if err != nil { return nil, err } out := result.(*CreateCampaignOutput) out.ResultMetadata = metadata return out, nil } type CreateCampaignInput struct { // The data collection scheme associated with the campaign. You can specify a // scheme that collects data based on time or an event. // // This member is required. CollectionScheme types.CollectionScheme // The name of the campaign to create. // // This member is required. Name *string // (Optional) The Amazon Resource Name (ARN) of the signal catalog to associate // with the campaign. // // This member is required. SignalCatalogArn *string // The ARN of the vehicle or fleet to deploy a campaign to. // // This member is required. TargetArn *string // (Optional) Whether to compress signals before transmitting data to Amazon Web // Services IoT FleetWise. If you don't want to compress the signals, use OFF . If // it's not specified, SNAPPY is used. Default: SNAPPY Compression types.Compression // The destination where the campaign sends data. You can choose to send data to // be stored in Amazon S3 or Amazon Timestream. Amazon S3 optimizes the cost of // data storage and provides additional mechanisms to use vehicle data, such as // data lakes, centralized data storage, data processing pipelines, and analytics. // You can use Amazon Timestream to access and analyze time series data, and // Timestream to query vehicle data so that you can identify trends and patterns. DataDestinationConfigs []types.DataDestinationConfig // (Optional) A list of vehicle attributes to associate with a campaign. Enrich // the data with specified vehicle attributes. For example, add make and model to // the campaign, and Amazon Web Services IoT FleetWise will associate the data with // those attributes as dimensions in Amazon Timestream. You can then query the data // against make and model . Default: An empty array DataExtraDimensions []string // An optional description of the campaign to help identify its purpose. Description *string // (Optional) Option for a vehicle to send diagnostic trouble codes to Amazon Web // Services IoT FleetWise. If you want to send diagnostic trouble codes, use // SEND_ACTIVE_DTCS . If it's not specified, OFF is used. Default: OFF DiagnosticsMode types.DiagnosticsMode // (Optional) The time the campaign expires, in seconds since epoch (January 1, // 1970 at midnight UTC time). Vehicle data isn't collected after the campaign // expires. Default: 253402214400 (December 31, 9999, 00:00:00 UTC) ExpiryTime *time.Time // (Optional) How long (in milliseconds) to collect raw data after a triggering // event initiates the collection. If it's not specified, 0 is used. Default: 0 PostTriggerCollectionDuration *int64 // (Optional) A number indicating the priority of one campaign over another // campaign for a certain vehicle or fleet. A campaign with the lowest value is // deployed to vehicles before any other campaigns. If it's not specified, 0 is // used. Default: 0 Priority *int32 // (Optional) A list of information about signals to collect. SignalsToCollect []types.SignalInformation // (Optional) Whether to store collected data after a vehicle lost a connection // with the cloud. After a connection is re-established, the data is automatically // forwarded to Amazon Web Services IoT FleetWise. If you want to store collected // data when a vehicle loses connection with the cloud, use TO_DISK . If it's not // specified, OFF is used. Default: OFF SpoolingMode types.SpoolingMode // (Optional) The time, in milliseconds, to deliver a campaign after it was // approved. If it's not specified, 0 is used. Default: 0 StartTime *time.Time // Metadata that can be used to manage the campaign. Tags []types.Tag noSmithyDocumentSerde } type CreateCampaignOutput struct { // The ARN of the created campaign. Arn *string // The name of the created campaign. Name *string // Metadata pertaining to the operation's result. ResultMetadata middleware.Metadata noSmithyDocumentSerde } func (c *Client) addOperationCreateCampaignMiddlewares(stack *middleware.Stack, options Options) (err error) { err = stack.Serialize.Add(&awsAwsjson10_serializeOpCreateCampaign{}, middleware.After) if err != nil { return err } err = stack.Deserialize.Add(&awsAwsjson10_deserializeOpCreateCampaign{}, middleware.After) if err != nil { return err } if err = addSetLoggerMiddleware(stack, options); err != nil { return err } if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { return err } if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { return err } if err = addResolveEndpointMiddleware(stack, options); err != nil { return err } if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { return err } if err = addRetryMiddlewares(stack, options); err != nil { return err } if err = addHTTPSignerV4Middleware(stack, options); err != nil { return err } if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { return err } if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { return err } if err = addClientUserAgent(stack, options); err != nil { return err } if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { return err } if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { return err } if err = addOpCreateCampaignValidationMiddleware(stack); err != nil { return err } if err = stack.Initialize.Add(newServiceMetadataMiddleware_opCreateCampaign(options.Region), middleware.Before); err != nil { return err } if err = awsmiddleware.AddRecursionDetection(stack); err != nil { return err } if err = addRequestIDRetrieverMiddleware(stack); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { return err } if err = addRequestResponseLogging(stack, options); err != nil { return err } return nil } func newServiceMetadataMiddleware_opCreateCampaign(region string) *awsmiddleware.RegisterServiceMetadata { return &awsmiddleware.RegisterServiceMetadata{ Region: region, ServiceID: ServiceID, SigningName: "iotfleetwise", OperationName: "CreateCampaign", } }