'use strict'
const WKResource = require('./../resource').WKResource
const ResourceAttribute = require('./../resourceattribute').ResourceAttribute
const ResourceAttributeArray = require('./../resourceattribute').ResourceAttributeArray
const tag = require('./../tag')
const types = require('./../types')
/** @module EC2 */
/** @memberof module:EC2
* @extends WKResource
* @property {Number} BgpAsn Required: Yes. The customer gateway's Border Gateway Protocol (BGP) Autonomous System Number (ASN).Update requires: Replacement
* @property {String} IpAddress Required: Yes. The internet-routable IP address for the customer gateway's outside interface. The address must be
static.Update requires: Replacement
* @property {AWSCloudFormationResourceTags} Tags Required: No. The tags that you want to attach to the resource.Update requires: No interruption.
* @property {String} Type Required: Yes. The type of VPN connection that this customer gateway supports.Update requires: ReplacementExample: ipsec.1
*/
class CustomerGateway extends WKResource {
constructor (name, propertiesObject) {
let resourceType = 'AWS::EC2::CustomerGateway'
let properties = {
BgpAsn: new ResourceAttribute('BgpAsn', Number, 'Yes', null),
IpAddress: new ResourceAttribute('IpAddress', String, 'Yes', null),
Tags: new tag.TagSet(),
Type: new ResourceAttribute('Type', String, 'Yes', null)
}
super(name, resourceType, properties, propertiesObject)
}
}
/** @memberof module:EC2
* @extends WKResource
* @property {String} DomainName Required: Conditional. A domain name of your choice.Update requires: ReplacementExample: "example.com"
* @property {String} DomainNameServers Required: Conditional. The IP (IPv4) address of a domain name server. You can specify up to four addresses.Update requires: ReplacementExample: "DomainNameServers" : [ "10.0.0.1", "10.0.0.2"
]Example: To preserve the order of IP addresses, specify a comma delimited list as a single string: "DomainNameServers" : [ "10.0.0.1, 10.0.0.2" ]
* @property {String} NetbiosNameServers Required: Conditional. The IP address (IPv4) of a NetBIOS name server. You can specify up to four addresses.Update requires: ReplacementExample: "NetbiosNameServers" : [ "10.0.0.1", "10.0.0.2" ]Example: To preserve the order of IP addresses, specify a comma delimited list as a single string: "NetbiosNameServers" : [ "10.0.0.1, 10.0.0.2" ]
* @property {Number} NetbiosNodeType Required: Conditional. An integer value indicating the NetBIOS node type:1: Broadcast ("B")2: Point-to-point ("P")4: Mixed mode ("M")8: Hybrid ("H")For more information about these values and about NetBIOS node types, see
RFC 2132, RFC 1001, and RFC 1002. We recommend that
you use only the value 2 at this time (broadcast and multicast are
not currently supported).Update requires: ReplacementExample: "NetbiosNodeType" : 2
* @property {String} NtpServers Required: Conditional. The IP address (IPv4) of a Network Time Protocol (NTP) server. You can specify up to four
addresses.Update requires: ReplacementExample: "NtpServers" : [ "10.0.0.1" ]Example: To preserve the order of IP addresses, specify a comma delimited list as a single string: "NtpServers" : [ "10.0.0.1, 10.0.0.2" ]
* @property {AWSCloudFormationResourceTags} Tags Required: No. An arbitrary set of tags (key–value pairs) for this resource.Update requires: No interruption.
*/
class DHCPOptions extends WKResource {
constructor (name, propertiesObject) {
let resourceType = 'AWS::EC2::DHCPOptions'
let properties = {
DomainName: new ResourceAttribute('DomainName', String, 'Conditional', null),
DomainNameServers: new ResourceAttributeArray('DomainNameServers', String, 'Conditional', null),
NetbiosNameServers: new ResourceAttributeArray('NetbiosNameServers', String, 'Conditional', null),
NetbiosNodeType: new ResourceAttributeArray('NetbiosNodeType', Number, 'Conditional', null),
NtpServers: new ResourceAttributeArray('NtpServers', String, 'Conditional', null),
Tags: new tag.TagSet()
}
super(name, resourceType, properties, propertiesObject)
}
}
/** @memberof module:EC2
* @extends WKResource
* @property {String} InstanceId Required: No. The Instance ID of the Amazon EC2 instance that you want to associate with this
Elastic IP address.Update requires: No interruption
* @property {String} Domain Required: Conditional. Set to vpc to allocate the address to your Virtual Private Cloud
(VPC). No other values are supported.NoteIf you define an Elastic IP address and associate it with a VPC that is
defined in the same template, you must declare a dependency on the VPC-gateway
attachment by using the DependsOn attribute on this resource. For
more information, see DependsOn Attribute.For more information, see AllocateAddress in the Amazon EC2 API Reference. For more
information about Elastic IP Addresses in VPC, go to IP Addressing in Your VPC in the Amazon VPC User
Guide.Update requires: Replacement
*/
class EIP extends WKResource {
constructor (name, propertiesObject) {
let resourceType = 'AWS::EC2::EIP'
let properties = {
InstanceId: new ResourceAttribute('InstanceId', String, 'No', null),
Domain: new ResourceAttribute('Domain', String, 'Conditional', null)
}
super(name, resourceType, properties, propertiesObject)
}
}
/** @memberof module:EC2
* @extends WKResource
* @property {String} AllocationId Required: Conditional. Allocation ID for the VPC Elastic IP address you want to associate with an
Amazon EC2 instance in your VPC.Update requires: Replacement if you also change the InstanceId or
NetworkInterfaceId property. If not, update requires No interruption.
* @property {String} EIP Required: Conditional. Elastic IP address that you want to associate with the Amazon EC2 instance specified
by the InstanceId property. You can specify an existing Elastic IP
address or a reference to an Elastic IP address allocated with a AWS::EC2::EIP resource.Update requires: Replacement if you also change the InstanceId or
NetworkInterfaceId property. If not, update requires No interruption.
* @property {String} InstanceId Required: No. Instance ID of the Amazon EC2 instance that you want to associate with the Elastic
IP address specified by the EIP property.Update requires: Replacement if you also change the AllocationId or
EIP property. If not, update requires No interruption.
* @property {String} NetworkInterfaceId Required: No. The ID of the network interface to associate with the Elastic IP address (VPC
only).Update requires: Replacement if you also change the AllocationId or
EIP property. If not, update requires No interruption.
* @property {String} PrivateIpAddress Required: No. The private IP address that you want to associate with the Elastic IP address.
The private IP address is restricted to the primary and secondary private IP
addresses that are associated with the network interface. By default, the private
IP address that is associated with the EIP is the primary private IP address of
the network interface.Update requires: No interruption
*/
class EIPAssociation extends WKResource {
constructor (name, propertiesObject) {
let resourceType = 'AWS::EC2::EIPAssociation'
let properties = {
AllocationId: new ResourceAttribute('AllocationId', String, 'Conditional', null),
EIP: new ResourceAttribute('EIP', String, 'Conditional', null),
InstanceId: new ResourceAttribute('InstanceId', String, 'No', null),
NetworkInterfaceId: new ResourceAttribute('NetworkInterfaceId', String, 'No', null),
PrivateIpAddress: new ResourceAttribute('PrivateIpAddress', String, 'No', null)
}
super(name, resourceType, properties, propertiesObject)
}
}
/** @memberof module:EC2
* @extends WKResource
* @property {String} DeliverLogsPermissionArn Required: Yes. The Amazon Resource Name (ARN) of an AWS Identity and Access Management (IAM) role that permits Amazon EC2 to publish flow logs to a CloudWatch Logs log group in your account.Update requires: Replacement
* @property {String} LogGroupName Required: Yes. The name of a new or existing CloudWatch Logs log group where Amazon EC2 publishes your flow logs.Update requires: Replacement
* @property {String} ResourceId Required: Yes. The ID of the subnet, network interface, or VPC for which you want to create a flow log.Update requires: Replacement
* @property {String} ResourceType Required: Yes. The type of resource that you specified in the ResourceId property. For example, if you specified a VPC ID for the ResourceId property, specify VPC for this property. For valid values, see the ResourceType parameter for the CreateFlowLogs action in the Amazon EC2 API Reference.Update requires: Replacement
* @property {String} TrafficType Required: Yes. The type of traffic to log. You can log traffic that the resource accepts or rejects, or all traffic. For valid values, see the TrafficType parameter for the CreateFlowLogs action in the Amazon EC2 API Reference.Update requires: Replacement
*/
class FlowLog extends WKResource {
constructor (name, propertiesObject) {
let resourceType = 'AWS::EC2::FlowLog'
let properties = {
DeliverLogsPermissionArn: new ResourceAttribute('DeliverLogsPermissionArn', String, 'Yes', null),
LogGroupName: new ResourceAttribute('LogGroupName', String, 'Yes', null),
ResourceId: new ResourceAttribute('ResourceId', String, 'Yes', null),
ResourceType: new ResourceAttribute('ResourceType', String, 'Yes', null),
TrafficType: new ResourceAttribute('TrafficType', String, 'Yes', null)
}
super(name, resourceType, properties, propertiesObject)
}
}
/** @memberof module:EC2
* @extends WKResource
* @property {String} AutoPlacement Required: No. Indicates if the host accepts EC2 instances with only matching configurations or if
instances must also specify the host ID. Instances that don't specify a host ID can't
launch onto a host with AutoPlacement set to off. By default,
AWS CloudFormation sets this property to on. For more information, see Understanding Instance
Placement and Host Affinity in the
Amazon EC2 User Guide for Linux Instances.Update requires: No interruption
* @property {String} AvailabilityZone Required: Yes. The Availability Zone (AZ) in which to launch the dedicated host.Update requires: Replacement
* @property {String} InstanceType Required: Yes. The instance type that the dedicated host accepts. Only instances of this type can be launched onto the host. For more information, see Supported Instance Types in the Amazon EC2 User Guide for Linux Instances.Update requires: Replacement
*/
class Host extends WKResource {
constructor (name, propertiesObject) {
let resourceType = 'AWS::EC2::Host'
let properties = {
AutoPlacement: new ResourceAttribute('AutoPlacement', String, 'No', null),
AvailabilityZone: new ResourceAttribute('AvailabilityZone', String, 'Yes', null),
InstanceType: new ResourceAttribute('InstanceType', String, 'Yes', null)
}
super(name, resourceType, properties, propertiesObject)
}
}
/** @memberof module:EC2
* @extends WKResource
* @property {String} Affinity Required: No. Indicates whether Amazon Elastic Compute Cloud (Amazon EC2) always associates the instance with a dedicated host. If you want Amazon EC2 to always restart the instance (if it was stopped) onto the same host on which it was launched, specify host. If you want Amazon EC2 to restart the instance on any available host, but to try to launch the instance onto the last host it ran on (on a best-effort basis), specify default.Update requires: No interruption
* @property {String} AvailabilityZone Required: Conditional. Specifies the name of the Availability Zone in which the instance is
located.For more information about AWS regions and Availability Zones, see Regions and Availability Zones in the Amazon EC2 User
Guide.Update requires: Replacement
* @property {AmazonEC2BlockDeviceMappingProperty} BlockDeviceMappings Required: No. Defines a set of Amazon Elastic Block Store block device mappings, ephemeral instance store
block device mappings, or both. For more information, see Amazon Elastic Block Store or Amazon EC2 Instance Store in the
Amazon EC2 User Guide for Linux Instances.Update requires: Replacement. If you change only the DeleteOnTermination
property for one or more block devices, update requires No interruption.
* @property {Boolean} DisableApiTermination Required: No. Specifies whether the instance can be terminated through the API.Update requires: No interruption
* @property {Boolean} EbsOptimized Required: Conditional. Specifies whether the instance is optimized for Amazon Elastic Block Store I/O. This
optimization provides dedicated throughput to Amazon EBS and an optimized configuration
stack to provide optimal EBS I/O performance.For more information about the instance types that can be launched as Amazon EBS
optimized instances, see Amazon
EBS-Optimized Instances in the Amazon Elastic Compute Cloud
User Guide. Additional fees are incurred when using Amazon EBS-optimized
instances.Update requires:Update requires: Some interruptions for Amazon EBS-backed instancesUpdate requires: Replacement for instance store-backed instances
* @property {String} HostId Required: No. If you specify host for the Affinity property, the ID of a dedicated host that the instance is associated with. If you don't specify an ID, Amazon EC2 launches the instance onto any available, compatible dedicated host in your account. This type of launch is called an untargeted launch. Note that for untargeted launches, you must have a compatible, dedicated host available to successfully launch instances.Update requires: No interruption
* @property {String} IamInstanceProfile Required: No. The physical ID (resource name) of an instance profile or a reference to an
AWS::IAM::InstanceProfile resource.For more information about IAM roles, see Working with Roles in the
AWS Identity and Access Management User Guide.Update requires: Replacement
* @property {String} ImageId Required: Yes. Provides the unique ID of the Amazon Machine Image (AMI) that was assigned
during registration.Update requires: Replacement
* @property {String} InstanceInitiatedShutdownBehavior Required: No. Indicates whether an instance stops or terminates when you shut down the
instance from the instance's operating system shutdown command. You can specify
stop or terminate. For more information, see the
RunInstances command in the
Amazon EC2 API Reference.Update requires: No interruption
* @property {String} InstanceType Required: No. The instance type, such as t2.micro. The default type is
"m1.small". For a list of instance types, see Instance Families and
Types.Update requires:Update requires: Some interruptions for Amazon EBS-backed instancesUpdate requires: Replacement for instance store-backed instances
* @property {String} KernelId Required: No. The kernel ID.Update requires:Update requires: Some interruptions for Amazon EBS-backed instancesUpdate requires: Replacement for instance store-backed instances
* @property {String} KeyName Required: No. Provides the name of the Amazon EC2 key pair.Update requires: Replacement
* @property {Boolean} Monitoring Required: No. Specifies whether monitoring is enabled for the instance.Update requires: No interruption
* @property {EC2NetworkInterfaceEmbeddedPropertyType} NetworkInterfaces Required: No. A list of embedded objects that describe the network interfaces to associate
with this instance.NoteIf this resource has a public IP address and is also in a VPC that is defined in the same template, you must use the
DependsOn attribute to declare a dependency on the VPC-gateway attachment. For more information,
see DependsOn Attribute.Update requires: Replacement
* @property {String} PlacementGroupName Required: No. The name of an existing placement group that you want to launch the instance
into (for cluster instances).Update requires: Replacement
* @property {String} PrivateIpAddress Required: No. The private IP address for this instance.ImportantIf you make an update to an instance that requires replacement, you must
assign a new private IP address. During a replacement, AWS CloudFormation creates a new
instance but doesn't delete the old instance until the stack has
successfully updated. If the stack update fails, AWS CloudFormation uses the old instance
in order to roll back the stack to the previous working state. The old and
new instances cannot have the same private IP address.(Optional) If you're using Amazon VPC, you can use this parameter to assign the
instance a specific available IP address from the subnet (for example, 10.0.0.25).
By default, Amazon VPC selects an IP address from the subnet for the instance.Update requires: Replacement
* @property {String} RamdiskId Required: No. The ID of the RAM disk to select. Some kernels require additional drivers at
launch. Check the kernel requirements for information about whether you need to
specify a RAM disk. To find kernel requirements, go to the AWS Resource Center and
search for the kernel ID.Update requires:Update requires: Some interruptions for Amazon EBS-backed instancesUpdate requires: Replacement for instance store-backed instances
* @property {String} SecurityGroupIds Required: Conditional. A list that contains the security group IDs for VPC security groups to assign
to the Amazon EC2 instance. If you specified the NetworkInterfaces
property, do not specify this property.Update requires:Update requires: No interruption for instances that are in a VPC.Update requires: Replacement for instances that are not in a VPC.
* @property {String} SecurityGroups Required: No. Valid only for Amazon EC2 security groups. A list that contains the Amazon EC2 security
groups to assign to the Amazon EC2 instance. The list can contain both the name of
existing Amazon EC2 security groups or references to AWS::EC2::SecurityGroup resources
created in the template.Update requires: Replacement.
* @property {Boolean} SourceDestCheck Required: No. Controls whether source/destination checking is enabled on the instance. Also
determines if an instance in a VPC will perform network address translation
(NAT).A value of "true" means that source/destination checking is
enabled, and a value of "false" means that checking is disabled. For
the instance to perform NAT, the value must be
"false". For more information, see NAT
Instances in the Amazon Virtual Private Cloud User
Guide.Update requires: No interruption
* @property {AmazonEC2InstanceSsmAssociations} SsmAssociations Required: No. The Amazon EC2 Simple Systems Manager (SSM) document
and parameter values to associate with this instance. To use this property, you
must specify an IAM role for the instance. For more information, see Prerequisites for Remotely
Running Commands on EC2 Instances in the
Amazon EC2 User Guide for Microsoft Windows Instances.NoteYou can currently associate only one document with an instance.Update requires: No interruption
* @property {String} SubnetId Required: No. If you're using Amazon VPC, this property specifies the ID of the subnet that
you want to launch the instance into. If you specified the
NetworkInterfaces property, do not specify this property.Update requires: Replacement
* @property {AWSCloudFormationResourceTags} Tags Required: No. An arbitrary set of tags (key–value pairs) for this instance.Update requires: No interruption.
* @property {String} Tenancy Required: No. The tenancy of the instance that you want to launch, such as default, dedicated, or host. If you specify a tenancy value of dedicated or host, you must launch the instance in a VPC. For more information, see Dedicated Instances in the Amazon VPC User Guide.Update requires:Update requires: No interruption if this property was set to dedicated and you change it to host or vice versa.Update requires: Replacement for all other changes.
* @property {String} UserData Required: No. Base64-encoded MIME user data that is made available to the instances.Update requires:Update requires: Some interruptions for Amazon EBS-backed instances.NoteFor EBS-backed instances, changing the UserData stops
and then starts the instance; however, Amazon EC2 doesn't automatically run
the updated UserData. To update configurations on your
instance, use the cfn-hup helper
script.Update requires: Replacement for instance store-backed instances.
* @property {EC2MountPointPropertyType} Volumes Required: No. The Amazon EBS volumes to attach to the instance.NoteBefore detaching a volume, unmount any file systems on the device within
your operating system. If you don't unmount the file system, a volume might
get stuck in a busy state while detaching.Update requires: No interruption
* @property {String} AdditionalInfo Required: No. Reserved.Update requires:
Update requires: Some interruptions for Amazon EBS-backed instancesUpdate requires: Replacement for instance store-backed instances
*/
class Instance extends WKResource {
constructor (name, propertiesObject) {
let resourceType = 'AWS::EC2::Instance'
let properties = {
Affinity: new ResourceAttribute('Affinity', String, 'No', null),
AvailabilityZone: new ResourceAttribute('AvailabilityZone', String, 'Conditional', null),
BlockDeviceMappings: new ResourceAttributeArray('BlockDeviceMappings', types.AmazonEC2BlockDeviceMappingProperty, 'No', null),
DisableApiTermination: new ResourceAttribute('DisableApiTermination', Boolean, 'No', null),
EbsOptimized: new ResourceAttribute('EbsOptimized', Boolean, 'Conditional', null),
HostId: new ResourceAttribute('HostId', String, 'No', null),
IamInstanceProfile: new ResourceAttribute('IamInstanceProfile', String, 'No', null),
ImageId: new ResourceAttribute('ImageId', String, 'Yes', null),
InstanceInitiatedShutdownBehavior: new ResourceAttribute('InstanceInitiatedShutdownBehavior', String, 'No', null),
InstanceType: new ResourceAttribute('InstanceType', String, 'No', null),
KernelId: new ResourceAttribute('KernelId', String, 'No', null),
KeyName: new ResourceAttribute('KeyName', String, 'No', null),
Monitoring: new ResourceAttribute('Monitoring', Boolean, 'No', null),
NetworkInterfaces: new ResourceAttributeArray('NetworkInterfaces', types.EC2NetworkInterfaceEmbeddedPropertyType, 'No', null),
PlacementGroupName: new ResourceAttribute('PlacementGroupName', String, 'No', null),
PrivateIpAddress: new ResourceAttribute('PrivateIpAddress', String, 'No', null),
RamdiskId: new ResourceAttribute('RamdiskId', String, 'No', null),
SecurityGroupIds: new ResourceAttributeArray('SecurityGroupIds', String, 'Conditional', null),
SecurityGroups: new ResourceAttributeArray('SecurityGroups', String, 'No', null),
SourceDestCheck: new ResourceAttribute('SourceDestCheck', Boolean, 'No', null),
SsmAssociations: new ResourceAttributeArray('SsmAssociations', types.AmazonEC2InstanceSsmAssociations, 'No', null),
SubnetId: new ResourceAttribute('SubnetId', String, 'No', null),
Tags: new tag.TagSet(),
Tenancy: new ResourceAttribute('Tenancy', String, 'No', null),
UserData: new ResourceAttribute('UserData', String, 'No', null),
Volumes: new ResourceAttributeArray('Volumes', types.EC2MountPointPropertyType, 'No', null),
AdditionalInfo: new ResourceAttribute('AdditionalInfo', String, 'No', null)
}
super(name, resourceType, properties, propertiesObject)
}
}
/** @memberof module:EC2
* @extends WKResource
* @property {AWSCloudFormationResourceTags} Tags Required: No. An arbitrary set of tags (key–value pairs) for this resource.Update requires: No interruption.
*/
class InternetGateway extends WKResource {
constructor (name, propertiesObject) {
let resourceType = 'AWS::EC2::InternetGateway'
let properties = {
Tags: new tag.TagSet()
}
super(name, resourceType, properties, propertiesObject)
}
}
/** @memberof module:EC2
* @extends WKResource
* @property {String} AllocationId Required: Yes. The allocation ID of an Elastic IP address to associate with the NAT gateway. If the
Elastic IP address is associated with another resource, you must first disassociate
it.Update requires: Replacement
* @property {String} SubnetId Required: Yes. The public subnet in which to create the NAT gateway.Update requires: Replacement
*/
class NatGateway extends WKResource {
constructor (name, propertiesObject) {
let resourceType = 'AWS::EC2::NatGateway'
let properties = {
AllocationId: new ResourceAttribute('AllocationId', String, 'Yes', null),
SubnetId: new ResourceAttribute('SubnetId', String, 'Yes', null)
}
super(name, resourceType, properties, propertiesObject)
}
}
/** @memberof module:EC2
* @extends WKResource
* @property {AWSCloudFormationResourceTags} Tags Required: No. An arbitrary set of tags (key–value pairs) for this ACL.Update requires: No interruption.
* @property {String} VpcId Required: Yes. The ID of the VPC where the network ACL will be created.Update requires: Replacement
*/
class NetworkAcl extends WKResource {
constructor (name, propertiesObject) {
let resourceType = 'AWS::EC2::NetworkAcl'
let properties = {
Tags: new tag.TagSet(),
VpcId: new ResourceAttribute('VpcId', String, 'Yes', null)
}
super(name, resourceType, properties, propertiesObject)
}
}
/** @memberof module:EC2
* @extends WKResource
* @property {String} CidrBlock Required: Yes. The CIDR range to allow or deny, in CIDR notation (e.g., 172.16.0.0/24).Update requires: No interruption
* @property {Boolean} Egress Required: No. Whether this rule applies to egress traffic from the subnet (true)
or ingress traffic to the subnet (false). By default, AWS CloudFormation specifies
false.Update requires: Replacement.
* @property {EC2ICMPPropertyType} Icmp Required: Conditional. The Internet Control Message Protocol (ICMP) code and type.Update requires: No interruption
* @property {String} NetworkAclId Required: Yes. ID of the ACL where the entry will be created.Update requires: Replacement.
* @property {EC2PortRangePropertyType} PortRange Required: Conditional. The range of port numbers for the UDP/TCP protocol.Update requires: No interruption
* @property {Number} Protocol Required: Yes. The IP protocol that the rule applies to. You must specify -1 or a
protocol number (go to Protocol Numbers at iana.org). You can specify -1 for all
protocols.NoteIf you specify -1, all ports are opened and the
PortRange property is ignored.Update requires: No interruption
* @property {String} RuleAction Required: Yes. Whether to allow or deny traffic that matches the rule; valid values are "allow" or "deny".Update requires: No interruption
* @property {Number} RuleNumber Required: Yes. Rule number to assign to the entry (e.g., 100). This must be a positive integer
from 1 to 32766.Update requires: Replacement.
*/
class NetworkAclEntry extends WKResource {
constructor (name, propertiesObject) {
let resourceType = 'AWS::EC2::NetworkAclEntry'
let properties = {
CidrBlock: new ResourceAttribute('CidrBlock', String, 'Yes', null),
Egress: new ResourceAttribute('Egress', Boolean, 'No', null),
Icmp: new ResourceAttribute('Icmp', types.EC2ICMPPropertyType, 'Conditional', null),
NetworkAclId: new ResourceAttribute('NetworkAclId', String, 'Yes', null),
PortRange: new ResourceAttribute('PortRange', types.EC2PortRangePropertyType, 'Conditional', null),
Protocol: new ResourceAttribute('Protocol', Number, 'Yes', null),
RuleAction: new ResourceAttribute('RuleAction', String, 'Yes', null),
RuleNumber: new ResourceAttribute('RuleNumber', Number, 'Yes', null)
}
super(name, resourceType, properties, propertiesObject)
}
}
/** @memberof module:EC2
* @extends WKResource
* @property {String} Description Required: No. The description of this network interface.Update requires: No interruption.
* @property {String} GroupSet Required: No. A list of security group IDs associated with this network interface.Update requires: No interruption
* @property {String} PrivateIpAddress Required: No. Assigns a single private IP address to the network interface, which is used as
the primary private IP address. If you want to specify multiple private IP
address, use the PrivateIpAddresses property.Update requires: Replacement.
* @property {EC2NetworkInterfacePrivateIPSpecification} PrivateIpAddresses Required: No. Assigns a list of private IP addresses to the network interface. You can
specify a primary private IP address by setting the value of the
Primary property to true in the
PrivateIpAddressSpecification property. If you want Amazon EC2 to
automatically assign private IP addresses, use the
SecondaryPrivateIpAddressCount property and do not specify this
property.For information about the maximum number of private IP addresses, see Private IP Addresses Per
ENI Per Instance Type in the
Amazon EC2 User Guide for Linux Instances.Update requires: Replacement if you change the primary private IP address. If not,
update requires No interruption.
* @property {Number} SecondaryPrivateIpAddressCount Required: No. The number of secondary private IP addresses that Amazon EC2 automatically assigns
to the network interface. Amazon EC2 uses the value of the
PrivateIpAddress property as the primary private IP address. If
you don't specify that property, Amazon EC2 automatically assigns both the primary and
secondary private IP addresses.If you want to specify your own list of private IP addresses, use the
PrivateIpAddresses property and do not specify this
property.For information about the maximum number of private IP addresses, see Private IP Addresses
Per ENI Per Instance Type in the
Amazon EC2 User Guide for Linux Instances.Update requires: No interruption.
* @property {Boolean} SourceDestCheck Required: No. Flag indicating whether traffic to or from the instance is validated.Update requires: No interruption.
* @property {String} SubnetId Required: Yes. The ID of the subnet to associate with the network interface.Update requires: Replacement.
* @property {AWSCloudFormationResourceTags} Tags Required: No. An arbitrary set of tags (key–value pairs) for this network
interface.Update requires: No interruption.
*/
class NetworkInterface extends WKResource {
constructor (name, propertiesObject) {
let resourceType = 'AWS::EC2::NetworkInterface'
let properties = {
Description: new ResourceAttribute('Description', String, 'No', null),
GroupSet: new ResourceAttributeArray('GroupSet', String, 'No', null),
PrivateIpAddress: new ResourceAttribute('PrivateIpAddress', String, 'No', null),
PrivateIpAddresses: new ResourceAttributeArray('PrivateIpAddresses', types.EC2NetworkInterfacePrivateIPSpecification, 'No', null),
SecondaryPrivateIpAddressCount: new ResourceAttribute('SecondaryPrivateIpAddressCount', Number, 'No', null),
SourceDestCheck: new ResourceAttribute('SourceDestCheck', Boolean, 'No', null),
SubnetId: new ResourceAttribute('SubnetId', String, 'Yes', null),
Tags: new tag.TagSet()
}
super(name, resourceType, properties, propertiesObject)
}
}
/** @memberof module:EC2
* @extends WKResource
* @property {Boolean} DeleteOnTermination Required: No. Whether to delete the network interface when the instance terminates. By
default, this value is set to True.Update requires: No interruption
* @property {String} DeviceIndex Required: Conditional. The network interface's position in the attachment order. For example, the
first attached network interface has a DeviceIndex of
0.Update requires: No interruption
* @property {String} InstanceId Required: Conditional. The ID of the instance to which you will attach the ENI.Update requires: No interruption
* @property {String} NetworkInterfaceId Required: Conditional. The ID of the ENI that you want to attach.Update requires: No interruption
*/
class NetworkInterfaceAttachment extends WKResource {
constructor (name, propertiesObject) {
let resourceType = 'AWS::EC2::NetworkInterfaceAttachment'
let properties = {
DeleteOnTermination: new ResourceAttribute('DeleteOnTermination', Boolean, 'No', null),
DeviceIndex: new ResourceAttribute('DeviceIndex', String, 'Conditional', null),
InstanceId: new ResourceAttribute('InstanceId', String, 'Conditional', null),
NetworkInterfaceId: new ResourceAttribute('NetworkInterfaceId', String, 'Conditional', null)
}
super(name, resourceType, properties, propertiesObject)
}
}
/** @memberof module:EC2
* @extends WKResource
* @property {String} Strategy Required: No. The placement strategy, which relates to the instance types that can be added
to the placement group. For example, for the cluster strategy, you can
cluster C4 instance types but not T2 instance types. For valid values, see CreatePlacementGroup in the
Amazon EC2 API Reference. By default, AWS CloudFormation sets the value of this
property to cluster.Update requires: Replacement
*/
class PlacementGroup extends WKResource {
constructor (name, propertiesObject) {
let resourceType = 'AWS::EC2::PlacementGroup'
let properties = {
Strategy: new ResourceAttribute('Strategy', String, 'No', null)
}
super(name, resourceType, properties, propertiesObject)
}
}
/** @memberof module:EC2
* @extends WKResource
* @property {String} DestinationCidrBlock Required: Yes. The CIDR address block used for the destination match. For example,
0.0.0.0/0. Routing decisions are based on the most specific
match.Update requires: Replacement
* @property {String} GatewayId Required: Conditional. The ID of an Internet gateway or virtual private gateway that is attached to
your VPC. For example: igw-eaad4883.For route entries that specify a gateway, you must specify a dependency on the
gateway attachment resource. For more information, see DependsOn Attribute.Update requires: No interruption
* @property {String} InstanceId Required: Conditional. The ID of a NAT instance in your VPC. For example,
i-1a2b3c4d.Update requires: No interruption
* @property {String} NatGatewayId Required: Conditional. The ID of a NAT gateway. For example,
nat-0a12bc456789de0fg.Update requires: No interruption
* @property {String} NetworkInterfaceId Required: Conditional. Allows the routing of network interface IDs.Update requires: No interruption
* @property {String} RouteTableId Required: Yes. The ID of the route table where the route will
be added.Update requires: Replacement
* @property {String} VpcPeeringConnectionId Required: Conditional. The ID of a VPC peering connection.Update requires: No interruption
*/
class Route extends WKResource {
constructor (name, propertiesObject) {
let resourceType = 'AWS::EC2::Route'
let properties = {
DestinationCidrBlock: new ResourceAttribute('DestinationCidrBlock', String, 'Yes', null),
GatewayId: new ResourceAttribute('GatewayId', String, 'Conditional', null),
InstanceId: new ResourceAttribute('InstanceId', String, 'Conditional', null),
NatGatewayId: new ResourceAttribute('NatGatewayId', String, 'Conditional', null),
NetworkInterfaceId: new ResourceAttribute('NetworkInterfaceId', String, 'Conditional', null),
RouteTableId: new ResourceAttribute('RouteTableId', String, 'Yes', null),
VpcPeeringConnectionId: new ResourceAttribute('VpcPeeringConnectionId', String, 'Conditional', null)
}
super(name, resourceType, properties, propertiesObject)
}
}
/** @memberof module:EC2
* @extends WKResource
* @property {String} VpcId Required: Yes. The ID of the VPC where the route table will be created.Example: vpc-11ad4878Update requires: Replacement
* @property {AWSCloudFormationResourceTags} Tags Required: No. An arbitrary set of tags (key–value pairs) for this route table.Update requires: No interruption.
*/
class RouteTable extends WKResource {
constructor (name, propertiesObject) {
let resourceType = 'AWS::EC2::RouteTable'
let properties = {
VpcId: new ResourceAttribute('VpcId', String, 'Yes', null),
Tags: new tag.TagSet()
}
super(name, resourceType, properties, propertiesObject)
}
}
/** @memberof module:EC2
* @extends WKResource
* @property {String} GroupDescription Required: Yes. Description of the security group.Update requires: Replacement
* @property {EC2SecurityGroupRulePropertyType} SecurityGroupEgress Required: No. A list of Amazon EC2 security group egress rules.Update requires: No interruption
* @property {EC2SecurityGroupRulePropertyType} SecurityGroupIngress Required: No. A list of Amazon EC2 security group ingress rules.Update requires: No interruption
* @property {AWSCloudFormationResourceTags} Tags Required: No. The tags that you want to attach to the resource.Update requires: No interruption.
* @property {String} VpcId Required: Conditional. The physical ID of the VPC. Can be obtained by using a reference to an AWS::EC2::VPC, such as: { "Ref" : "myVPC" }.For more information about using the Ref function, see Ref.Update requires: ReplacementNoteFor more information about VPC security groups, go to Security Groups in the Amazon VPC User Guide.
*/
class SecurityGroup extends WKResource {
constructor (name, propertiesObject) {
let resourceType = 'AWS::EC2::SecurityGroup'
let properties = {
GroupDescription: new ResourceAttribute('GroupDescription', String, 'Yes', null),
SecurityGroupEgress: new ResourceAttributeArray('SecurityGroupEgress', types.EC2SecurityGroupRulePropertyType, 'No', null),
SecurityGroupIngress: new ResourceAttributeArray('SecurityGroupIngress', types.EC2SecurityGroupRulePropertyType, 'No', null),
Tags: new tag.TagSet(),
VpcId: new ResourceAttribute('VpcId', String, 'Conditional', null)
}
super(name, resourceType, properties, propertiesObject)
}
}
/** @memberof module:EC2
* @extends WKResource
* @property {String} CidrIp Required: Conditional. CIDR range.Update requires: Replacement
* @property {String} DestinationSecurityGroupId Required: Conditional. Specifies the group ID of the destination Amazon VPC security group.Update requires: Replacement
* @property {Number} FromPort Required: Yes. Start of port range for the TCP and UDP protocols, or an ICMP type number. If
you specify icmp for the IpProtocol property, you can
specify -1 as a wildcard (i.e., any ICMP type number).Update requires: Replacement
* @property {String} GroupId Required: Yes. ID of the Amazon VPC security group to modify. This value can be a reference to an AWS::EC2::SecurityGroup resource that has a
valid VpcId property or the ID of an existing Amazon VPC security group.Update requires: Replacement
* @property {String} IpProtocol Required: Yes. IP protocol name or number. For valid values, see the IpProtocol parameter in AuthorizeSecurityGroupIngressUpdate requires: Replacement
* @property {Number} ToPort Required: Yes. End of port range for the TCP and UDP protocols, or an ICMP code. If you
specify icmp for the IpProtocol property, you can
specify -1 as a wildcard (i.e., any ICMP code).Update requires: Replacement
*/
class SecurityGroupEgress extends WKResource {
constructor (name, propertiesObject) {
let resourceType = 'AWS::EC2::SecurityGroupEgress'
let properties = {
CidrIp: new ResourceAttribute('CidrIp', String, 'Conditional', null),
DestinationSecurityGroupId: new ResourceAttribute('DestinationSecurityGroupId', String, 'Conditional', null),
FromPort: new ResourceAttribute('FromPort', Number, 'Yes', null),
GroupId: new ResourceAttribute('GroupId', String, 'Yes', null),
IpProtocol: new ResourceAttribute('IpProtocol', String, 'Yes', null),
ToPort: new ResourceAttribute('ToPort', Number, 'Yes', null)
}
super(name, resourceType, properties, propertiesObject)
}
}
/** @memberof module:EC2
* @extends WKResource
* @property {String} CidrIp Required: Conditional. Specifies a CIDR range.For an overview of CIDR ranges, go to the Wikipedia
Tutorial.Update requires: Replacement
* @property {Number} FromPort Required: Conditional. Start of port range for the TCP and UDP protocols, or an ICMP type number.
If you specify icmp for the IpProtocol property, you can
specify -1 as a wildcard (i.e., any ICMP type number).Update requires: Replacement
* @property {String} GroupId Required: Conditional. ID of the Amazon EC2 or VPC security group to modify. The group must belong to your
account.Update requires: Replacement
* @property {String} GroupName Required: Conditional. Name of the Amazon EC2 security group (non-VPC security group) to modify. This value
can be a reference to an AWS::EC2::SecurityGroup resource or the name of an existing Amazon EC2
security group.Update requires: Replacement
* @property {String} IpProtocol Required: Yes. IP protocol name or number. For valid values, see the IpProtocol parameter
in AuthorizeSecurityGroupIngressUpdate requires: Replacement
* @property {String} SourceSecurityGroupId Required: Conditional. Specifies the ID of the source security group or uses the Ref
intrinsic function to refer to the logical ID of a security group defined in the
same template.Update requires: Replacement
* @property {String} SourceSecurityGroupName Required: Conditional. Specifies the name of the Amazon EC2 security group (non-VPC security group) to
allow access or uses the Ref intrinsic function to refer to the
logical name of a security group defined in the same template. For instances in a
VPC, specify the SourceSecurityGroupId property.Update requires: Replacement
* @property {String} SourceSecurityGroupOwnerId Required: Conditional. Specifies the AWS Account ID of the owner of the Amazon EC2 security group
specified in the SourceSecurityGroupName property.Update requires: Replacement
* @property {Number} ToPort Required: Conditional. End of port range for the TCP and UDP protocols, or an ICMP code. If you
specify icmp for the IpProtocol property, you can
specify -1 as a wildcard (i.e., any ICMP code).Update requires: Replacement
*/
class SecurityGroupIngress extends WKResource {
constructor (name, propertiesObject) {
let resourceType = 'AWS::EC2::SecurityGroupIngress'
let properties = {
CidrIp: new ResourceAttribute('CidrIp', String, 'Conditional', null),
FromPort: new ResourceAttribute('FromPort', Number, 'Conditional', null),
GroupId: new ResourceAttribute('GroupId', String, 'Conditional', null),
GroupName: new ResourceAttribute('GroupName', String, 'Conditional', null),
IpProtocol: new ResourceAttribute('IpProtocol', String, 'Yes', null),
SourceSecurityGroupId: new ResourceAttribute('SourceSecurityGroupId', String, 'Conditional', null),
SourceSecurityGroupName: new ResourceAttribute('SourceSecurityGroupName', String, 'Conditional', null),
SourceSecurityGroupOwnerId: new ResourceAttribute('SourceSecurityGroupOwnerId', String, 'Conditional', null),
ToPort: new ResourceAttribute('ToPort', Number, 'Conditional', null)
}
super(name, resourceType, properties, propertiesObject)
}
}
/** @memberof module:EC2
* @extends WKResource
* @property {AmazonEC2SpotFleetSpotFleetRequestConfigData} SpotFleetRequestConfigData Required: Yes. The configuration for a Spot fleet request.Update requires: Replacement
*/
class SpotFleet extends WKResource {
constructor (name, propertiesObject) {
let resourceType = 'AWS::EC2::SpotFleet'
let properties = {
SpotFleetRequestConfigData: new ResourceAttribute('SpotFleetRequestConfigData', types.AmazonEC2SpotFleetSpotFleetRequestConfigData, 'Yes', null)
}
super(name, resourceType, properties, propertiesObject)
}
}
/** @memberof module:EC2
* @extends WKResource
* @property {String} AvailabilityZone Required: No. The availability zone in which you want the subnet. Default: AWS selects a zone
for you (recommended).
Update requires: Replacement
NoteIf you update this property, you must also update the
CidrBlock property.
* @property {String} CidrBlock Required: Yes. The CIDR block that you want the subnet to cover (for example,
"10.0.0.0/24").
Update requires: Replacement
NoteIf you update this property, you must also update the
AvailabilityZone property.
* @property {Boolean} MapPublicIpOnLaunch Required: No. Indicates whether instances that are launched in this subnet receive a public
IP address. By default, the value is false.Update requires: No interruption.
* @property {AWSCloudFormationResourceTags} Tags Required: No. An arbitrary set of tags (key–value pairs) for this subnet.Update requires: No interruption.
* @property {String} VpcId Required: Yes. A Ref structure that contains the ID of the VPC on which you want to create the
subnet. The VPC ID is provided as the value of the "Ref" property, as: {
"Ref": "VPCID" }.
Update requires: Replacement
NoteIf you update this property, you must also update the
CidrBlock property.
*/
class Subnet extends WKResource {
constructor (name, propertiesObject) {
let resourceType = 'AWS::EC2::Subnet'
let properties = {
AvailabilityZone: new ResourceAttribute('AvailabilityZone', String, 'No', null),
CidrBlock: new ResourceAttribute('CidrBlock', String, 'Yes', null),
MapPublicIpOnLaunch: new ResourceAttribute('MapPublicIpOnLaunch', Boolean, 'No', null),
Tags: new tag.TagSet(),
VpcId: new ResourceAttribute('VpcId', String, 'Yes', null)
}
super(name, resourceType, properties, propertiesObject)
}
}
/** @memberof module:EC2
* @extends WKResource
* @property {String} SubnetId Required: Yes. The ID representing the current association between the original network ACL and the subnet.Update requires: Replacement
* @property {String} NetworkAclId Required: Yes. The ID of the new ACL to associate with the subnet.Update requires: Replacement
*/
class SubnetNetworkAclAssociation extends WKResource {
constructor (name, propertiesObject) {
let resourceType = 'AWS::EC2::SubnetNetworkAclAssociation'
let properties = {
SubnetId: new ResourceAttribute('SubnetId', String, 'Yes', null),
NetworkAclId: new ResourceAttribute('NetworkAclId', String, 'Yes', null)
}
super(name, resourceType, properties, propertiesObject)
}
}
/** @memberof module:EC2
* @extends WKResource
* @property {String} RouteTableId Required: Yes. The ID of the route table. This is commonly written as a reference to a route table declared
elsewhere in the template. For example:Update requires: No interruption. However, the physical ID changes when the route table ID is changed.
* @property {String} SubnetId Required: Yes. The ID of the subnet. This is commonly written as a reference to a subnet declared elsewhere in the
template. For example:Update requires: Replacement
*/
class SubnetRouteTableAssociation extends WKResource {
constructor (name, propertiesObject) {
let resourceType = 'AWS::EC2::SubnetRouteTableAssociation'
let properties = {
RouteTableId: new ResourceAttribute('RouteTableId', String, 'Yes', null),
SubnetId: new ResourceAttribute('SubnetId', String, 'Yes', null)
}
super(name, resourceType, properties, propertiesObject)
}
}
/** @memberof module:EC2
* @extends WKResource
* @property {Boolean} AutoEnableIO Required: No. Indicates whether the volume is auto-enabled for I/O operations. By default,
Amazon EBS disables I/O to the volume from attached EC2 instances when it determines
that a volume's data is potentially inconsistent. If the consistency of the volume
is not a concern, and you prefer that the volume be made available immediately if
it's impaired, you can configure the volume to automatically enable I/O. For more
information, see Working with the AutoEnableIO Volume Attribute in the
Amazon EC2 User Guide for Linux Instances.Update requires: No interruption
* @property {String} AvailabilityZone Required: Yes. The Availability Zone in which to create the new volume.Update requires: Updates are not supported.
* @property {Boolean} Encrypted Required: Conditional. Indicates whether the volume is encrypted. Encrypted Amazon EBS volumes can only be
attached to instance types that support Amazon EBS encryption. Volumes that are created
from encrypted snapshots are automatically encrypted. You cannot create an
encrypted volume from an unencrypted snapshot or vice versa. If your AMI uses
encrypted volumes, you can only launch the AMI on supported instance types. For
more information, see Amazon EBS
encryption in the Amazon EC2 User Guide for Linux Instances.Update requires: Updates are not supported.
* @property {Number} Iops Required: Conditional. The number of I/O operations per second (IOPS) that the volume supports. For more information about the valid sizes for each volume type, see the Iops parameter for the CreateVolume action in the Amazon EC2 API Reference.Update requires: Updates are not supported.
* @property {String} KmsKeyId Required: No. The Amazon Resource Name (ARN) of the AWS Key Management Service master key that is used to
create the encrypted volume, such as
arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef.
If you create an encrypted volume and don't specify this property, the default
master key is used.Update requires: Updates are not supported.
* @property {String} Size Required: Conditional. The size of the volume, in gibibytes (GiBs). For more information about the valid sizes for each volume type, see the Size parameter for the CreateVolume action in the Amazon EC2 API Reference.If you specify the SnapshotId property, specify a size that is
equal to or greater than the snapshot size. If you don't specify a size, Amazon EC2
will use the size of the snapshot as the volume size.Update requires: Updates are not supported.
* @property {String} SnapshotId Required: No. The snapshot from which to create the new volume.Update requires: Updates are not supported.
* @property {AWSCloudFormationResourceTags} Tags Required: No. An arbitrary set of tags (key–value pairs) for this volume.Update requires: No interruption
* @property {String} VolumeType Required: No. The volume type. If you set the type to io1, you must also set the Iops property. For valid values, see the VolumeType parameter for the CreateVolume action in the Amazon EC2 API Reference.Update requires: Updates are not supported.
*/
class Volume extends WKResource {
constructor (name, propertiesObject) {
let resourceType = 'AWS::EC2::Volume'
let properties = {
AutoEnableIO: new ResourceAttribute('AutoEnableIO', Boolean, 'No', null),
AvailabilityZone: new ResourceAttribute('AvailabilityZone', String, 'Yes', null),
Encrypted: new ResourceAttribute('Encrypted', Boolean, 'Conditional', null),
Iops: new ResourceAttribute('Iops', Number, 'Conditional', null),
KmsKeyId: new ResourceAttribute('KmsKeyId', String, 'No', null),
Size: new ResourceAttribute('Size', String, 'Conditional', null),
SnapshotId: new ResourceAttribute('SnapshotId', String, 'No', null),
Tags: new tag.TagSet(),
VolumeType: new ResourceAttribute('VolumeType', String, 'No', null)
}
super(name, resourceType, properties, propertiesObject)
}
}
/** @memberof module:EC2
* @extends WKResource
* @property {String} Device Required: Yes. How the device is exposed to the instance (e.g., /dev/sdh, or xvdh).Update requires: Updates are not supported.
* @property {String} InstanceId Required: Yes. The ID of the instance to which the volume attaches. This value can be a reference to an
AWS::EC2::Instance resource, or it can be
the physical ID of an existing EC2 instance.Update requires: Updates are not supported.
* @property {String} VolumeId Required: Yes. The ID of the Amazon EBS volume. The volume and instance must be within the same
Availability Zone. This value can be a reference to an AWS::EC2::Volume resource, or it can be the
volume ID of an existing Amazon EBS volume.Update requires: Updates are not supported.
*/
class VolumeAttachment extends WKResource {
constructor (name, propertiesObject) {
let resourceType = 'AWS::EC2::VolumeAttachment'
let properties = {
Device: new ResourceAttribute('Device', String, 'Yes', null),
InstanceId: new ResourceAttribute('InstanceId', String, 'Yes', null),
VolumeId: new ResourceAttribute('VolumeId', String, 'Yes', null)
}
super(name, resourceType, properties, propertiesObject)
}
}
/** @memberof module:EC2
* @extends WKResource
* @property {String} CidrBlock Required: Yes. The CIDR block you want the VPC to cover. For example: "10.0.0.0/16".Update requires: Replacement
* @property {Boolean} EnableDnsSupport Required: No. Specifies whether DNS resolution is supported for the VPC. If this attribute is
true, the Amazon DNS server resolves DNS hostnames for your
instances to their corresponding IP addresses; otherwise, it does not. By default
the value is set to true.Update requires: No interruption
* @property {Boolean} EnableDnsHostnames Required: No. Specifies whether the instances launched in the VPC get DNS hostnames. If this
attribute is true, instances in the VPC get DNS hostnames; otherwise,
they do not. You can only set EnableDnsHostnames to true
if you also set the EnableDnsSupport attribute to true.
By default, the value is set to false.Update requires: No interruption
* @property {String} InstanceTenancy Required: No. The allowed tenancy of instances launched into the VPC. "default": Instances can be launched with any
tenancy."dedicated": Any instance launched into the VPC automatically has dedicated tenancy, unless you launch it with the default
tenancy.Valid values: "default" or
"dedicated"Update requires: Replacement
* @property {AWSCloudFormationResourceTags} Tags Required: No. An arbitrary set of tags (key–value pairs) for this VPC. To name a VPC resource, specify a value for the Name key.Update requires: No interruption.
*/
class VPC extends WKResource {
constructor (name, propertiesObject) {
let resourceType = 'AWS::EC2::VPC'
let properties = {
CidrBlock: new ResourceAttribute('CidrBlock', String, 'Yes', null),
EnableDnsSupport: new ResourceAttribute('EnableDnsSupport', Boolean, 'No', null),
EnableDnsHostnames: new ResourceAttribute('EnableDnsHostnames', Boolean, 'No', null),
InstanceTenancy: new ResourceAttribute('InstanceTenancy', String, 'No', null),
Tags: new tag.TagSet()
}
super(name, resourceType, properties, propertiesObject)
}
}
/** @memberof module:EC2
* @extends WKResource
* @property {String} DhcpOptionsId Required: Yes. The ID of the DHCP options you want to associate with the VPC. Specify
default if you want the VPC to use no DHCP options.Update requires: No interruption
* @property {String} VpcId Required: Yes. The ID of the VPC to associate with this DHCP options set.Update requires: Replacement
*/
class VPCDHCPOptionsAssociation extends WKResource {
constructor (name, propertiesObject) {
let resourceType = 'AWS::EC2::VPCDHCPOptionsAssociation'
let properties = {
DhcpOptionsId: new ResourceAttribute('DhcpOptionsId', String, 'Yes', null),
VpcId: new ResourceAttribute('VpcId', String, 'Yes', null)
}
super(name, resourceType, properties, propertiesObject)
}
}
/** @memberof module:EC2
* @extends WKResource
* @property {Object} PolicyDocument Required: No. A policy to attach to the endpoint that controls access to the service. The
policy must be valid JSON. The default policy allows full access to the AWS service. For
more information, see Controlling Access to Services in the
Amazon VPC User Guide.Update requires: No interruption
* @property {String} RouteTableIds Required: No. One or more route table IDs that are used by the VPC to reach the
endpoint.Update requires: No interruption
* @property {String} ServiceName Required: Yes. The AWS service to which you want to establish a connection. Specify the
service name in the form of
com.amazonaws.region.service.Update requires: Replacement
* @property {String} VpcId Required: Yes. The ID of the VPC in which the endpoint is used.Update requires: Replacement
*/
class VPCEndpoint extends WKResource {
constructor (name, propertiesObject) {
let resourceType = 'AWS::EC2::VPCEndpoint'
let properties = {
PolicyDocument: new ResourceAttribute('PolicyDocument', Object, 'No', null),
RouteTableIds: new ResourceAttributeArray('RouteTableIds', String, 'No', null),
ServiceName: new ResourceAttribute('ServiceName', String, 'Yes', null),
VpcId: new ResourceAttribute('VpcId', String, 'Yes', null)
}
super(name, resourceType, properties, propertiesObject)
}
}
/** @memberof module:EC2
* @extends WKResource
* @property {String} InternetGatewayId Required: Conditional. The ID of the Internet gateway.Update requires: No interruption
* @property {String} VpcId Required: Yes. The ID of the VPC to associate with this gateway.Update requires: No interruption
* @property {String} VpnGatewayId Required: Conditional. The ID of the virtual private network (VPN) gateway to attach to the VPC.Update requires: No interruption
*/
class VPCGatewayAttachment extends WKResource {
constructor (name, propertiesObject) {
let resourceType = 'AWS::EC2::VPCGatewayAttachment'
let properties = {
InternetGatewayId: new ResourceAttribute('InternetGatewayId', String, 'Conditional', null),
VpcId: new ResourceAttribute('VpcId', String, 'Yes', null),
VpnGatewayId: new ResourceAttribute('VpnGatewayId', String, 'Conditional', null)
}
super(name, resourceType, properties, propertiesObject)
}
}
/** @memberof module:EC2
* @extends WKResource
* @property {String} PeerVpcId Required: Yes. The ID of the VPC with which you are creating the peering connection.Update requires: Replacement
* @property {AWSCloudFormationResourceTags} Tags Required: No. An arbitrary set of tags (key–value pairs) for this
resource.Update requires: No interruption.
* @property {String} VpcId Required: Yes. The ID of the VPC that is requesting a peering connection.Update requires: Replacement
*/
class VPCPeeringConnection extends WKResource {
constructor (name, propertiesObject) {
let resourceType = 'AWS::EC2::VPCPeeringConnection'
let properties = {
PeerVpcId: new ResourceAttribute('PeerVpcId', String, 'Yes', null),
Tags: new tag.TagSet(),
VpcId: new ResourceAttribute('VpcId', String, 'Yes', null)
}
super(name, resourceType, properties, propertiesObject)
}
}
/** @memberof module:EC2
* @extends WKResource
* @property {String} Type Required: Yes. The type of VPN connection this virtual private gateway supports.Example: "ipsec.1"Update requires: Replacement
* @property {String} CustomerGatewayId Required: Yes. The ID of the customer gateway. This can either be an embedded JSON object or a
reference to a Gateway ID.
* @property {Boolean} StaticRoutesOnly Required: Conditional. Indicates whether the VPN connection requires static routes.Update requires: Replacement
* @property {AWSCloudFormationResourceTags} Tags Required: No. The tags that you want to attach to the resource.Update requires: No interruption.
* @property {String} VpnGatewayId Required: Yes. The ID of the virtual private gateway. This can either be an embedded JSON
object or a reference to a Gateway ID.
*/
class VPNConnection extends WKResource {
constructor (name, propertiesObject) {
let resourceType = 'AWS::EC2::VPNConnection'
let properties = {
Type: new ResourceAttribute('Type', String, 'Yes', null),
CustomerGatewayId: new ResourceAttribute('CustomerGatewayId', String, 'Yes', null),
StaticRoutesOnly: new ResourceAttribute('StaticRoutesOnly', Boolean, 'Conditional', null),
Tags: new tag.TagSet(),
VpnGatewayId: new ResourceAttribute('VpnGatewayId', String, 'Yes', null)
}
super(name, resourceType, properties, propertiesObject)
}
}
/** @memberof module:EC2
* @extends WKResource
* @property {String} DestinationCidrBlock Required: Conditional. The CIDR block that is associated with the local subnet of the customer
network.Update requires: Replacement
* @property {String} VpnConnectionId Required: Conditional. The ID of the VPN connection.Update requires: Replacement
*/
class VPNConnectionRoute extends WKResource {
constructor (name, propertiesObject) {
let resourceType = 'AWS::EC2::VPNConnectionRoute'
let properties = {
DestinationCidrBlock: new ResourceAttribute('DestinationCidrBlock', String, 'Conditional', null),
VpnConnectionId: new ResourceAttribute('VpnConnectionId', String, 'Conditional', null)
}
super(name, resourceType, properties, propertiesObject)
}
}
/** @memberof module:EC2
* @extends WKResource
* @property {String} Type Required: Yes. The type of VPN connection this virtual private gateway supports. The only valid value is
"ipsec.1".Update requires: Replacement
* @property {AWSCloudFormationResourceTags} Tags Required: No. An arbitrary set of tags (key–value pairs) for this resource.Update requires: No interruption.
*/
class VPNGateway extends WKResource {
constructor (name, propertiesObject) {
let resourceType = 'AWS::EC2::VPNGateway'
let properties = {
Type: new ResourceAttribute('Type', String, 'Yes', null),
Tags: new tag.TagSet()
}
super(name, resourceType, properties, propertiesObject)
}
}
/** @memberof module:EC2
* @extends WKResource
* @property {String} RouteTableIds Required: Yes. A list of routing table IDs that are associated with a VPC. The routing
tables must be associated with the same VPC that the virtual private gateway is
attached to.Update requires: No interruption
* @property {String} VpnGatewayId Required: Yes. The ID of the virtual private gateway that is attached to a VPC. The virtual
private gateway must be attached to the same VPC that the routing tables are
associated with.Update requires: No interruption
*/
class VPNGatewayRoutePropagation extends WKResource {
constructor (name, propertiesObject) {
let resourceType = 'AWS::EC2::VPNGatewayRoutePropagation'
let properties = {
RouteTableIds: new ResourceAttributeArray('RouteTableIds', String, 'Yes', null),
VpnGatewayId: new ResourceAttribute('VpnGatewayId', String, 'Yes', null)
}
super(name, resourceType, properties, propertiesObject)
}
}
module.exports = { CustomerGateway: CustomerGateway,
DHCPOptions: DHCPOptions,
EIP: EIP,
EIPAssociation: EIPAssociation,
FlowLog: FlowLog,
Host: Host,
Instance: Instance,
InternetGateway: InternetGateway,
NatGateway: NatGateway,
NetworkAcl: NetworkAcl,
NetworkAclEntry: NetworkAclEntry,
NetworkInterface: NetworkInterface,
NetworkInterfaceAttachment: NetworkInterfaceAttachment,
PlacementGroup: PlacementGroup,
Route: Route,
RouteTable: RouteTable,
SecurityGroup: SecurityGroup,
SecurityGroupEgress: SecurityGroupEgress,
SecurityGroupIngress: SecurityGroupIngress,
SpotFleet: SpotFleet,
Subnet: Subnet,
SubnetNetworkAclAssociation: SubnetNetworkAclAssociation,
SubnetRouteTableAssociation: SubnetRouteTableAssociation,
Volume: Volume,
VolumeAttachment: VolumeAttachment,
VPC: VPC,
VPCDHCPOptionsAssociation: VPCDHCPOptionsAssociation,
VPCEndpoint: VPCEndpoint,
VPCGatewayAttachment: VPCGatewayAttachment,
VPCPeeringConnection: VPCPeeringConnection,
VPNConnection: VPNConnection,
VPNConnectionRoute: VPNConnectionRoute,
VPNGateway: VPNGateway,
VPNGatewayRoutePropagation: VPNGatewayRoutePropagation
}