1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222
|
// Code generated by smithy-go-codegen DO NOT EDIT.
package iot
import (
"context"
"fmt"
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/iot/types"
"github.com/aws/smithy-go/middleware"
smithyhttp "github.com/aws/smithy-go/transport/http"
)
// Creates a job. Requires permission to access the CreateJob (https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions)
// action.
func (c *Client) CreateJob(ctx context.Context, params *CreateJobInput, optFns ...func(*Options)) (*CreateJobOutput, error) {
if params == nil {
params = &CreateJobInput{}
}
result, metadata, err := c.invokeOperation(ctx, "CreateJob", params, optFns, c.addOperationCreateJobMiddlewares)
if err != nil {
return nil, err
}
out := result.(*CreateJobOutput)
out.ResultMetadata = metadata
return out, nil
}
type CreateJobInput struct {
// A job identifier which must be unique for your Amazon Web Services account. We
// recommend using a UUID. Alpha-numeric characters, "-" and "_" are valid for use
// here.
//
// This member is required.
JobId *string
// A list of things and thing groups to which the job should be sent.
//
// This member is required.
Targets []string
// Allows you to create the criteria to abort a job.
AbortConfig *types.AbortConfig
// A short text description of the job.
Description *string
// The package version Amazon Resource Names (ARNs) that are installed on the
// device when the job successfully completes. Note:The following Length
// Constraints relates to a single ARN. Up to 25 package version ARNs are allowed.
DestinationPackageVersions []string
// The job document. Required if you don't specify a value for documentSource .
Document *string
// Parameters of an Amazon Web Services managed template that you can specify to
// create the job document. documentParameters can only be used when creating jobs
// from Amazon Web Services managed templates. This parameter can't be used with
// custom job templates or to create jobs from them.
DocumentParameters map[string]string
// An S3 link, or S3 object URL, to the job document. The link is an Amazon S3
// object URL and is required if you don't specify a value for document . For
// example, --document-source
// https://s3.region-code.amazonaws.com/example-firmware/device-firmware.1.0 For
// more information, see Methods for accessing a bucket (https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-bucket-intro.html)
// .
DocumentSource *string
// Allows you to create the criteria to retry a job.
JobExecutionsRetryConfig *types.JobExecutionsRetryConfig
// Allows you to create a staged rollout of the job.
JobExecutionsRolloutConfig *types.JobExecutionsRolloutConfig
// The ARN of the job template used to create the job.
JobTemplateArn *string
// The namespace used to indicate that a job is a customer-managed job. When you
// specify a value for this parameter, Amazon Web Services IoT Core sends jobs
// notifications to MQTT topics that contain the value in the following format.
// $aws/things/THING_NAME/jobs/JOB_ID/notify-namespace-NAMESPACE_ID/ The
// namespaceId feature is in public preview.
NamespaceId *string
// Configuration information for pre-signed S3 URLs.
PresignedUrlConfig *types.PresignedUrlConfig
// The configuration that allows you to schedule a job for a future date and time
// in addition to specifying the end behavior for each job execution.
SchedulingConfig *types.SchedulingConfig
// Metadata which can be used to manage the job.
Tags []types.Tag
// Specifies whether the job will continue to run (CONTINUOUS), or will be
// complete after all those things specified as targets have completed the job
// (SNAPSHOT). If continuous, the job may also be run on a thing when a change is
// detected in a target. For example, a job will run on a thing when the thing is
// added to a target group, even after the job was completed by all things
// originally in the group. We recommend that you use continuous jobs instead of
// snapshot jobs for dynamic thing group targets. By using continuous jobs, devices
// that join the group receive the job execution even after the job has been
// created.
TargetSelection types.TargetSelection
// Specifies the amount of time each device has to finish its execution of the
// job. The timer is started when the job execution status is set to IN_PROGRESS .
// If the job execution status is not set to another terminal state before the time
// expires, it will be automatically set to TIMED_OUT .
TimeoutConfig *types.TimeoutConfig
noSmithyDocumentSerde
}
type CreateJobOutput struct {
// The job description.
Description *string
// The job ARN.
JobArn *string
// The unique identifier you assigned to this job.
JobId *string
// Metadata pertaining to the operation's result.
ResultMetadata middleware.Metadata
noSmithyDocumentSerde
}
func (c *Client) addOperationCreateJobMiddlewares(stack *middleware.Stack, options Options) (err error) {
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
return err
}
err = stack.Serialize.Add(&awsRestjson1_serializeOpCreateJob{}, middleware.After)
if err != nil {
return err
}
err = stack.Deserialize.Add(&awsRestjson1_deserializeOpCreateJob{}, middleware.After)
if err != nil {
return err
}
if err := addProtocolFinalizerMiddlewares(stack, options, "CreateJob"); err != nil {
return fmt.Errorf("add protocol finalizers: %v", err)
}
if err = addlegacyEndpointContextSetter(stack, options); 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 = 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 = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
return err
}
if err = addOpCreateJobValidationMiddleware(stack); err != nil {
return err
}
if err = stack.Initialize.Add(newServiceMetadataMiddleware_opCreateJob(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
}
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
return err
}
return nil
}
func newServiceMetadataMiddleware_opCreateJob(region string) *awsmiddleware.RegisterServiceMetadata {
return &awsmiddleware.RegisterServiceMetadata{
Region: region,
ServiceID: ServiceID,
OperationName: "CreateJob",
}
}
|