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ゲートウェイを作成し、それをサブネットに関連付ける必要があります。この関連付けにより、インターネットへの発信接続でサブネットがプライベートになります。