aws-cidr-finder adalah alat Python CLI dan perpustakaan yang menemukan blok CIDR yang tidak digunakan (baik IPv4 atau IPv6) dalam VPC AWS. Ini adalah alat yang sangat sederhana, tetapi dapat sangat membantu bagi pengguna yang mengelola banyak subnet di satu atau lebih VPC dan tidak ingin menghabiskan uang yang dibutuhkan untuk menggunakan solusi seperti AWS IPAM.
Paling termudah untuk melihat nilai alat ini melalui contoh. Bayangkan bahwa kita memiliki pengaturan berikut di AWS:
172.31.0.0/16 , dengan label Name Hello World172.31.0.0/20172.31.16.0/20172.31.32.0/20172.31.48.0/20172.31.64.0/20172.31.80.0/20myprofile aws-cidr-finder memungkinkan Anda untuk dengan cepat menghitung CIDR yang masih tersedia di VPC tanpa harus melakukan banyak matematika oktet yang menjengkelkan/membosankan. Jika kita mengeluarkan perintah ini:
aws-cidr-finder --profile myprofileKita harus melihat output ini:
Here are the available CIDR blocks in the 'Hello World' VPC (VPC CIDR block '172.31.0.0/16'):
CIDR IP Count
--------------- ----------
172.31.96.0/19 8192
172.31.128.0/17 32768
Total 40960
Anda harus melihat bahwa, secara default, aws-cidr-finder akan secara otomatis "menyederhanakan" CIDR dengan menggabungkan blok CIDR bebas yang berdekatan sehingga tabel yang dihasilkan menunjukkan ruang berdekatan maksimum per CIDR (dengan kata lain, tabel yang dihasilkan memiliki jumlah baris semudah yang mungkin). Inilah sebabnya mengapa hasil perintah hanya ditampilkan dua CIDR: A /19 dan A /17 .
Perhatikan bahwa CIDR pertama adalah
/19bukannya, misalnya,/18, karena/18CIDR akan secara matematis harus dimulai di alamat IP172.31.64.0, dan alamat IP itu sudah diambil oleh subnet!
Namun, kita dapat mengubah perilaku "penyederhanaan" ini dengan menentukan bendera --prefix CLI:
aws-cidr-finder --profile myprofile --prefix 20Sekarang, output yang diharapkan harus terlihat seperti ini:
Here are the available CIDR blocks in the 'Hello World' VPC (VPC CIDR block '172.31.0.0/16'):
CIDR IP Count
--------------- ----------
172.31.96.0/20 4096
172.31.112.0/20 4096
172.31.128.0/20 4096
172.31.144.0/20 4096
172.31.160.0/20 4096
172.31.176.0/20 4096
172.31.192.0/20 4096
172.31.208.0/20 4096
172.31.224.0/20 4096
172.31.240.0/20 4096
Total 40960
Dengan argumen --prefix , kami sekarang dapat meminta ruang jaringan kami yang tersedia untuk tingkat detail yang kami inginkan. Perhatikan bahwa jika kami menentukan --prefix dengan nilai lebih rendah dari awalan mana pun dalam daftar CIDR yang tersedia, CIDR tersebut akan dilewati. Misalnya, jika kita menjalankan yang berikut:
aws-cidr-finder --profile myprofile --prefix 18Kita harus melihat output ini:
Note: skipping CIDR '172.31.96.0/19' because its prefix (19) is numerically greater than the requested prefix (18)
Here are the available CIDR blocks in the 'Hello World' VPC (VPC CIDR block '172.31.0.0/16'):
CIDR IP Count
--------------- ----------
172.31.128.0/18 16384
172.31.192.0/18 16384
Total 32768
CIDR yang dilewati adalah 172.31.96.0/19 CIDR karena tidak mungkin untuk mengubah A /19 CIDR menjadi satu atau lebih /18 CIDR.
Jika Anda memiliki Python> = 3.10 dan <4.0 diinstal, aws-cidr-finder dapat diinstal dari PYPI menggunakan sesuatu seperti ini:
pip install aws-cidr-finder Semua yang perlu dikonfigurasi untuk menggunakan CLI ini adalah profil AWS CLI atau tombol. Yang pertama dapat ditentukan menggunakan argumen --profile pada CLI, sedangkan tombol harus ditentukan dalam variabel lingkungan. Jika keduanya tersedia secara bersamaan, aws-cidr-finder akan lebih suka profil.
Variabel lingkungan untuk pendekatan KeyPair adalah AWS_ACCESS_KEY_ID , AWS_SECRET_ACCESS_KEY , dan opsional AWS_SESSION_TOKEN (jika mengotentikasi dengan sesi). Ini adalah variabel lingkungan yang sama dengan yang digunakan Boto.
Anda juga harus memastikan bahwa profil/tombol yang Anda gunakan memiliki akses AWS IAM yang diperlukan untuk membuat panggilan API yang mendasarinya melalui BOTO. Berikut adalah dokumen kebijakan IAM minimal yang memenuhi persyaratan ini:
{
"Effect" : " Allow " ,
"Action" : [
" ec2:DescribeVpcs " ,
" ec2:DescribeSubnets "
],
"Resource" : " * "
}Baca lebih lanjut tentang tindakan yang ditunjukkan di atas di sini.
Lihat contoh di atas untuk demonstrasi terperinci dari antarmuka CLI dari alat ini. Anda juga dapat menggunakan aws-cidr-finder --help untuk melihat opsi baris perintah.
Pengaturan:
from aws_cidr_finder import JSONOutput , find_available_cidrs
# All arguments
output : JSONOutput = find_available_cidrs ( profile_name = "" , region = "" , ipv6 = False , desired_prefix = 20 )
# Minimal arguments (profile-based authentication)
output : JSONOutput = find_available_cidrs ( profile_name = "" )
# Minimal arguments (environment variable-based authentication)
output : JSONOutput = find_available_cidrs ()
# Other miscellaneous combinations
output : JSONOutput = find_available_cidrs ( profile_name = "" , ipv6 = True )
output : JSONOutput = find_available_cidrs ( profile_name = "" , desired_prefix = 16 )
output : JSONOutput = find_available_cidrs ( region = "" )
# ...and so onMengakses Data CIDR:
output : JSONOutput = find_available_cidrs (...) # See above
for message in output [ "messages" ]:
# Print the messages that would have been written to STDOUT when using the CLI
print ( message )
for cidr in output [ "cidrs_not_converted_to_prefix" ]:
# If aws-cidr-finder could not convert a given available CIDR block into one or more CIDR blocks
# with the requested desired_prefix, it will be returned in this list
# Note: this list is only populated if you passed desired_prefix to find_available_cidrs
print ( f"aws-cidr-finder did not convert the following CIDR block to the desired prefix: { cidr } " )
for vpc in output [ "data" ]:
# Print all the information that is available in the VPC dict
print ( f'VPC ID: { vpc [ "id" ] } ' )
print ( f'VPC Name: { vpc [ "name" ] } ' )
print ( f'VPC CIDR: { vpc [ "cidr" ] } ' )
for cidr in vpc [ "available_cidr_blocks" ]:
print ( f"Available CIDR block: { cidr } " )Lihat Kontribusi.MD untuk informasi yang berorientasi pengembang.