2022-10-11 14:21:14 -06:00
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0
# Purpose:
# ec2-ruby-example-create-subnet.rb demonstrates how to
# create a subnet within a virtual private cloud (VPC) in
# Amazon Virtual Private Cloud (Amazon VPC) and then tags
# the subnet.
# snippet-start:[ec2.Ruby.createSubnet]
2024-09-25 15:25:54 -04:00
require 'aws-sdk-ec2'
2022-10-11 14:21:14 -06:00
# Creates a subnet within a virtual private cloud (VPC) in
# Amazon Virtual Private Cloud (Amazon VPC) and then tags
# the subnet.
#
# Prerequisites:
#
# - A VPC in Amazon VPC.
#
# @param ec2_resource [Aws::EC2::Resource] An initialized
# Amazon Elastic Compute Cloud (Amazon EC2) resource object.
# @param vpc_id [String] The ID of the VPC for the subnet.
# @param cidr_block [String] The IPv4 CIDR block for the subnet.
# @param availability_zone [String] The ID of the Availability Zone
# for the subnet.
# @param tag_key [String] The key portion of the tag for the subnet.
# @param tag_vlue [String] The value portion of the tag for the subnet.
# @return [Boolean] true if the subnet was created and tagged;
# otherwise, false.
# @example
# exit 1 unless subnet_created_and_tagged?(
# Aws::EC2::Resource.new(region: 'us-west-2'),
# 'vpc-6713dfEX',
# '10.0.0.0/24',
# 'us-west-2a',
# 'my-key',
# 'my-value'
# )
def subnet_created_and_tagged? (
ec2_resource ,
vpc_id ,
cidr_block ,
availability_zone ,
tag_key ,
tag_value
)
subnet = ec2_resource . create_subnet (
vpc_id : vpc_id ,
cidr_block : cidr_block ,
availability_zone : availability_zone
)
subnet . create_tags (
tags : [
{
key : tag_key ,
value : tag_value
}
]
)
puts " Subnet created with ID ' #{ subnet . id } ' in VPC with ID ' #{ vpc_id } ' " \
" and CIDR block ' #{ cidr_block } ' in availability zone " \
" ' #{ availability_zone } ' and tagged with key ' #{ tag_key } ' and " \
" value ' #{ tag_value } '. "
2024-09-25 15:25:54 -04:00
true
2022-10-11 14:21:14 -06:00
rescue StandardError = > e
puts " Error creating or tagging subnet: #{ e . message } "
2024-09-25 15:25:54 -04:00
false
2022-10-11 14:21:14 -06:00
end
2024-02-16 11:17:29 -05:00
# Example usage:
2022-10-11 14:21:14 -06:00
def run_me
2024-09-25 15:25:54 -04:00
vpc_id = ''
cidr_block = ''
availability_zone = ''
tag_key = ''
tag_value = ''
region = ''
2022-10-11 14:21:14 -06:00
# Print usage information and then stop.
2024-09-25 15:25:54 -04:00
if ARGV [ 0 ] == '--help' || ARGV [ 0 ] == '-h'
puts 'Usage: ruby ec2-ruby-example-create-subnet.rb ' \
'VPC_ID CIDR_BLOCK AVAILABILITY_ZONE TAG_KEY TAG_VALUE REGION'
2022-10-11 14:21:14 -06:00
# Replace us-west-2 with the AWS Region you're using for Amazon EC2.
2024-09-25 15:25:54 -04:00
puts 'Example: ruby ec2-ruby-example-create-subnet.rb ' \
'vpc-6713dfEX 10.0.0.0/24 us-west-2a my-key my-value us-west-2'
2022-10-11 14:21:14 -06:00
exit 1
# If no values are specified at the command prompt, use these default values.
elsif ARGV . count . zero?
2024-09-25 15:25:54 -04:00
vpc_id = 'vpc-6713dfEX'
cidr_block = '10.0.0.0/24'
availability_zone = 'us-west-2a'
tag_key = 'my-key'
tag_value = 'my-value'
2022-10-11 14:21:14 -06:00
# Replace us-west-2 with the AWS Region you're using for Amazon EC2.
2024-09-25 15:25:54 -04:00
region = 'us-west-2'
2022-10-11 14:21:14 -06:00
# Otherwise, use the values as specified at the command prompt.
else
vpc_id = ARGV [ 0 ]
cidr_block = ARGV [ 1 ]
availability_zone = ARGV [ 2 ]
tag_key = ARGV [ 3 ]
tag_value = ARGV [ 4 ]
region = ARGV [ 5 ]
end
ec2_resource = Aws :: EC2 :: Resource . new ( region : region )
if subnet_created_and_tagged? (
ec2_resource ,
vpc_id ,
cidr_block ,
availability_zone ,
tag_key ,
tag_value
)
2024-09-25 15:25:54 -04:00
puts 'Subnet created and tagged.'
2022-10-11 14:21:14 -06:00
else
2024-09-25 15:25:54 -04:00
puts 'Subnet not created or not tagged.'
2022-10-11 14:21:14 -06:00
end
end
run_me if $PROGRAM_NAME == __FILE__
# snippet-end:[ec2.Ruby.createSubnet]