aws-sdk-ecs 1.3.0 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -12,9 +12,15 @@ module Aws::ECS
12
12
  include Seahorse::Model
13
13
 
14
14
  AgentUpdateStatus = Shapes::StringShape.new(name: 'AgentUpdateStatus')
15
+ Attachment = Shapes::StructureShape.new(name: 'Attachment')
16
+ AttachmentDetails = Shapes::ListShape.new(name: 'AttachmentDetails')
17
+ AttachmentStateChange = Shapes::StructureShape.new(name: 'AttachmentStateChange')
18
+ AttachmentStateChanges = Shapes::ListShape.new(name: 'AttachmentStateChanges')
19
+ Attachments = Shapes::ListShape.new(name: 'Attachments')
15
20
  Attribute = Shapes::StructureShape.new(name: 'Attribute')
16
21
  AttributeLimitExceededException = Shapes::StructureShape.new(name: 'AttributeLimitExceededException')
17
22
  Attributes = Shapes::ListShape.new(name: 'Attributes')
23
+ AwsVpcConfiguration = Shapes::StructureShape.new(name: 'AwsVpcConfiguration')
18
24
  Boolean = Shapes::BooleanShape.new(name: 'Boolean')
19
25
  BoxedBoolean = Shapes::BooleanShape.new(name: 'BoxedBoolean')
20
26
  BoxedInteger = Shapes::IntegerShape.new(name: 'BoxedInteger')
@@ -32,6 +38,8 @@ module Aws::ECS
32
38
  ContainerInstances = Shapes::ListShape.new(name: 'ContainerInstances')
33
39
  ContainerOverride = Shapes::StructureShape.new(name: 'ContainerOverride')
34
40
  ContainerOverrides = Shapes::ListShape.new(name: 'ContainerOverrides')
41
+ ContainerStateChange = Shapes::StructureShape.new(name: 'ContainerStateChange')
42
+ ContainerStateChanges = Shapes::ListShape.new(name: 'ContainerStateChanges')
35
43
  Containers = Shapes::ListShape.new(name: 'Containers')
36
44
  CreateClusterRequest = Shapes::StructureShape.new(name: 'CreateClusterRequest')
37
45
  CreateClusterResponse = Shapes::StructureShape.new(name: 'CreateClusterResponse')
@@ -105,6 +113,9 @@ module Aws::ECS
105
113
  MountPointList = Shapes::ListShape.new(name: 'MountPointList')
106
114
  NetworkBinding = Shapes::StructureShape.new(name: 'NetworkBinding')
107
115
  NetworkBindings = Shapes::ListShape.new(name: 'NetworkBindings')
116
+ NetworkConfiguration = Shapes::StructureShape.new(name: 'NetworkConfiguration')
117
+ NetworkInterface = Shapes::StructureShape.new(name: 'NetworkInterface')
118
+ NetworkInterfaces = Shapes::ListShape.new(name: 'NetworkInterfaces')
108
119
  NetworkMode = Shapes::StringShape.new(name: 'NetworkMode')
109
120
  NoUpdateAvailableException = Shapes::StructureShape.new(name: 'NoUpdateAvailableException')
110
121
  PlacementConstraint = Shapes::StructureShape.new(name: 'PlacementConstraint')
@@ -173,6 +184,22 @@ module Aws::ECS
173
184
  VolumeFromList = Shapes::ListShape.new(name: 'VolumeFromList')
174
185
  VolumeList = Shapes::ListShape.new(name: 'VolumeList')
175
186
 
187
+ Attachment.add_member(:id, Shapes::ShapeRef.new(shape: String, location_name: "id"))
188
+ Attachment.add_member(:type, Shapes::ShapeRef.new(shape: String, location_name: "type"))
189
+ Attachment.add_member(:status, Shapes::ShapeRef.new(shape: String, location_name: "status"))
190
+ Attachment.add_member(:details, Shapes::ShapeRef.new(shape: AttachmentDetails, location_name: "details"))
191
+ Attachment.struct_class = Types::Attachment
192
+
193
+ AttachmentDetails.member = Shapes::ShapeRef.new(shape: KeyValuePair)
194
+
195
+ AttachmentStateChange.add_member(:attachment_arn, Shapes::ShapeRef.new(shape: String, required: true, location_name: "attachmentArn"))
196
+ AttachmentStateChange.add_member(:status, Shapes::ShapeRef.new(shape: String, required: true, location_name: "status"))
197
+ AttachmentStateChange.struct_class = Types::AttachmentStateChange
198
+
199
+ AttachmentStateChanges.member = Shapes::ShapeRef.new(shape: AttachmentStateChange)
200
+
201
+ Attachments.member = Shapes::ShapeRef.new(shape: Attachment)
202
+
176
203
  Attribute.add_member(:name, Shapes::ShapeRef.new(shape: String, required: true, location_name: "name"))
177
204
  Attribute.add_member(:value, Shapes::ShapeRef.new(shape: String, location_name: "value"))
178
205
  Attribute.add_member(:target_type, Shapes::ShapeRef.new(shape: TargetType, location_name: "targetType"))
@@ -181,6 +208,10 @@ module Aws::ECS
181
208
 
182
209
  Attributes.member = Shapes::ShapeRef.new(shape: Attribute)
183
210
 
211
+ AwsVpcConfiguration.add_member(:subnets, Shapes::ShapeRef.new(shape: StringList, required: true, location_name: "subnets"))
212
+ AwsVpcConfiguration.add_member(:security_groups, Shapes::ShapeRef.new(shape: StringList, location_name: "securityGroups"))
213
+ AwsVpcConfiguration.struct_class = Types::AwsVpcConfiguration
214
+
184
215
  Cluster.add_member(:cluster_arn, Shapes::ShapeRef.new(shape: String, location_name: "clusterArn"))
185
216
  Cluster.add_member(:cluster_name, Shapes::ShapeRef.new(shape: String, location_name: "clusterName"))
186
217
  Cluster.add_member(:status, Shapes::ShapeRef.new(shape: String, location_name: "status"))
@@ -199,6 +230,7 @@ module Aws::ECS
199
230
  Container.add_member(:exit_code, Shapes::ShapeRef.new(shape: BoxedInteger, location_name: "exitCode"))
200
231
  Container.add_member(:reason, Shapes::ShapeRef.new(shape: String, location_name: "reason"))
201
232
  Container.add_member(:network_bindings, Shapes::ShapeRef.new(shape: NetworkBindings, location_name: "networkBindings"))
233
+ Container.add_member(:network_interfaces, Shapes::ShapeRef.new(shape: NetworkInterfaces, location_name: "networkInterfaces"))
202
234
  Container.struct_class = Types::Container
203
235
 
204
236
  ContainerDefinition.add_member(:name, Shapes::ShapeRef.new(shape: String, location_name: "name"))
@@ -245,6 +277,7 @@ module Aws::ECS
245
277
  ContainerInstance.add_member(:agent_update_status, Shapes::ShapeRef.new(shape: AgentUpdateStatus, location_name: "agentUpdateStatus"))
246
278
  ContainerInstance.add_member(:attributes, Shapes::ShapeRef.new(shape: Attributes, location_name: "attributes"))
247
279
  ContainerInstance.add_member(:registered_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "registeredAt"))
280
+ ContainerInstance.add_member(:attachments, Shapes::ShapeRef.new(shape: Attachments, location_name: "attachments"))
248
281
  ContainerInstance.struct_class = Types::ContainerInstance
249
282
 
250
283
  ContainerInstances.member = Shapes::ShapeRef.new(shape: ContainerInstance)
@@ -259,6 +292,15 @@ module Aws::ECS
259
292
 
260
293
  ContainerOverrides.member = Shapes::ShapeRef.new(shape: ContainerOverride)
261
294
 
295
+ ContainerStateChange.add_member(:container_name, Shapes::ShapeRef.new(shape: String, location_name: "containerName"))
296
+ ContainerStateChange.add_member(:exit_code, Shapes::ShapeRef.new(shape: BoxedInteger, location_name: "exitCode"))
297
+ ContainerStateChange.add_member(:network_bindings, Shapes::ShapeRef.new(shape: NetworkBindings, location_name: "networkBindings"))
298
+ ContainerStateChange.add_member(:reason, Shapes::ShapeRef.new(shape: String, location_name: "reason"))
299
+ ContainerStateChange.add_member(:status, Shapes::ShapeRef.new(shape: String, location_name: "status"))
300
+ ContainerStateChange.struct_class = Types::ContainerStateChange
301
+
302
+ ContainerStateChanges.member = Shapes::ShapeRef.new(shape: ContainerStateChange)
303
+
262
304
  Containers.member = Shapes::ShapeRef.new(shape: Container)
263
305
 
264
306
  CreateClusterRequest.add_member(:cluster_name, Shapes::ShapeRef.new(shape: String, location_name: "clusterName"))
@@ -277,6 +319,7 @@ module Aws::ECS
277
319
  CreateServiceRequest.add_member(:deployment_configuration, Shapes::ShapeRef.new(shape: DeploymentConfiguration, location_name: "deploymentConfiguration"))
278
320
  CreateServiceRequest.add_member(:placement_constraints, Shapes::ShapeRef.new(shape: PlacementConstraints, location_name: "placementConstraints"))
279
321
  CreateServiceRequest.add_member(:placement_strategy, Shapes::ShapeRef.new(shape: PlacementStrategies, location_name: "placementStrategy"))
322
+ CreateServiceRequest.add_member(:network_configuration, Shapes::ShapeRef.new(shape: NetworkConfiguration, location_name: "networkConfiguration"))
280
323
  CreateServiceRequest.struct_class = Types::CreateServiceRequest
281
324
 
282
325
  CreateServiceResponse.add_member(:service, Shapes::ShapeRef.new(shape: Service, location_name: "service"))
@@ -310,6 +353,7 @@ module Aws::ECS
310
353
  Deployment.add_member(:running_count, Shapes::ShapeRef.new(shape: Integer, location_name: "runningCount"))
311
354
  Deployment.add_member(:created_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "createdAt"))
312
355
  Deployment.add_member(:updated_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "updatedAt"))
356
+ Deployment.add_member(:network_configuration, Shapes::ShapeRef.new(shape: NetworkConfiguration, location_name: "networkConfiguration"))
313
357
  Deployment.struct_class = Types::Deployment
314
358
 
315
359
  DeploymentConfiguration.add_member(:maximum_percent, Shapes::ShapeRef.new(shape: BoxedInteger, location_name: "maximumPercent"))
@@ -524,6 +568,16 @@ module Aws::ECS
524
568
 
525
569
  NetworkBindings.member = Shapes::ShapeRef.new(shape: NetworkBinding)
526
570
 
571
+ NetworkConfiguration.add_member(:awsvpc_configuration, Shapes::ShapeRef.new(shape: AwsVpcConfiguration, location_name: "awsvpcConfiguration"))
572
+ NetworkConfiguration.struct_class = Types::NetworkConfiguration
573
+
574
+ NetworkInterface.add_member(:attachment_id, Shapes::ShapeRef.new(shape: String, location_name: "attachmentId"))
575
+ NetworkInterface.add_member(:private_ipv_4_address, Shapes::ShapeRef.new(shape: String, location_name: "privateIpv4Address"))
576
+ NetworkInterface.add_member(:ipv6_address, Shapes::ShapeRef.new(shape: String, location_name: "ipv6Address"))
577
+ NetworkInterface.struct_class = Types::NetworkInterface
578
+
579
+ NetworkInterfaces.member = Shapes::ShapeRef.new(shape: NetworkInterface)
580
+
527
581
  PlacementConstraint.add_member(:type, Shapes::ShapeRef.new(shape: PlacementConstraintType, location_name: "type"))
528
582
  PlacementConstraint.add_member(:expression, Shapes::ShapeRef.new(shape: String, location_name: "expression"))
529
583
  PlacementConstraint.struct_class = Types::PlacementConstraint
@@ -593,6 +647,7 @@ module Aws::ECS
593
647
  RunTaskRequest.add_member(:group, Shapes::ShapeRef.new(shape: String, location_name: "group"))
594
648
  RunTaskRequest.add_member(:placement_constraints, Shapes::ShapeRef.new(shape: PlacementConstraints, location_name: "placementConstraints"))
595
649
  RunTaskRequest.add_member(:placement_strategy, Shapes::ShapeRef.new(shape: PlacementStrategies, location_name: "placementStrategy"))
650
+ RunTaskRequest.add_member(:network_configuration, Shapes::ShapeRef.new(shape: NetworkConfiguration, location_name: "networkConfiguration"))
596
651
  RunTaskRequest.struct_class = Types::RunTaskRequest
597
652
 
598
653
  RunTaskResponse.add_member(:tasks, Shapes::ShapeRef.new(shape: Tasks, location_name: "tasks"))
@@ -615,6 +670,7 @@ module Aws::ECS
615
670
  Service.add_member(:created_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "createdAt"))
616
671
  Service.add_member(:placement_constraints, Shapes::ShapeRef.new(shape: PlacementConstraints, location_name: "placementConstraints"))
617
672
  Service.add_member(:placement_strategy, Shapes::ShapeRef.new(shape: PlacementStrategies, location_name: "placementStrategy"))
673
+ Service.add_member(:network_configuration, Shapes::ShapeRef.new(shape: NetworkConfiguration, location_name: "networkConfiguration"))
618
674
  Service.struct_class = Types::Service
619
675
 
620
676
  ServiceEvent.add_member(:id, Shapes::ShapeRef.new(shape: String, location_name: "id"))
@@ -632,6 +688,7 @@ module Aws::ECS
632
688
  StartTaskRequest.add_member(:container_instances, Shapes::ShapeRef.new(shape: StringList, required: true, location_name: "containerInstances"))
633
689
  StartTaskRequest.add_member(:started_by, Shapes::ShapeRef.new(shape: String, location_name: "startedBy"))
634
690
  StartTaskRequest.add_member(:group, Shapes::ShapeRef.new(shape: String, location_name: "group"))
691
+ StartTaskRequest.add_member(:network_configuration, Shapes::ShapeRef.new(shape: NetworkConfiguration, location_name: "networkConfiguration"))
635
692
  StartTaskRequest.struct_class = Types::StartTaskRequest
636
693
 
637
694
  StartTaskResponse.add_member(:tasks, Shapes::ShapeRef.new(shape: Tasks, location_name: "tasks"))
@@ -664,6 +721,8 @@ module Aws::ECS
664
721
  SubmitTaskStateChangeRequest.add_member(:task, Shapes::ShapeRef.new(shape: String, location_name: "task"))
665
722
  SubmitTaskStateChangeRequest.add_member(:status, Shapes::ShapeRef.new(shape: String, location_name: "status"))
666
723
  SubmitTaskStateChangeRequest.add_member(:reason, Shapes::ShapeRef.new(shape: String, location_name: "reason"))
724
+ SubmitTaskStateChangeRequest.add_member(:containers, Shapes::ShapeRef.new(shape: ContainerStateChanges, location_name: "containers"))
725
+ SubmitTaskStateChangeRequest.add_member(:attachments, Shapes::ShapeRef.new(shape: AttachmentStateChanges, location_name: "attachments"))
667
726
  SubmitTaskStateChangeRequest.struct_class = Types::SubmitTaskStateChangeRequest
668
727
 
669
728
  SubmitTaskStateChangeResponse.add_member(:acknowledgment, Shapes::ShapeRef.new(shape: String, location_name: "acknowledgment"))
@@ -684,6 +743,7 @@ module Aws::ECS
684
743
  Task.add_member(:started_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "startedAt"))
685
744
  Task.add_member(:stopped_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "stoppedAt"))
686
745
  Task.add_member(:group, Shapes::ShapeRef.new(shape: String, location_name: "group"))
746
+ Task.add_member(:attachments, Shapes::ShapeRef.new(shape: Attachments, location_name: "attachments"))
687
747
  Task.struct_class = Types::Task
688
748
 
689
749
  TaskDefinition.add_member(:task_definition_arn, Shapes::ShapeRef.new(shape: String, location_name: "taskDefinitionArn"))
@@ -738,6 +798,7 @@ module Aws::ECS
738
798
  UpdateServiceRequest.add_member(:desired_count, Shapes::ShapeRef.new(shape: BoxedInteger, location_name: "desiredCount"))
739
799
  UpdateServiceRequest.add_member(:task_definition, Shapes::ShapeRef.new(shape: String, location_name: "taskDefinition"))
740
800
  UpdateServiceRequest.add_member(:deployment_configuration, Shapes::ShapeRef.new(shape: DeploymentConfiguration, location_name: "deploymentConfiguration"))
801
+ UpdateServiceRequest.add_member(:network_configuration, Shapes::ShapeRef.new(shape: NetworkConfiguration, location_name: "networkConfiguration"))
741
802
  UpdateServiceRequest.struct_class = Types::UpdateServiceRequest
742
803
 
743
804
  UpdateServiceResponse.add_member(:service, Shapes::ShapeRef.new(shape: Service, location_name: "service"))
@@ -8,6 +8,64 @@
8
8
  module Aws::ECS
9
9
  module Types
10
10
 
11
+ # An object representing a container instance or task attachment.
12
+ #
13
+ # @!attribute [rw] id
14
+ # The unique identifier for the attachment.
15
+ # @return [String]
16
+ #
17
+ # @!attribute [rw] type
18
+ # The type of the attachment, such as an `ElasticNetworkInterface`.
19
+ # @return [String]
20
+ #
21
+ # @!attribute [rw] status
22
+ # The status of the attachment. Valid values are `PRECREATED`,
23
+ # `CREATED`, `ATTACHING`, `ATTACHED`, `DETACHING`, `DETACHED`, and
24
+ # `DELETED`.
25
+ # @return [String]
26
+ #
27
+ # @!attribute [rw] details
28
+ # Details of the attachment. For Elastic Network Interfaces, this
29
+ # includes the network interface ID, the MAC address, the subnet ID,
30
+ # and the private IPv4 address.
31
+ # @return [Array<Types::KeyValuePair>]
32
+ #
33
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/Attachment AWS API Documentation
34
+ #
35
+ class Attachment < Struct.new(
36
+ :id,
37
+ :type,
38
+ :status,
39
+ :details)
40
+ include Aws::Structure
41
+ end
42
+
43
+ # An object representing a change in state for a task attachment.
44
+ #
45
+ # @note When making an API call, you may pass AttachmentStateChange
46
+ # data as a hash:
47
+ #
48
+ # {
49
+ # attachment_arn: "String", # required
50
+ # status: "String", # required
51
+ # }
52
+ #
53
+ # @!attribute [rw] attachment_arn
54
+ # The Amazon Resource Name (ARN) of the attachment.
55
+ # @return [String]
56
+ #
57
+ # @!attribute [rw] status
58
+ # The status of the attachment.
59
+ # @return [String]
60
+ #
61
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/AttachmentStateChange AWS API Documentation
62
+ #
63
+ class AttachmentStateChange < Struct.new(
64
+ :attachment_arn,
65
+ :status)
66
+ include Aws::Structure
67
+ end
68
+
11
69
  # An attribute is a name-value pair associated with an Amazon ECS
12
70
  # object. Attributes enable you to extend the Amazon ECS data model by
13
71
  # adding custom metadata to your resources. For more information, see
@@ -59,6 +117,35 @@ module Aws::ECS
59
117
  include Aws::Structure
60
118
  end
61
119
 
120
+ # An object representing the subnets and security groups for a task or
121
+ # service.
122
+ #
123
+ # @note When making an API call, you may pass AwsVpcConfiguration
124
+ # data as a hash:
125
+ #
126
+ # {
127
+ # subnets: ["String"], # required
128
+ # security_groups: ["String"],
129
+ # }
130
+ #
131
+ # @!attribute [rw] subnets
132
+ # The subnets associated with the task or service.
133
+ # @return [Array<String>]
134
+ #
135
+ # @!attribute [rw] security_groups
136
+ # The security groups associated with the task or service. If you do
137
+ # not specify a security group, the default security group for the VPC
138
+ # is used.
139
+ # @return [Array<String>]
140
+ #
141
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/AwsVpcConfiguration AWS API Documentation
142
+ #
143
+ class AwsVpcConfiguration < Struct.new(
144
+ :subnets,
145
+ :security_groups)
146
+ include Aws::Structure
147
+ end
148
+
62
149
  # A regional grouping of one or more container instances on which you
63
150
  # can run task requests. Each account receives a default cluster the
64
151
  # first time you use the Amazon ECS service, but you may also create
@@ -145,6 +232,10 @@ module Aws::ECS
145
232
  # The network bindings associated with the container.
146
233
  # @return [Array<Types::NetworkBinding>]
147
234
  #
235
+ # @!attribute [rw] network_interfaces
236
+ # The network interfaces associated with the container.
237
+ # @return [Array<Types::NetworkInterface>]
238
+ #
148
239
  # @see http://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/Container AWS API Documentation
149
240
  #
150
241
  class Container < Struct.new(
@@ -154,7 +245,8 @@ module Aws::ECS
154
245
  :last_status,
155
246
  :exit_code,
156
247
  :reason,
157
- :network_bindings)
248
+ :network_bindings,
249
+ :network_interfaces)
158
250
  include Aws::Structure
159
251
  end
160
252
 
@@ -904,6 +996,11 @@ module Aws::ECS
904
996
  # The Unix timestamp for when the container instance was registered.
905
997
  # @return [Time]
906
998
  #
999
+ # @!attribute [rw] attachments
1000
+ # The Elastic Network Interfaces associated with the container
1001
+ # instance.
1002
+ # @return [Array<Types::Attachment>]
1003
+ #
907
1004
  # @see http://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/ContainerInstance AWS API Documentation
908
1005
  #
909
1006
  class ContainerInstance < Struct.new(
@@ -919,7 +1016,8 @@ module Aws::ECS
919
1016
  :pending_tasks_count,
920
1017
  :agent_update_status,
921
1018
  :attributes,
922
- :registered_at)
1019
+ :registered_at,
1020
+ :attachments)
923
1021
  include Aws::Structure
924
1022
  end
925
1023
 
@@ -992,6 +1090,58 @@ module Aws::ECS
992
1090
  include Aws::Structure
993
1091
  end
994
1092
 
1093
+ # An object representing a change in state for a container.
1094
+ #
1095
+ # @note When making an API call, you may pass ContainerStateChange
1096
+ # data as a hash:
1097
+ #
1098
+ # {
1099
+ # container_name: "String",
1100
+ # exit_code: 1,
1101
+ # network_bindings: [
1102
+ # {
1103
+ # bind_ip: "String",
1104
+ # container_port: 1,
1105
+ # host_port: 1,
1106
+ # protocol: "tcp", # accepts tcp, udp
1107
+ # },
1108
+ # ],
1109
+ # reason: "String",
1110
+ # status: "String",
1111
+ # }
1112
+ #
1113
+ # @!attribute [rw] container_name
1114
+ # The name of the container.
1115
+ # @return [String]
1116
+ #
1117
+ # @!attribute [rw] exit_code
1118
+ # The exit code for the container, if the state change is a result of
1119
+ # the container exiting.
1120
+ # @return [Integer]
1121
+ #
1122
+ # @!attribute [rw] network_bindings
1123
+ # Any network bindings associated with the container.
1124
+ # @return [Array<Types::NetworkBinding>]
1125
+ #
1126
+ # @!attribute [rw] reason
1127
+ # The reason for the state change.
1128
+ # @return [String]
1129
+ #
1130
+ # @!attribute [rw] status
1131
+ # The status of the container.
1132
+ # @return [String]
1133
+ #
1134
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/ContainerStateChange AWS API Documentation
1135
+ #
1136
+ class ContainerStateChange < Struct.new(
1137
+ :container_name,
1138
+ :exit_code,
1139
+ :network_bindings,
1140
+ :reason,
1141
+ :status)
1142
+ include Aws::Structure
1143
+ end
1144
+
995
1145
  # @note When making an API call, you may pass CreateClusterRequest
996
1146
  # data as a hash:
997
1147
  #
@@ -1058,6 +1208,12 @@ module Aws::ECS
1058
1208
  # field: "String",
1059
1209
  # },
1060
1210
  # ],
1211
+ # network_configuration: {
1212
+ # awsvpc_configuration: {
1213
+ # subnets: ["String"], # required
1214
+ # security_groups: ["String"],
1215
+ # },
1216
+ # },
1061
1217
  # }
1062
1218
  #
1063
1219
  # @!attribute [rw] cluster
@@ -1117,21 +1273,31 @@ module Aws::ECS
1117
1273
  # @!attribute [rw] role
1118
1274
  # The name or full Amazon Resource Name (ARN) of the IAM role that
1119
1275
  # allows Amazon ECS to make calls to your load balancer on your
1120
- # behalf. This parameter is required if you are using a load balancer
1121
- # with your service. If you specify the `role` parameter, you must
1276
+ # behalf. This parameter is only permitted if you are using a load
1277
+ # balancer with your service and your task definition does not use the
1278
+ # `awsvpc` network mode. If you specify the `role` parameter, you must
1122
1279
  # also specify a load balancer object with the `loadBalancers`
1123
1280
  # parameter.
1124
1281
  #
1282
+ # If your account has already created the Amazon ECS service-linked
1283
+ # role, that role is used by default for your service unless you
1284
+ # specify a role here. The service-linked role is required if your
1285
+ # task definition uses the `awsvpc` network mode, in which case you
1286
+ # should not specify a role here. For more information, see [Using
1287
+ # Service-Linked Roles for Amazon ECS][1] in the *Amazon EC2 Container
1288
+ # Service Developer Guide*.
1289
+ #
1125
1290
  # If your specified role has a path other than `/`, then you must
1126
1291
  # either specify the full role ARN (this is recommended) or prefix the
1127
1292
  # role name with the path. For example, if a role with the name `bar`
1128
1293
  # has a path of `/foo/` then you would specify `/foo/bar` as the role
1129
- # name. For more information, see [Friendly Names and Paths][1] in the
1294
+ # name. For more information, see [Friendly Names and Paths][2] in the
1130
1295
  # *IAM User Guide*.
1131
1296
  #
1132
1297
  #
1133
1298
  #
1134
- # [1]: http://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-friendly-names
1299
+ # [1]: http://docs.aws.amazon.com/AmazonECS/latest/developerguideusing-service-linked-roles.html
1300
+ # [2]: http://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-friendly-names
1135
1301
  # @return [String]
1136
1302
  #
1137
1303
  # @!attribute [rw] deployment_configuration
@@ -1152,6 +1318,19 @@ module Aws::ECS
1152
1318
  # can specify a maximum of 5 strategy rules per service.
1153
1319
  # @return [Array<Types::PlacementStrategy>]
1154
1320
  #
1321
+ # @!attribute [rw] network_configuration
1322
+ # The network configuration for the service. This parameter is
1323
+ # required for task definitions that use the `awsvpc` network mode to
1324
+ # receive their own Elastic Network Interface, and it is not supported
1325
+ # for other network modes. For more information, see [Task
1326
+ # Networking][1] in the *Amazon EC2 Container Service Developer
1327
+ # Guide*.
1328
+ #
1329
+ #
1330
+ #
1331
+ # [1]: http://docs.aws.amazon.com/AmazonECS/latest/developerguidetask-networking.html
1332
+ # @return [Types::NetworkConfiguration]
1333
+ #
1155
1334
  # @see http://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/CreateServiceRequest AWS API Documentation
1156
1335
  #
1157
1336
  class CreateServiceRequest < Struct.new(
@@ -1164,7 +1343,8 @@ module Aws::ECS
1164
1343
  :role,
1165
1344
  :deployment_configuration,
1166
1345
  :placement_constraints,
1167
- :placement_strategy)
1346
+ :placement_strategy,
1347
+ :network_configuration)
1168
1348
  include Aws::Structure
1169
1349
  end
1170
1350
 
@@ -1337,6 +1517,12 @@ module Aws::ECS
1337
1517
  # The Unix timestamp for when the service was last updated.
1338
1518
  # @return [Time]
1339
1519
  #
1520
+ # @!attribute [rw] network_configuration
1521
+ # The VPC subnet and security group configuration for tasks that
1522
+ # receive their own Elastic Network Interface by using the `awsvpc`
1523
+ # networking mode.
1524
+ # @return [Types::NetworkConfiguration]
1525
+ #
1340
1526
  # @see http://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/Deployment AWS API Documentation
1341
1527
  #
1342
1528
  class Deployment < Struct.new(
@@ -1347,7 +1533,8 @@ module Aws::ECS
1347
1533
  :pending_count,
1348
1534
  :running_count,
1349
1535
  :created_at,
1350
- :updated_at)
1536
+ :updated_at,
1537
+ :network_configuration)
1351
1538
  include Aws::Structure
1352
1539
  end
1353
1540
 
@@ -2788,6 +2975,54 @@ module Aws::ECS
2788
2975
  include Aws::Structure
2789
2976
  end
2790
2977
 
2978
+ # An object representing the network configuration for a task or
2979
+ # service.
2980
+ #
2981
+ # @note When making an API call, you may pass NetworkConfiguration
2982
+ # data as a hash:
2983
+ #
2984
+ # {
2985
+ # awsvpc_configuration: {
2986
+ # subnets: ["String"], # required
2987
+ # security_groups: ["String"],
2988
+ # },
2989
+ # }
2990
+ #
2991
+ # @!attribute [rw] awsvpc_configuration
2992
+ # The VPC subnets and security groups associated with a task.
2993
+ # @return [Types::AwsVpcConfiguration]
2994
+ #
2995
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/NetworkConfiguration AWS API Documentation
2996
+ #
2997
+ class NetworkConfiguration < Struct.new(
2998
+ :awsvpc_configuration)
2999
+ include Aws::Structure
3000
+ end
3001
+
3002
+ # An object representing the Elastic Network Interface for tasks that
3003
+ # use the `awsvpc` network mode.
3004
+ #
3005
+ # @!attribute [rw] attachment_id
3006
+ # The attachment ID for the network interface.
3007
+ # @return [String]
3008
+ #
3009
+ # @!attribute [rw] private_ipv_4_address
3010
+ # The private IPv4 address for the network interface.
3011
+ # @return [String]
3012
+ #
3013
+ # @!attribute [rw] ipv6_address
3014
+ # The private IPv6 address for the network interface.
3015
+ # @return [String]
3016
+ #
3017
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/NetworkInterface AWS API Documentation
3018
+ #
3019
+ class NetworkInterface < Struct.new(
3020
+ :attachment_id,
3021
+ :private_ipv_4_address,
3022
+ :ipv6_address)
3023
+ include Aws::Structure
3024
+ end
3025
+
2791
3026
  # An object representing a constraint on task placement. For more
2792
3027
  # information, see [Task Placement Constraints][1] in the *Amazon EC2
2793
3028
  # Container Service Developer Guide*.
@@ -3098,7 +3333,7 @@ module Aws::ECS
3098
3333
  # {
3099
3334
  # family: "String", # required
3100
3335
  # task_role_arn: "String",
3101
- # network_mode: "bridge", # accepts bridge, host, none
3336
+ # network_mode: "bridge", # accepts bridge, host, awsvpc, none
3102
3337
  # container_definitions: [ # required
3103
3338
  # {
3104
3339
  # name: "String",
@@ -3221,25 +3456,37 @@ module Aws::ECS
3221
3456
  #
3222
3457
  # @!attribute [rw] network_mode
3223
3458
  # The Docker networking mode to use for the containers in the task.
3224
- # The valid values are `none`, `bridge`, and `host`.
3225
- #
3226
- # The default Docker network mode is `bridge`. If the network mode is
3227
- # set to `none`, you cannot specify port mappings in your container
3459
+ # The valid values are `none`, `bridge`, `awsvpc`, and `host`. The
3460
+ # default Docker network mode is `bridge`. If the network mode is set
3461
+ # to `none`, you cannot specify port mappings in your container
3228
3462
  # definitions, and the task's containers do not have external
3229
- # connectivity. The `host` network mode offers the highest networking
3230
- # performance for containers because they use the host network stack
3231
- # instead of the virtualized network stack provided by the `bridge`
3232
- # mode; however, exposed container ports are mapped directly to the
3233
- # corresponding host port, so you cannot take advantage of dynamic
3234
- # host port mappings or run multiple instantiations of the same task
3235
- # on a single container instance if port mappings are used.
3463
+ # connectivity. The `host` and `awsvpc` network modes offer the
3464
+ # highest networking performance for containers because they use the
3465
+ # EC2 network stack instead of the virtualized network stack provided
3466
+ # by the `bridge` mode.
3467
+ #
3468
+ # With the `host` and `awsvpc` network modes, exposed container ports
3469
+ # are mapped directly to the corresponding host port (for the `host`
3470
+ # network mode) or the attached ENI port (for the `awsvpc` network
3471
+ # mode), so you cannot take advantage of dynamic host port mappings.
3472
+ #
3473
+ # If the network mode is `awsvpc`, the task is allocated an Elastic
3474
+ # Network Interface, and you must specify a NetworkConfiguration when
3475
+ # you create a service or run a task with the task definition. For
3476
+ # more information, see [Task Networking][1] in the *Amazon EC2
3477
+ # Container Service Developer Guide*.
3236
3478
  #
3237
- # For more information, see [Network settings][1] in the *Docker run
3479
+ # If the network mode is `host`, you can not run multiple
3480
+ # instantiations of the same task on a single container instance when
3481
+ # port mappings are used.
3482
+ #
3483
+ # For more information, see [Network settings][2] in the *Docker run
3238
3484
  # reference*.
3239
3485
  #
3240
3486
  #
3241
3487
  #
3242
- # [1]: https://docs.docker.com/engine/reference/run/#network-settings
3488
+ # [1]: http://docs.aws.amazon.com/AmazonECS/latest/developerguidetask-networking.html
3489
+ # [2]: https://docs.docker.com/engine/reference/run/#network-settings
3243
3490
  # @return [String]
3244
3491
  #
3245
3492
  # @!attribute [rw] container_definitions
@@ -3377,6 +3624,12 @@ module Aws::ECS
3377
3624
  # field: "String",
3378
3625
  # },
3379
3626
  # ],
3627
+ # network_configuration: {
3628
+ # awsvpc_configuration: {
3629
+ # subnets: ["String"], # required
3630
+ # security_groups: ["String"],
3631
+ # },
3632
+ # },
3380
3633
  # }
3381
3634
  #
3382
3635
  # @!attribute [rw] cluster
@@ -3442,6 +3695,18 @@ module Aws::ECS
3442
3695
  # a maximum of 5 strategy rules per task.
3443
3696
  # @return [Array<Types::PlacementStrategy>]
3444
3697
  #
3698
+ # @!attribute [rw] network_configuration
3699
+ # The network configuration for the task. This parameter is required
3700
+ # for task definitions that use the `awsvpc` network mode to receive
3701
+ # their own Elastic Network Interface, and it is not supported for
3702
+ # other network modes. For more information, see [Task Networking][1]
3703
+ # in the *Amazon EC2 Container Service Developer Guide*.
3704
+ #
3705
+ #
3706
+ #
3707
+ # [1]: http://docs.aws.amazon.com/AmazonECS/latest/developerguidetask-networking.html
3708
+ # @return [Types::NetworkConfiguration]
3709
+ #
3445
3710
  # @see http://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/RunTaskRequest AWS API Documentation
3446
3711
  #
3447
3712
  class RunTaskRequest < Struct.new(
@@ -3452,7 +3717,8 @@ module Aws::ECS
3452
3717
  :started_by,
3453
3718
  :group,
3454
3719
  :placement_constraints,
3455
- :placement_strategy)
3720
+ :placement_strategy,
3721
+ :network_configuration)
3456
3722
  include Aws::Structure
3457
3723
  end
3458
3724
 
@@ -3563,6 +3829,12 @@ module Aws::ECS
3563
3829
  # placed.
3564
3830
  # @return [Array<Types::PlacementStrategy>]
3565
3831
  #
3832
+ # @!attribute [rw] network_configuration
3833
+ # The VPC subnet and security group configuration for tasks that
3834
+ # receive their own Elastic Network Interface by using the `awsvpc`
3835
+ # networking mode.
3836
+ # @return [Types::NetworkConfiguration]
3837
+ #
3566
3838
  # @see http://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/Service AWS API Documentation
3567
3839
  #
3568
3840
  class Service < Struct.new(
@@ -3581,7 +3853,8 @@ module Aws::ECS
3581
3853
  :events,
3582
3854
  :created_at,
3583
3855
  :placement_constraints,
3584
- :placement_strategy)
3856
+ :placement_strategy,
3857
+ :network_configuration)
3585
3858
  include Aws::Structure
3586
3859
  end
3587
3860
 
@@ -3635,6 +3908,12 @@ module Aws::ECS
3635
3908
  # container_instances: ["String"], # required
3636
3909
  # started_by: "String",
3637
3910
  # group: "String",
3911
+ # network_configuration: {
3912
+ # awsvpc_configuration: {
3913
+ # subnets: ["String"], # required
3914
+ # security_groups: ["String"],
3915
+ # },
3916
+ # },
3638
3917
  # }
3639
3918
  #
3640
3919
  # @!attribute [rw] cluster
@@ -3690,6 +3969,12 @@ module Aws::ECS
3690
3969
  # family:my-family-name).
3691
3970
  # @return [String]
3692
3971
  #
3972
+ # @!attribute [rw] network_configuration
3973
+ # The VPC subnet and security group configuration for tasks that
3974
+ # receive their own Elastic Network Interface by using the `awsvpc`
3975
+ # networking mode.
3976
+ # @return [Types::NetworkConfiguration]
3977
+ #
3693
3978
  # @see http://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/StartTaskRequest AWS API Documentation
3694
3979
  #
3695
3980
  class StartTaskRequest < Struct.new(
@@ -3698,7 +3983,8 @@ module Aws::ECS
3698
3983
  :overrides,
3699
3984
  :container_instances,
3700
3985
  :started_by,
3701
- :group)
3986
+ :group,
3987
+ :network_configuration)
3702
3988
  include Aws::Structure
3703
3989
  end
3704
3990
 
@@ -3850,6 +4136,28 @@ module Aws::ECS
3850
4136
  # task: "String",
3851
4137
  # status: "String",
3852
4138
  # reason: "String",
4139
+ # containers: [
4140
+ # {
4141
+ # container_name: "String",
4142
+ # exit_code: 1,
4143
+ # network_bindings: [
4144
+ # {
4145
+ # bind_ip: "String",
4146
+ # container_port: 1,
4147
+ # host_port: 1,
4148
+ # protocol: "tcp", # accepts tcp, udp
4149
+ # },
4150
+ # ],
4151
+ # reason: "String",
4152
+ # status: "String",
4153
+ # },
4154
+ # ],
4155
+ # attachments: [
4156
+ # {
4157
+ # attachment_arn: "String", # required
4158
+ # status: "String", # required
4159
+ # },
4160
+ # ],
3853
4161
  # }
3854
4162
  #
3855
4163
  # @!attribute [rw] cluster
@@ -3870,13 +4178,23 @@ module Aws::ECS
3870
4178
  # The reason for the state change request.
3871
4179
  # @return [String]
3872
4180
  #
4181
+ # @!attribute [rw] containers
4182
+ # Any containers associated with the state change request.
4183
+ # @return [Array<Types::ContainerStateChange>]
4184
+ #
4185
+ # @!attribute [rw] attachments
4186
+ # Any attachments associated with the state change request.
4187
+ # @return [Array<Types::AttachmentStateChange>]
4188
+ #
3873
4189
  # @see http://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/SubmitTaskStateChangeRequest AWS API Documentation
3874
4190
  #
3875
4191
  class SubmitTaskStateChangeRequest < Struct.new(
3876
4192
  :cluster,
3877
4193
  :task,
3878
4194
  :status,
3879
- :reason)
4195
+ :reason,
4196
+ :containers,
4197
+ :attachments)
3880
4198
  include Aws::Structure
3881
4199
  end
3882
4200
 
@@ -3966,6 +4284,11 @@ module Aws::ECS
3966
4284
  # The name of the task group associated with the task.
3967
4285
  # @return [String]
3968
4286
  #
4287
+ # @!attribute [rw] attachments
4288
+ # The Elastic Network Adapter associated with the task if the task
4289
+ # uses the `awsvpc` network mode.
4290
+ # @return [Array<Types::Attachment>]
4291
+ #
3969
4292
  # @see http://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/Task AWS API Documentation
3970
4293
  #
3971
4294
  class Task < Struct.new(
@@ -3983,7 +4306,8 @@ module Aws::ECS
3983
4306
  :created_at,
3984
4307
  :started_at,
3985
4308
  :stopped_at,
3986
- :group)
4309
+ :group,
4310
+ :attachments)
3987
4311
  include Aws::Structure
3988
4312
  end
3989
4313
 
@@ -4017,13 +4341,15 @@ module Aws::ECS
4017
4341
  #
4018
4342
  # @!attribute [rw] network_mode
4019
4343
  # The Docker networking mode to use for the containers in the task.
4020
- # The valid values are `none`, `bridge`, and `host`.
4344
+ # The valid values are `none`, `bridge`, `awsvpc`, and `host`.
4021
4345
  #
4022
4346
  # If the network mode is `none`, the containers do not have external
4023
- # connectivity. The default Docker network mode is `bridge`. The
4024
- # `host` network mode offers the highest networking performance for
4025
- # containers because it uses the host network stack instead of the
4026
- # virtualized network stack provided by the `bridge` mode.
4347
+ # connectivity. The default Docker network mode is `bridge`. If the
4348
+ # network mode is `awsvpc`, the task is allocated an Elastic Network
4349
+ # Interface. The `host` and `awsvpc` network modes offer the highest
4350
+ # networking performance for containers because they use the EC2
4351
+ # network stack instead of the virtualized network stack provided by
4352
+ # the `bridge` mode.
4027
4353
  #
4028
4354
  # For more information, see [Network settings][1] in the *Docker run
4029
4355
  # reference*.
@@ -4297,6 +4623,12 @@ module Aws::ECS
4297
4623
  # maximum_percent: 1,
4298
4624
  # minimum_healthy_percent: 1,
4299
4625
  # },
4626
+ # network_configuration: {
4627
+ # awsvpc_configuration: {
4628
+ # subnets: ["String"], # required
4629
+ # security_groups: ["String"],
4630
+ # },
4631
+ # },
4300
4632
  # }
4301
4633
  #
4302
4634
  # @!attribute [rw] cluster
@@ -4329,6 +4661,27 @@ module Aws::ECS
4329
4661
  # tasks.
4330
4662
  # @return [Types::DeploymentConfiguration]
4331
4663
  #
4664
+ # @!attribute [rw] network_configuration
4665
+ # The network configuration for the service. This parameter is
4666
+ # required for task definitions that use the `awsvpc` network mode to
4667
+ # receive their own Elastic Network Interface, and it is not supported
4668
+ # for other network modes. For more information, see [Task
4669
+ # Networking][1] in the *Amazon EC2 Container Service Developer
4670
+ # Guide*.
4671
+ #
4672
+ # <note markdown="1"> Updating a service to add a subnet to a list of existing subnets
4673
+ # does not trigger a service deployment. For example, if your network
4674
+ # configuration change is to keep the existing subnets and simply add
4675
+ # another subnet to the network configuration, this does not trigger a
4676
+ # new service deployment.
4677
+ #
4678
+ # </note>
4679
+ #
4680
+ #
4681
+ #
4682
+ # [1]: http://docs.aws.amazon.com/AmazonECS/latest/developerguidetask-networking.html
4683
+ # @return [Types::NetworkConfiguration]
4684
+ #
4332
4685
  # @see http://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/UpdateServiceRequest AWS API Documentation
4333
4686
  #
4334
4687
  class UpdateServiceRequest < Struct.new(
@@ -4336,7 +4689,8 @@ module Aws::ECS
4336
4689
  :service,
4337
4690
  :desired_count,
4338
4691
  :task_definition,
4339
- :deployment_configuration)
4692
+ :deployment_configuration,
4693
+ :network_configuration)
4340
4694
  include Aws::Structure
4341
4695
  end
4342
4696