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
|
// 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 an IoT OTA update on a target group of things or groups. Requires
// permission to access the CreateOTAUpdate (https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions)
// action.
func (c *Client) CreateOTAUpdate(ctx context.Context, params *CreateOTAUpdateInput, optFns ...func(*Options)) (*CreateOTAUpdateOutput, error) {
if params == nil {
params = &CreateOTAUpdateInput{}
}
result, metadata, err := c.invokeOperation(ctx, "CreateOTAUpdate", params, optFns, c.addOperationCreateOTAUpdateMiddlewares)
if err != nil {
return nil, err
}
out := result.(*CreateOTAUpdateOutput)
out.ResultMetadata = metadata
return out, nil
}
type CreateOTAUpdateInput struct {
// The files to be streamed by the OTA update.
//
// This member is required.
Files []types.OTAUpdateFile
// The ID of the OTA update to be created.
//
// This member is required.
OtaUpdateId *string
// The IAM role that grants Amazon Web Services IoT Core access to the Amazon S3,
// IoT jobs and Amazon Web Services Code Signing resources to create an OTA update
// job.
//
// This member is required.
RoleArn *string
// The devices targeted to receive OTA updates.
//
// This member is required.
Targets []string
// A list of additional OTA update parameters, which are name-value pairs. They
// won't be sent to devices as a part of the Job document.
AdditionalParameters map[string]string
// The criteria that determine when and how a job abort takes place.
AwsJobAbortConfig *types.AwsJobAbortConfig
// Configuration for the rollout of OTA updates.
AwsJobExecutionsRolloutConfig *types.AwsJobExecutionsRolloutConfig
// Configuration information for pre-signed URLs.
AwsJobPresignedUrlConfig *types.AwsJobPresignedUrlConfig
// Specifies the amount of time each device has to finish its execution of the
// job. A 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 timer
// expires, it will be automatically set to TIMED_OUT .
AwsJobTimeoutConfig *types.AwsJobTimeoutConfig
// The description of the OTA update.
Description *string
// The protocol used to transfer the OTA update image. Valid values are [HTTP],
// [MQTT], [HTTP, MQTT]. When both HTTP and MQTT are specified, the target device
// can choose the protocol.
Protocols []types.Protocol
// Metadata which can be used to manage updates.
Tags []types.Tag
// Specifies whether the update will continue to run (CONTINUOUS), or will be
// complete after all the things specified as targets have completed the update
// (SNAPSHOT). If continuous, the update may also be run on a thing when a change
// is detected in a target. For example, an update will run on a thing when the
// thing is added to a target group, even after the update was completed by all
// things originally in the group. Valid values: CONTINUOUS | SNAPSHOT.
TargetSelection types.TargetSelection
noSmithyDocumentSerde
}
type CreateOTAUpdateOutput struct {
// The IoT job ARN associated with the OTA update.
AwsIotJobArn *string
// The IoT job ID associated with the OTA update.
AwsIotJobId *string
// The OTA update ARN.
OtaUpdateArn *string
// The OTA update ID.
OtaUpdateId *string
// The OTA update status.
OtaUpdateStatus types.OTAUpdateStatus
// Metadata pertaining to the operation's result.
ResultMetadata middleware.Metadata
noSmithyDocumentSerde
}
func (c *Client) addOperationCreateOTAUpdateMiddlewares(stack *middleware.Stack, options Options) (err error) {
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
return err
}
err = stack.Serialize.Add(&awsRestjson1_serializeOpCreateOTAUpdate{}, middleware.After)
if err != nil {
return err
}
err = stack.Deserialize.Add(&awsRestjson1_deserializeOpCreateOTAUpdate{}, middleware.After)
if err != nil {
return err
}
if err := addProtocolFinalizerMiddlewares(stack, options, "CreateOTAUpdate"); 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 = addOpCreateOTAUpdateValidationMiddleware(stack); err != nil {
return err
}
if err = stack.Initialize.Add(newServiceMetadataMiddleware_opCreateOTAUpdate(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_opCreateOTAUpdate(region string) *awsmiddleware.RegisterServiceMetadata {
return &awsmiddleware.RegisterServiceMetadata{
Region: region,
ServiceID: ServiceID,
OperationName: "CreateOTAUpdate",
}
}
|