1 /**
2  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3  * SPDX-License-Identifier: Apache-2.0.
4  */
5 
6 #pragma once
7 #include <aws/firehose/Firehose_EXPORTS.h>
8 #include <aws/core/utils/memory/stl/AWSVector.h>
9 #include <aws/core/utils/memory/stl/AWSString.h>
10 #include <utility>
11 
12 namespace Aws
13 {
14 namespace Utils
15 {
16 namespace Json
17 {
18   class JsonValue;
19   class JsonView;
20 } // namespace Json
21 } // namespace Utils
22 namespace Firehose
23 {
24 namespace Model
25 {
26 
27   /**
28    * <p>The details of the VPC of the Amazon ES destination.</p><p><h3>See Also:</h3>
29    * <a
30    * href="http://docs.aws.amazon.com/goto/WebAPI/firehose-2015-08-04/VpcConfiguration">AWS
31    * API Reference</a></p>
32    */
33   class AWS_FIREHOSE_API VpcConfiguration
34   {
35   public:
36     VpcConfiguration();
37     VpcConfiguration(Aws::Utils::Json::JsonView jsonValue);
38     VpcConfiguration& operator=(Aws::Utils::Json::JsonView jsonValue);
39     Aws::Utils::Json::JsonValue Jsonize() const;
40 
41 
42     /**
43      * <p>The IDs of the subnets that you want Kinesis Data Firehose to use to create
44      * ENIs in the VPC of the Amazon ES destination. Make sure that the routing tables
45      * and inbound and outbound rules allow traffic to flow from the subnets whose IDs
46      * are specified here to the subnets that have the destination Amazon ES endpoints.
47      * Kinesis Data Firehose creates at least one ENI in each of the subnets that are
48      * specified here. Do not delete or modify these ENIs.</p> <p>The number of ENIs
49      * that Kinesis Data Firehose creates in the subnets specified here scales up and
50      * down automatically based on throughput. To enable Kinesis Data Firehose to scale
51      * up the number of ENIs to match throughput, ensure that you have sufficient
52      * quota. To help you calculate the quota you need, assume that Kinesis Data
53      * Firehose can create up to three ENIs for this delivery stream for each of the
54      * subnets specified here. For more information about ENI quota, see <a
55      * href="https://docs.aws.amazon.com/vpc/latest/userguide/amazon-vpc-limits.html#vpc-limits-enis">Network
56      * Interfaces </a> in the Amazon VPC Quotas topic.</p>
57      */
GetSubnetIds()58     inline const Aws::Vector<Aws::String>& GetSubnetIds() const{ return m_subnetIds; }
59 
60     /**
61      * <p>The IDs of the subnets that you want Kinesis Data Firehose to use to create
62      * ENIs in the VPC of the Amazon ES destination. Make sure that the routing tables
63      * and inbound and outbound rules allow traffic to flow from the subnets whose IDs
64      * are specified here to the subnets that have the destination Amazon ES endpoints.
65      * Kinesis Data Firehose creates at least one ENI in each of the subnets that are
66      * specified here. Do not delete or modify these ENIs.</p> <p>The number of ENIs
67      * that Kinesis Data Firehose creates in the subnets specified here scales up and
68      * down automatically based on throughput. To enable Kinesis Data Firehose to scale
69      * up the number of ENIs to match throughput, ensure that you have sufficient
70      * quota. To help you calculate the quota you need, assume that Kinesis Data
71      * Firehose can create up to three ENIs for this delivery stream for each of the
72      * subnets specified here. For more information about ENI quota, see <a
73      * href="https://docs.aws.amazon.com/vpc/latest/userguide/amazon-vpc-limits.html#vpc-limits-enis">Network
74      * Interfaces </a> in the Amazon VPC Quotas topic.</p>
75      */
SubnetIdsHasBeenSet()76     inline bool SubnetIdsHasBeenSet() const { return m_subnetIdsHasBeenSet; }
77 
78     /**
79      * <p>The IDs of the subnets that you want Kinesis Data Firehose to use to create
80      * ENIs in the VPC of the Amazon ES destination. Make sure that the routing tables
81      * and inbound and outbound rules allow traffic to flow from the subnets whose IDs
82      * are specified here to the subnets that have the destination Amazon ES endpoints.
83      * Kinesis Data Firehose creates at least one ENI in each of the subnets that are
84      * specified here. Do not delete or modify these ENIs.</p> <p>The number of ENIs
85      * that Kinesis Data Firehose creates in the subnets specified here scales up and
86      * down automatically based on throughput. To enable Kinesis Data Firehose to scale
87      * up the number of ENIs to match throughput, ensure that you have sufficient
88      * quota. To help you calculate the quota you need, assume that Kinesis Data
89      * Firehose can create up to three ENIs for this delivery stream for each of the
90      * subnets specified here. For more information about ENI quota, see <a
91      * href="https://docs.aws.amazon.com/vpc/latest/userguide/amazon-vpc-limits.html#vpc-limits-enis">Network
92      * Interfaces </a> in the Amazon VPC Quotas topic.</p>
93      */
SetSubnetIds(const Aws::Vector<Aws::String> & value)94     inline void SetSubnetIds(const Aws::Vector<Aws::String>& value) { m_subnetIdsHasBeenSet = true; m_subnetIds = value; }
95 
96     /**
97      * <p>The IDs of the subnets that you want Kinesis Data Firehose to use to create
98      * ENIs in the VPC of the Amazon ES destination. Make sure that the routing tables
99      * and inbound and outbound rules allow traffic to flow from the subnets whose IDs
100      * are specified here to the subnets that have the destination Amazon ES endpoints.
101      * Kinesis Data Firehose creates at least one ENI in each of the subnets that are
102      * specified here. Do not delete or modify these ENIs.</p> <p>The number of ENIs
103      * that Kinesis Data Firehose creates in the subnets specified here scales up and
104      * down automatically based on throughput. To enable Kinesis Data Firehose to scale
105      * up the number of ENIs to match throughput, ensure that you have sufficient
106      * quota. To help you calculate the quota you need, assume that Kinesis Data
107      * Firehose can create up to three ENIs for this delivery stream for each of the
108      * subnets specified here. For more information about ENI quota, see <a
109      * href="https://docs.aws.amazon.com/vpc/latest/userguide/amazon-vpc-limits.html#vpc-limits-enis">Network
110      * Interfaces </a> in the Amazon VPC Quotas topic.</p>
111      */
SetSubnetIds(Aws::Vector<Aws::String> && value)112     inline void SetSubnetIds(Aws::Vector<Aws::String>&& value) { m_subnetIdsHasBeenSet = true; m_subnetIds = std::move(value); }
113 
114     /**
115      * <p>The IDs of the subnets that you want Kinesis Data Firehose to use to create
116      * ENIs in the VPC of the Amazon ES destination. Make sure that the routing tables
117      * and inbound and outbound rules allow traffic to flow from the subnets whose IDs
118      * are specified here to the subnets that have the destination Amazon ES endpoints.
119      * Kinesis Data Firehose creates at least one ENI in each of the subnets that are
120      * specified here. Do not delete or modify these ENIs.</p> <p>The number of ENIs
121      * that Kinesis Data Firehose creates in the subnets specified here scales up and
122      * down automatically based on throughput. To enable Kinesis Data Firehose to scale
123      * up the number of ENIs to match throughput, ensure that you have sufficient
124      * quota. To help you calculate the quota you need, assume that Kinesis Data
125      * Firehose can create up to three ENIs for this delivery stream for each of the
126      * subnets specified here. For more information about ENI quota, see <a
127      * href="https://docs.aws.amazon.com/vpc/latest/userguide/amazon-vpc-limits.html#vpc-limits-enis">Network
128      * Interfaces </a> in the Amazon VPC Quotas topic.</p>
129      */
WithSubnetIds(const Aws::Vector<Aws::String> & value)130     inline VpcConfiguration& WithSubnetIds(const Aws::Vector<Aws::String>& value) { SetSubnetIds(value); return *this;}
131 
132     /**
133      * <p>The IDs of the subnets that you want Kinesis Data Firehose to use to create
134      * ENIs in the VPC of the Amazon ES destination. Make sure that the routing tables
135      * and inbound and outbound rules allow traffic to flow from the subnets whose IDs
136      * are specified here to the subnets that have the destination Amazon ES endpoints.
137      * Kinesis Data Firehose creates at least one ENI in each of the subnets that are
138      * specified here. Do not delete or modify these ENIs.</p> <p>The number of ENIs
139      * that Kinesis Data Firehose creates in the subnets specified here scales up and
140      * down automatically based on throughput. To enable Kinesis Data Firehose to scale
141      * up the number of ENIs to match throughput, ensure that you have sufficient
142      * quota. To help you calculate the quota you need, assume that Kinesis Data
143      * Firehose can create up to three ENIs for this delivery stream for each of the
144      * subnets specified here. For more information about ENI quota, see <a
145      * href="https://docs.aws.amazon.com/vpc/latest/userguide/amazon-vpc-limits.html#vpc-limits-enis">Network
146      * Interfaces </a> in the Amazon VPC Quotas topic.</p>
147      */
WithSubnetIds(Aws::Vector<Aws::String> && value)148     inline VpcConfiguration& WithSubnetIds(Aws::Vector<Aws::String>&& value) { SetSubnetIds(std::move(value)); return *this;}
149 
150     /**
151      * <p>The IDs of the subnets that you want Kinesis Data Firehose to use to create
152      * ENIs in the VPC of the Amazon ES destination. Make sure that the routing tables
153      * and inbound and outbound rules allow traffic to flow from the subnets whose IDs
154      * are specified here to the subnets that have the destination Amazon ES endpoints.
155      * Kinesis Data Firehose creates at least one ENI in each of the subnets that are
156      * specified here. Do not delete or modify these ENIs.</p> <p>The number of ENIs
157      * that Kinesis Data Firehose creates in the subnets specified here scales up and
158      * down automatically based on throughput. To enable Kinesis Data Firehose to scale
159      * up the number of ENIs to match throughput, ensure that you have sufficient
160      * quota. To help you calculate the quota you need, assume that Kinesis Data
161      * Firehose can create up to three ENIs for this delivery stream for each of the
162      * subnets specified here. For more information about ENI quota, see <a
163      * href="https://docs.aws.amazon.com/vpc/latest/userguide/amazon-vpc-limits.html#vpc-limits-enis">Network
164      * Interfaces </a> in the Amazon VPC Quotas topic.</p>
165      */
AddSubnetIds(const Aws::String & value)166     inline VpcConfiguration& AddSubnetIds(const Aws::String& value) { m_subnetIdsHasBeenSet = true; m_subnetIds.push_back(value); return *this; }
167 
168     /**
169      * <p>The IDs of the subnets that you want Kinesis Data Firehose to use to create
170      * ENIs in the VPC of the Amazon ES destination. Make sure that the routing tables
171      * and inbound and outbound rules allow traffic to flow from the subnets whose IDs
172      * are specified here to the subnets that have the destination Amazon ES endpoints.
173      * Kinesis Data Firehose creates at least one ENI in each of the subnets that are
174      * specified here. Do not delete or modify these ENIs.</p> <p>The number of ENIs
175      * that Kinesis Data Firehose creates in the subnets specified here scales up and
176      * down automatically based on throughput. To enable Kinesis Data Firehose to scale
177      * up the number of ENIs to match throughput, ensure that you have sufficient
178      * quota. To help you calculate the quota you need, assume that Kinesis Data
179      * Firehose can create up to three ENIs for this delivery stream for each of the
180      * subnets specified here. For more information about ENI quota, see <a
181      * href="https://docs.aws.amazon.com/vpc/latest/userguide/amazon-vpc-limits.html#vpc-limits-enis">Network
182      * Interfaces </a> in the Amazon VPC Quotas topic.</p>
183      */
AddSubnetIds(Aws::String && value)184     inline VpcConfiguration& AddSubnetIds(Aws::String&& value) { m_subnetIdsHasBeenSet = true; m_subnetIds.push_back(std::move(value)); return *this; }
185 
186     /**
187      * <p>The IDs of the subnets that you want Kinesis Data Firehose to use to create
188      * ENIs in the VPC of the Amazon ES destination. Make sure that the routing tables
189      * and inbound and outbound rules allow traffic to flow from the subnets whose IDs
190      * are specified here to the subnets that have the destination Amazon ES endpoints.
191      * Kinesis Data Firehose creates at least one ENI in each of the subnets that are
192      * specified here. Do not delete or modify these ENIs.</p> <p>The number of ENIs
193      * that Kinesis Data Firehose creates in the subnets specified here scales up and
194      * down automatically based on throughput. To enable Kinesis Data Firehose to scale
195      * up the number of ENIs to match throughput, ensure that you have sufficient
196      * quota. To help you calculate the quota you need, assume that Kinesis Data
197      * Firehose can create up to three ENIs for this delivery stream for each of the
198      * subnets specified here. For more information about ENI quota, see <a
199      * href="https://docs.aws.amazon.com/vpc/latest/userguide/amazon-vpc-limits.html#vpc-limits-enis">Network
200      * Interfaces </a> in the Amazon VPC Quotas topic.</p>
201      */
AddSubnetIds(const char * value)202     inline VpcConfiguration& AddSubnetIds(const char* value) { m_subnetIdsHasBeenSet = true; m_subnetIds.push_back(value); return *this; }
203 
204 
205     /**
206      * <p>The ARN of the IAM role that you want the delivery stream to use to create
207      * endpoints in the destination VPC. You can use your existing Kinesis Data
208      * Firehose delivery role or you can specify a new role. In either case, make sure
209      * that the role trusts the Kinesis Data Firehose service principal and that it
210      * grants the following permissions:</p> <ul> <li> <p>
211      * <code>ec2:DescribeVpcs</code> </p> </li> <li> <p>
212      * <code>ec2:DescribeVpcAttribute</code> </p> </li> <li> <p>
213      * <code>ec2:DescribeSubnets</code> </p> </li> <li> <p>
214      * <code>ec2:DescribeSecurityGroups</code> </p> </li> <li> <p>
215      * <code>ec2:DescribeNetworkInterfaces</code> </p> </li> <li> <p>
216      * <code>ec2:CreateNetworkInterface</code> </p> </li> <li> <p>
217      * <code>ec2:CreateNetworkInterfacePermission</code> </p> </li> <li> <p>
218      * <code>ec2:DeleteNetworkInterface</code> </p> </li> </ul> <p>If you revoke these
219      * permissions after you create the delivery stream, Kinesis Data Firehose can't
220      * scale out by creating more ENIs when necessary. You might therefore see a
221      * degradation in performance.</p>
222      */
GetRoleARN()223     inline const Aws::String& GetRoleARN() const{ return m_roleARN; }
224 
225     /**
226      * <p>The ARN of the IAM role that you want the delivery stream to use to create
227      * endpoints in the destination VPC. You can use your existing Kinesis Data
228      * Firehose delivery role or you can specify a new role. In either case, make sure
229      * that the role trusts the Kinesis Data Firehose service principal and that it
230      * grants the following permissions:</p> <ul> <li> <p>
231      * <code>ec2:DescribeVpcs</code> </p> </li> <li> <p>
232      * <code>ec2:DescribeVpcAttribute</code> </p> </li> <li> <p>
233      * <code>ec2:DescribeSubnets</code> </p> </li> <li> <p>
234      * <code>ec2:DescribeSecurityGroups</code> </p> </li> <li> <p>
235      * <code>ec2:DescribeNetworkInterfaces</code> </p> </li> <li> <p>
236      * <code>ec2:CreateNetworkInterface</code> </p> </li> <li> <p>
237      * <code>ec2:CreateNetworkInterfacePermission</code> </p> </li> <li> <p>
238      * <code>ec2:DeleteNetworkInterface</code> </p> </li> </ul> <p>If you revoke these
239      * permissions after you create the delivery stream, Kinesis Data Firehose can't
240      * scale out by creating more ENIs when necessary. You might therefore see a
241      * degradation in performance.</p>
242      */
RoleARNHasBeenSet()243     inline bool RoleARNHasBeenSet() const { return m_roleARNHasBeenSet; }
244 
245     /**
246      * <p>The ARN of the IAM role that you want the delivery stream to use to create
247      * endpoints in the destination VPC. You can use your existing Kinesis Data
248      * Firehose delivery role or you can specify a new role. In either case, make sure
249      * that the role trusts the Kinesis Data Firehose service principal and that it
250      * grants the following permissions:</p> <ul> <li> <p>
251      * <code>ec2:DescribeVpcs</code> </p> </li> <li> <p>
252      * <code>ec2:DescribeVpcAttribute</code> </p> </li> <li> <p>
253      * <code>ec2:DescribeSubnets</code> </p> </li> <li> <p>
254      * <code>ec2:DescribeSecurityGroups</code> </p> </li> <li> <p>
255      * <code>ec2:DescribeNetworkInterfaces</code> </p> </li> <li> <p>
256      * <code>ec2:CreateNetworkInterface</code> </p> </li> <li> <p>
257      * <code>ec2:CreateNetworkInterfacePermission</code> </p> </li> <li> <p>
258      * <code>ec2:DeleteNetworkInterface</code> </p> </li> </ul> <p>If you revoke these
259      * permissions after you create the delivery stream, Kinesis Data Firehose can't
260      * scale out by creating more ENIs when necessary. You might therefore see a
261      * degradation in performance.</p>
262      */
SetRoleARN(const Aws::String & value)263     inline void SetRoleARN(const Aws::String& value) { m_roleARNHasBeenSet = true; m_roleARN = value; }
264 
265     /**
266      * <p>The ARN of the IAM role that you want the delivery stream to use to create
267      * endpoints in the destination VPC. You can use your existing Kinesis Data
268      * Firehose delivery role or you can specify a new role. In either case, make sure
269      * that the role trusts the Kinesis Data Firehose service principal and that it
270      * grants the following permissions:</p> <ul> <li> <p>
271      * <code>ec2:DescribeVpcs</code> </p> </li> <li> <p>
272      * <code>ec2:DescribeVpcAttribute</code> </p> </li> <li> <p>
273      * <code>ec2:DescribeSubnets</code> </p> </li> <li> <p>
274      * <code>ec2:DescribeSecurityGroups</code> </p> </li> <li> <p>
275      * <code>ec2:DescribeNetworkInterfaces</code> </p> </li> <li> <p>
276      * <code>ec2:CreateNetworkInterface</code> </p> </li> <li> <p>
277      * <code>ec2:CreateNetworkInterfacePermission</code> </p> </li> <li> <p>
278      * <code>ec2:DeleteNetworkInterface</code> </p> </li> </ul> <p>If you revoke these
279      * permissions after you create the delivery stream, Kinesis Data Firehose can't
280      * scale out by creating more ENIs when necessary. You might therefore see a
281      * degradation in performance.</p>
282      */
SetRoleARN(Aws::String && value)283     inline void SetRoleARN(Aws::String&& value) { m_roleARNHasBeenSet = true; m_roleARN = std::move(value); }
284 
285     /**
286      * <p>The ARN of the IAM role that you want the delivery stream to use to create
287      * endpoints in the destination VPC. You can use your existing Kinesis Data
288      * Firehose delivery role or you can specify a new role. In either case, make sure
289      * that the role trusts the Kinesis Data Firehose service principal and that it
290      * grants the following permissions:</p> <ul> <li> <p>
291      * <code>ec2:DescribeVpcs</code> </p> </li> <li> <p>
292      * <code>ec2:DescribeVpcAttribute</code> </p> </li> <li> <p>
293      * <code>ec2:DescribeSubnets</code> </p> </li> <li> <p>
294      * <code>ec2:DescribeSecurityGroups</code> </p> </li> <li> <p>
295      * <code>ec2:DescribeNetworkInterfaces</code> </p> </li> <li> <p>
296      * <code>ec2:CreateNetworkInterface</code> </p> </li> <li> <p>
297      * <code>ec2:CreateNetworkInterfacePermission</code> </p> </li> <li> <p>
298      * <code>ec2:DeleteNetworkInterface</code> </p> </li> </ul> <p>If you revoke these
299      * permissions after you create the delivery stream, Kinesis Data Firehose can't
300      * scale out by creating more ENIs when necessary. You might therefore see a
301      * degradation in performance.</p>
302      */
SetRoleARN(const char * value)303     inline void SetRoleARN(const char* value) { m_roleARNHasBeenSet = true; m_roleARN.assign(value); }
304 
305     /**
306      * <p>The ARN of the IAM role that you want the delivery stream to use to create
307      * endpoints in the destination VPC. You can use your existing Kinesis Data
308      * Firehose delivery role or you can specify a new role. In either case, make sure
309      * that the role trusts the Kinesis Data Firehose service principal and that it
310      * grants the following permissions:</p> <ul> <li> <p>
311      * <code>ec2:DescribeVpcs</code> </p> </li> <li> <p>
312      * <code>ec2:DescribeVpcAttribute</code> </p> </li> <li> <p>
313      * <code>ec2:DescribeSubnets</code> </p> </li> <li> <p>
314      * <code>ec2:DescribeSecurityGroups</code> </p> </li> <li> <p>
315      * <code>ec2:DescribeNetworkInterfaces</code> </p> </li> <li> <p>
316      * <code>ec2:CreateNetworkInterface</code> </p> </li> <li> <p>
317      * <code>ec2:CreateNetworkInterfacePermission</code> </p> </li> <li> <p>
318      * <code>ec2:DeleteNetworkInterface</code> </p> </li> </ul> <p>If you revoke these
319      * permissions after you create the delivery stream, Kinesis Data Firehose can't
320      * scale out by creating more ENIs when necessary. You might therefore see a
321      * degradation in performance.</p>
322      */
WithRoleARN(const Aws::String & value)323     inline VpcConfiguration& WithRoleARN(const Aws::String& value) { SetRoleARN(value); return *this;}
324 
325     /**
326      * <p>The ARN of the IAM role that you want the delivery stream to use to create
327      * endpoints in the destination VPC. You can use your existing Kinesis Data
328      * Firehose delivery role or you can specify a new role. In either case, make sure
329      * that the role trusts the Kinesis Data Firehose service principal and that it
330      * grants the following permissions:</p> <ul> <li> <p>
331      * <code>ec2:DescribeVpcs</code> </p> </li> <li> <p>
332      * <code>ec2:DescribeVpcAttribute</code> </p> </li> <li> <p>
333      * <code>ec2:DescribeSubnets</code> </p> </li> <li> <p>
334      * <code>ec2:DescribeSecurityGroups</code> </p> </li> <li> <p>
335      * <code>ec2:DescribeNetworkInterfaces</code> </p> </li> <li> <p>
336      * <code>ec2:CreateNetworkInterface</code> </p> </li> <li> <p>
337      * <code>ec2:CreateNetworkInterfacePermission</code> </p> </li> <li> <p>
338      * <code>ec2:DeleteNetworkInterface</code> </p> </li> </ul> <p>If you revoke these
339      * permissions after you create the delivery stream, Kinesis Data Firehose can't
340      * scale out by creating more ENIs when necessary. You might therefore see a
341      * degradation in performance.</p>
342      */
WithRoleARN(Aws::String && value)343     inline VpcConfiguration& WithRoleARN(Aws::String&& value) { SetRoleARN(std::move(value)); return *this;}
344 
345     /**
346      * <p>The ARN of the IAM role that you want the delivery stream to use to create
347      * endpoints in the destination VPC. You can use your existing Kinesis Data
348      * Firehose delivery role or you can specify a new role. In either case, make sure
349      * that the role trusts the Kinesis Data Firehose service principal and that it
350      * grants the following permissions:</p> <ul> <li> <p>
351      * <code>ec2:DescribeVpcs</code> </p> </li> <li> <p>
352      * <code>ec2:DescribeVpcAttribute</code> </p> </li> <li> <p>
353      * <code>ec2:DescribeSubnets</code> </p> </li> <li> <p>
354      * <code>ec2:DescribeSecurityGroups</code> </p> </li> <li> <p>
355      * <code>ec2:DescribeNetworkInterfaces</code> </p> </li> <li> <p>
356      * <code>ec2:CreateNetworkInterface</code> </p> </li> <li> <p>
357      * <code>ec2:CreateNetworkInterfacePermission</code> </p> </li> <li> <p>
358      * <code>ec2:DeleteNetworkInterface</code> </p> </li> </ul> <p>If you revoke these
359      * permissions after you create the delivery stream, Kinesis Data Firehose can't
360      * scale out by creating more ENIs when necessary. You might therefore see a
361      * degradation in performance.</p>
362      */
WithRoleARN(const char * value)363     inline VpcConfiguration& WithRoleARN(const char* value) { SetRoleARN(value); return *this;}
364 
365 
366     /**
367      * <p>The IDs of the security groups that you want Kinesis Data Firehose to use
368      * when it creates ENIs in the VPC of the Amazon ES destination. You can use the
369      * same security group that the Amazon ES domain uses or different ones. If you
370      * specify different security groups here, ensure that they allow outbound HTTPS
371      * traffic to the Amazon ES domain's security group. Also ensure that the Amazon ES
372      * domain's security group allows HTTPS traffic from the security groups specified
373      * here. If you use the same security group for both your delivery stream and the
374      * Amazon ES domain, make sure the security group inbound rule allows HTTPS
375      * traffic. For more information about security group rules, see <a
376      * href="https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#SecurityGroupRules">Security
377      * group rules</a> in the Amazon VPC documentation.</p>
378      */
GetSecurityGroupIds()379     inline const Aws::Vector<Aws::String>& GetSecurityGroupIds() const{ return m_securityGroupIds; }
380 
381     /**
382      * <p>The IDs of the security groups that you want Kinesis Data Firehose to use
383      * when it creates ENIs in the VPC of the Amazon ES destination. You can use the
384      * same security group that the Amazon ES domain uses or different ones. If you
385      * specify different security groups here, ensure that they allow outbound HTTPS
386      * traffic to the Amazon ES domain's security group. Also ensure that the Amazon ES
387      * domain's security group allows HTTPS traffic from the security groups specified
388      * here. If you use the same security group for both your delivery stream and the
389      * Amazon ES domain, make sure the security group inbound rule allows HTTPS
390      * traffic. For more information about security group rules, see <a
391      * href="https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#SecurityGroupRules">Security
392      * group rules</a> in the Amazon VPC documentation.</p>
393      */
SecurityGroupIdsHasBeenSet()394     inline bool SecurityGroupIdsHasBeenSet() const { return m_securityGroupIdsHasBeenSet; }
395 
396     /**
397      * <p>The IDs of the security groups that you want Kinesis Data Firehose to use
398      * when it creates ENIs in the VPC of the Amazon ES destination. You can use the
399      * same security group that the Amazon ES domain uses or different ones. If you
400      * specify different security groups here, ensure that they allow outbound HTTPS
401      * traffic to the Amazon ES domain's security group. Also ensure that the Amazon ES
402      * domain's security group allows HTTPS traffic from the security groups specified
403      * here. If you use the same security group for both your delivery stream and the
404      * Amazon ES domain, make sure the security group inbound rule allows HTTPS
405      * traffic. For more information about security group rules, see <a
406      * href="https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#SecurityGroupRules">Security
407      * group rules</a> in the Amazon VPC documentation.</p>
408      */
SetSecurityGroupIds(const Aws::Vector<Aws::String> & value)409     inline void SetSecurityGroupIds(const Aws::Vector<Aws::String>& value) { m_securityGroupIdsHasBeenSet = true; m_securityGroupIds = value; }
410 
411     /**
412      * <p>The IDs of the security groups that you want Kinesis Data Firehose to use
413      * when it creates ENIs in the VPC of the Amazon ES destination. You can use the
414      * same security group that the Amazon ES domain uses or different ones. If you
415      * specify different security groups here, ensure that they allow outbound HTTPS
416      * traffic to the Amazon ES domain's security group. Also ensure that the Amazon ES
417      * domain's security group allows HTTPS traffic from the security groups specified
418      * here. If you use the same security group for both your delivery stream and the
419      * Amazon ES domain, make sure the security group inbound rule allows HTTPS
420      * traffic. For more information about security group rules, see <a
421      * href="https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#SecurityGroupRules">Security
422      * group rules</a> in the Amazon VPC documentation.</p>
423      */
SetSecurityGroupIds(Aws::Vector<Aws::String> && value)424     inline void SetSecurityGroupIds(Aws::Vector<Aws::String>&& value) { m_securityGroupIdsHasBeenSet = true; m_securityGroupIds = std::move(value); }
425 
426     /**
427      * <p>The IDs of the security groups that you want Kinesis Data Firehose to use
428      * when it creates ENIs in the VPC of the Amazon ES destination. You can use the
429      * same security group that the Amazon ES domain uses or different ones. If you
430      * specify different security groups here, ensure that they allow outbound HTTPS
431      * traffic to the Amazon ES domain's security group. Also ensure that the Amazon ES
432      * domain's security group allows HTTPS traffic from the security groups specified
433      * here. If you use the same security group for both your delivery stream and the
434      * Amazon ES domain, make sure the security group inbound rule allows HTTPS
435      * traffic. For more information about security group rules, see <a
436      * href="https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#SecurityGroupRules">Security
437      * group rules</a> in the Amazon VPC documentation.</p>
438      */
WithSecurityGroupIds(const Aws::Vector<Aws::String> & value)439     inline VpcConfiguration& WithSecurityGroupIds(const Aws::Vector<Aws::String>& value) { SetSecurityGroupIds(value); return *this;}
440 
441     /**
442      * <p>The IDs of the security groups that you want Kinesis Data Firehose to use
443      * when it creates ENIs in the VPC of the Amazon ES destination. You can use the
444      * same security group that the Amazon ES domain uses or different ones. If you
445      * specify different security groups here, ensure that they allow outbound HTTPS
446      * traffic to the Amazon ES domain's security group. Also ensure that the Amazon ES
447      * domain's security group allows HTTPS traffic from the security groups specified
448      * here. If you use the same security group for both your delivery stream and the
449      * Amazon ES domain, make sure the security group inbound rule allows HTTPS
450      * traffic. For more information about security group rules, see <a
451      * href="https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#SecurityGroupRules">Security
452      * group rules</a> in the Amazon VPC documentation.</p>
453      */
WithSecurityGroupIds(Aws::Vector<Aws::String> && value)454     inline VpcConfiguration& WithSecurityGroupIds(Aws::Vector<Aws::String>&& value) { SetSecurityGroupIds(std::move(value)); return *this;}
455 
456     /**
457      * <p>The IDs of the security groups that you want Kinesis Data Firehose to use
458      * when it creates ENIs in the VPC of the Amazon ES destination. You can use the
459      * same security group that the Amazon ES domain uses or different ones. If you
460      * specify different security groups here, ensure that they allow outbound HTTPS
461      * traffic to the Amazon ES domain's security group. Also ensure that the Amazon ES
462      * domain's security group allows HTTPS traffic from the security groups specified
463      * here. If you use the same security group for both your delivery stream and the
464      * Amazon ES domain, make sure the security group inbound rule allows HTTPS
465      * traffic. For more information about security group rules, see <a
466      * href="https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#SecurityGroupRules">Security
467      * group rules</a> in the Amazon VPC documentation.</p>
468      */
AddSecurityGroupIds(const Aws::String & value)469     inline VpcConfiguration& AddSecurityGroupIds(const Aws::String& value) { m_securityGroupIdsHasBeenSet = true; m_securityGroupIds.push_back(value); return *this; }
470 
471     /**
472      * <p>The IDs of the security groups that you want Kinesis Data Firehose to use
473      * when it creates ENIs in the VPC of the Amazon ES destination. You can use the
474      * same security group that the Amazon ES domain uses or different ones. If you
475      * specify different security groups here, ensure that they allow outbound HTTPS
476      * traffic to the Amazon ES domain's security group. Also ensure that the Amazon ES
477      * domain's security group allows HTTPS traffic from the security groups specified
478      * here. If you use the same security group for both your delivery stream and the
479      * Amazon ES domain, make sure the security group inbound rule allows HTTPS
480      * traffic. For more information about security group rules, see <a
481      * href="https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#SecurityGroupRules">Security
482      * group rules</a> in the Amazon VPC documentation.</p>
483      */
AddSecurityGroupIds(Aws::String && value)484     inline VpcConfiguration& AddSecurityGroupIds(Aws::String&& value) { m_securityGroupIdsHasBeenSet = true; m_securityGroupIds.push_back(std::move(value)); return *this; }
485 
486     /**
487      * <p>The IDs of the security groups that you want Kinesis Data Firehose to use
488      * when it creates ENIs in the VPC of the Amazon ES destination. You can use the
489      * same security group that the Amazon ES domain uses or different ones. If you
490      * specify different security groups here, ensure that they allow outbound HTTPS
491      * traffic to the Amazon ES domain's security group. Also ensure that the Amazon ES
492      * domain's security group allows HTTPS traffic from the security groups specified
493      * here. If you use the same security group for both your delivery stream and the
494      * Amazon ES domain, make sure the security group inbound rule allows HTTPS
495      * traffic. For more information about security group rules, see <a
496      * href="https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#SecurityGroupRules">Security
497      * group rules</a> in the Amazon VPC documentation.</p>
498      */
AddSecurityGroupIds(const char * value)499     inline VpcConfiguration& AddSecurityGroupIds(const char* value) { m_securityGroupIdsHasBeenSet = true; m_securityGroupIds.push_back(value); return *this; }
500 
501   private:
502 
503     Aws::Vector<Aws::String> m_subnetIds;
504     bool m_subnetIdsHasBeenSet;
505 
506     Aws::String m_roleARN;
507     bool m_roleARNHasBeenSet;
508 
509     Aws::Vector<Aws::String> m_securityGroupIds;
510     bool m_securityGroupIdsHasBeenSet;
511   };
512 
513 } // namespace Model
514 } // namespace Firehose
515 } // namespace Aws
516