Поиск по сайту:

Как создать VPC с помощью Python Boto3 в Ubuntu


Boto3 — это SDK Amazon Web Services (AWS) для Python. Это библиотека Python, которая позволяет пользователям или разработчикам создавать, настраивать и управлять сервисами и ресурсами AWS. Boto3 предоставляет API для сервисов AWS, который можно использовать для управления сервисами и ресурсами AWS, такими как EC2, RDS, S3 и т. д.

Чтобы узнать больше о Boto3, вы можете посетить его официальный сайт здесь.

Прежде чем мы продолжим, я предполагаю, что вы знакомы с VPC. Если нет, вы можете нажать здесь, чтобы узнать, как создать VPC из консоли AWS.

В этой статье мы увидим, как установить библиотеку Boto3 и использовать ее для создания простого VPC вместе с зависимыми от него компонентами в AWS. Мы создадим общедоступную подсеть в VPC.

Предпосылки

  1. Аккаунт AWS (создайте, если у вас его нет)
  2. Основное понимание VPC
  3. Основное понимание Python
  4. Python доступен в системе

Что мы будем делать

  1. Установить Boto3
  2. Знайте нужный метод
  3. Создайте VPC с помощью Python Boto3.

Установить Бото3

Python входит в состав Ubuntu 18.04 Server по умолчанию, поэтому вам не нужно его устанавливать.

Чтобы проверить версию Python в вашей системе, используйте следующую команду.

какой python
/usr/bin/python --version

ИЛИ

питон --версия

Если у вас нет pip и вы используете Ubuntu 18.04, выполните следующую команду, чтобы сначала обновить локальное хранилище.

судо подходящее обновление

Для установки pip используйте следующую команду

sudo apt установить python-pip

Чтобы проверить установленную версию Pip, выполните следующую команду.

пип --версия

Если у вас есть python и pip, вы можете установить Boto3.

Установка Boto3 очень проста и понятна. Чтобы установить Boto3, используйте следующую команду.

pip install boto3

Чтобы проверить, установлен ли Boto3, и проверить его версию, выполните следующую команду.

пип-шоу бото3


Знать необходимые методы

Для создания VPC и зависимых от него компонентов мы будем использовать следующие методы.

  1. создать_vpc
  2. create_route_table
  3. создать_интернет_шлюз
  4. создать_подсеть
  5. связать_с_подсетью

Теперь давайте посмотрим на методы со списком допустимых параметров. Мы не будем использовать все параметры, но вы можете попробовать, если хотите.

Синтаксис запроса метода create_vpc

response = client.create_vpc(
    CidrBlock='string',
    AmazonProvidedIpv6CidrBlock=True|False,
    Ipv6Pool='string',
    Ipv6CidrBlock='string',
    DryRun=True|False,
    InstanceTenancy='default'|'dedicated'|'host',
    Ipv6CidrBlockNetworkBorderGroup='string'
)

  1. CidrBlock: диапазон сети IPv4 для VPC в нотации CIDR. Это обязательное поле, и без него нельзя создать VPC.

Синтаксис запроса метода create_route_table

route_table = ec2.create_route_table(
    DryRun=True|False,
    VpcId='string'
)

  1. VpcId : идентификатор VPC. Это обязательное поле, которое используется для создания таблицы маршрутов в указанном VPC.

Синтаксис запроса метода create_internet_gateway

response = client.create_internet_gateway(
    DryRun=True|False
)

Каждое VPC имеет один интернет-шлюз. Это будет прикреплено к VPC

Синтаксис запроса метода create_subnet

subnet = ec2.create_subnet(
    AvailabilityZone='string',
    AvailabilityZoneId='string',
    CidrBlock='string',
    Ipv6CidrBlock='string',
    OutpostArn='string',
    VpcId='string',
    DryRun=True|False
)

  1. CidrBlock: сетевой диапазон IPv4 для подсети в нотации CIDR. Это используется для разделения VPC.
  2. VpcId: идентификатор VPC.

Синтаксис запроса метода associate_with_subnet

route_table_association = route_table.associate_with_subnet(
    DryRun=True|False,
    SubnetId='string',
    GatewayId='string'
)

  1. SubnetId:  идентификатор подсети.
    Или
  2. GatewayId : идентификатор интернет-шлюза или виртуального частного шлюза.

Чтобы создать VPC, создайте \vpc.py\ со следующим блоком кода.

Убедитесь, что вы изменили значение \aws_access_key_id_value\ и \aws_secret_access_key_value\ на свои собственные access_key_id и access_key_value соответственно. Также измените значение \region_name\.

Если вы хотите, вы можете изменить значения CidrBlock для \create_vpc\ и \create_subnet\ или оставить как есть.

vim vpc.py

import boto3

ec2 = boto3.resource('ec2', aws_access_key_id='ACCESS-KEY-OF-THE-AWS-ACCOUNT',
                     aws_secret_access_key='SECRETE-KEY-OF-THE-AWS-ACCOUNT',
                     region_name='AWS-Region')

vpc = ec2.create_vpc(CidrBlock='192.168.0.0/16')
# Assign a name to the VPC
vpc.create_tags(Tags=[{"Key": "Name", "Value": "my_vpc"}])
vpc.wait_until_available()
print(vpc.id)

# Create and Attach the Internet Gateway
ig = ec2.create_internet_gateway()
vpc.attach_internet_gateway(InternetGatewayId=ig.id)
print(ig.id)

# Create a route table and a public route to Internet Gateway
route_table = vpc.create_route_table()
route = route_table.create_route(
    DestinationCidrBlock='0.0.0.0/0',
    GatewayId=ig.id
)
print(route_table.id)

# Create a Subnet
subnet = ec2.create_subnet(CidrBlock='192.168.1.0/24', VpcId=vpc.id)
print(subnet.id)

# associate the route table with the subnet
route_table.associate_with_subnet(SubnetId=subnet.id)

Теперь, чтобы создать VPC с указанной выше конфигурацией, выполните скрипт Python, используя следующую команду.

Python vpc.py

Вы можете проверить, было ли создано VPC из консоли AWS.

На приведенном выше снимке экрана видно, что VPC с указанным CIDR и именем создан. Вы можете проверить наличие таких компонентов, как подсеть, интернет-шлюз, таблица маршрутов.

Заключение

В этой статье мы увидели, как создать VPC с общедоступной подсетью. Мы создали таблицу маршрутов, интернет-шлюз, подсеть в VPC. Мы увидели, как подсеть может быть связана с таблицей маршрутов, которая имеет общедоступный маршрут к интернет-шлюзу. Теперь вы можете настроить этот код и создать VPC с несколькими подсетями, связать их с таблицей маршрутов и иметь общедоступные или частные подсети в соответствии с вашими требованиями. Чтобы создать частную подсеть, вам потребуется создать шлюз Nat и связать его с подсетью. Эта ассоциация затем сделает подсеть частной с исходящим подключением к Интернету.