Boto3は、Python用のアマゾンウェブサービス(AWS)SDKです。これは、ユーザーまたは開発者がAWSサービスとリソースを作成、構成、および管理できるようにするPythonライブラリです。 Boto3は、EC2、RDS、S3などのAWSサービスとリソースを管理するために使用できるAWSサービス用のAPIを提供します。
Boto3の詳細については、こちらの公式サイトにアクセスしてください。
続行する前に、VPCに精通していることを前提としています。そうでない場合は、ここをクリックして、AWSコンソールからVPCを作成する方法を学ぶことができます。
この記事では、Boto3ライブラリをインストールし、それを使用してAWSで依存するコンポーネントと一緒に単純なVPCを作成する方法を説明します。 VPCにパブリックサブネットを作成します。
前提条件
- AWSアカウント(お持ちでない場合は作成)
- VPCの基本的な理解
- Pythonの基本的な理解
- システムで利用可能なPython
何をするか
- Boto3をインストール
- 必要な方法を知っている
- PythonBoto3を使用してVPCを作成する
Boto3をインストール
PythonはデフォルトでUbuntu18.04サーバーに付属しているため、インストールする必要はありません。
システムのPythonバージョンを確認するには、次のコマンドを使用します。
どのpython
/ usr / bin / python --version
または
python --version
pipがなく、Ubuntu 18.04を使用している場合は、次のコマンドを実行して、最初にローカルリポジトリを更新します。
sudo apt update
pipをインストールするには、次のコマンドを使用します
sudo apt install python-pip
インストールされているPipのバージョンを確認するには、次のコマンドを実行します。
pip --version
pythonとpipを入手したら、Boto3をインストールできます。
Boto3のインストールは非常に簡単で簡単です。 Boto3をインストールするには、次のコマンドを使用します。
pip install boto3
Boto3がインストールされているかどうか、およびそのバージョンを確認するには、次のコマンドを実行します。
pip show boto3
必要なメソッドを理解する
VPCとその依存コンポーネントを作成するには、次の方法を使用します。
- create_vpc
- create_route_table
- create_internet_gateway
- create_subnet
- associate_with_subnet
次に、受け入れ可能なパラメーターのリストを含むメソッドを見てみましょう。すべてのパラメータを使用するわけではありませんが、必要に応じて試してみることができます。
create_vpcメソッドのリクエスト構文
response = client.create_vpc(
CidrBlock='string',
AmazonProvidedIpv6CidrBlock=True|False,
Ipv6Pool='string',
Ipv6CidrBlock='string',
DryRun=True|False,
InstanceTenancy='default'|'dedicated'|'host',
Ipv6CidrBlockNetworkBorderGroup='string'
) - CidrBlock: CIDR表記でのVPCのIPv4ネットワーク範囲。これは必須フィールドであり、これがないとVPCを作成できません。
create_route_tableメソッドのリクエスト構文
route_table = ec2.create_route_table(
DryRun=True|False,
VpcId='string'
) - VpcId: VPCのID。これは必須フィールドであり、指定された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
) - CidrBlock :CIDR表記でのサブネットのIPv4ネットワーク範囲。これは、VPCを細分化するために使用されます。
- VpcId: VPCのID。
associate_with_subnetメソッドのリクエスト構文
route_table_association = route_table.associate_with_subnet(
DryRun=True|False,
SubnetId='string',
GatewayId='string'
) - サブネットID: サブネットのID。
または - GatewayId: インターネットゲートウェイまたは仮想プライベートゲートウェイのID。
PythonBoto3を使用してVPCを作成する
VPCを作成するには、次のコードブロックを使用して「vpc.py」を作成します。
「aws_access_key_id_value」と「aws_secret_access_key_value」の値をそれぞれ独自のaccess_key_idとaccess_key_valueに変更してください。 「region_name」の値も変更します。
必要に応じて、「create_vpc」と「create_subnet」のCidrBlockの値を変更するか、そのままにしておくことができます。
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コンソールから作成されたかどうかを確認できます。
上のスクリーンショットでは、指定されたCIDRと名前のVPCが作成されていることがわかります。サブネット、インターネットゲートウェイ、ルートテーブルなどのコンポーネントを確認できます。
結論
この記事では、パブリックサブネットを使用してVPCを作成する方法を説明しました。 VPCにルートテーブル、インターネットゲートウェイ、サブネットを作成しました。インターネットゲートウェイへのパブリックルートを持つルートテーブルにサブネットを関連付ける方法を確認しました。これで、このコードをカスタマイズして、複数のサブネットを持つVPCを作成し、それらをルートテーブルに関連付けて、要件に応じてパブリックサブネットまたはプライベートサブネットを作成できます。プライベートサブネットを作成するには、NATゲートウェイを作成し、それをサブネットに関連付ける必要があります。この関連付けにより、インターネットへの発信接続でサブネットがプライベートになります。