AWS-CLI |
Kalo harga lelang melebihi harga yang kita tawarkan (baca : Bid), maka kita punya waktu 2 menit untuk menyelamatkan data atau informasi berharga dari server yang bakalan di ambil alih sama customer amazon yang menggunakan sistem on-demand.
Nah, Kalo tiap hari kudu masuk dashboard buat mantau resource yang ada, kadang cukup makan waktu kalo koneksi kurang memadahi. Apalagi web AWS terbilang web yang menurut saya cukup berat . Untuk masuk ke dashboard AWS, setidaknya kita perlu mendownload resource web sekitar 1,5 MB. (Klik pada gambar untuk memperbesar gambar)
AWS Dashoard |
Belum lagi untuk EC2 dashboard. Resource yang perlu di download sekitar 4,25MB.
EC2 Dashboard |
Solusi yang biasanya saya pakai untuk memantau resource AWS agar lebih cepat adalah dengan menggunakan AWS Command Line Interface (AWS-CLI) yang dieksekusi dari server yang terinstall AWS-CLI. Karena login ke dalam server tidak perlu koneksi secepat saat kita masuk ke dashboard AWS. Berikut adalah dokumentasi perintah AWS-CLI yang biasa/sering saya gunakan untuk memantau resource yang ada :
Amazon Machine Image (AMI)
AWS_ACCOUNT_NUMBER=id_account_aws
aws ec2 describe-images --owners $AWS_ACCOUNT_NUMBER --query 'Images[*].[Name,CreationDate]' --output table
Untuk mensorting berdasarkan tanggal dibuatnya AMI secara descending :aws ec2 describe-images --owners $AWS_ACCOUNT_NUMBER --query "reverse(sort_by(Images,&CreationDate)[*].[Name,CreationDate])" --output table
Simple Storage Service (S3)
Menghapus bucket beserta isinya
aws s3 rb s3://nama-bucket –-force
Menyalin folder dan isinya ke s3 bucket aws s3 cp MyFolder s3://nama-bucket --recursive
Sinkronisasi isi sebuah folder ke folder lain (abaikan source region jika kedua bucket berada di region yang samaaws s3 sync s3://bucket1/folder1/ s3://bucket1/folder2 --source-region us-west-1 --region us-west-2
Daftar Bucket pada layanan S3 bucket dengan tenant tertentuaws s3api list-buckets --query "Buckets[*].[Name,CreationDate]" --output table
Untuk mensorting berdasarkan tanggal dibuatnya Bucket secara descending : aws s3api list-buckets --query "reverse(sort_by(Buckets,&CreationDate)[*].[Name,CreationDate])" --output table
Menghitung usage bucket, dan jumlah object pada bucket
BUCKET_NAME=nama_bucket
aws s3api list-objects --bucket $BUCKET_NAME --query "[sum(Contents[].Size), length(Contents[])]" --output table
Menghitung besar file/folder pada bucket dan jumlah object di dalamnya BUCKET_NAME=nama_bucket
NAMA_FOLDER=nama_folder
aws s3api list-objects --bucket $BUCKET_NAME --prefix "$NAMA_FOLDER" --query "[sum(Contents[].Size), length(Con
Mendapatkan lokasi region bucketaws s3api get-bucket-location --bucket [nama_bucket]
Elastic Compute Cloud (EC2)
Menampilkan daftar metadata yang bisa kita dapatkan dari dalam instance yang sedang kita remote
curl http://169.254.169.254/latest/meta-data/
dari url diatas, kita tinggal menambahkan metadata yang kita inginkancurl http://169.254.169.254/latest/meta-data/[metadata]
misal kita ingin mendapatkan id instance yang sedang kita remote, maka menjadicurl http://169.254.169.254/latest/meta-data/instance-id
atau mendapatkan public ip address, maka menjadicurl http://169.254.169.254/latest/meta-data/public-ipv4
Menampilkan metadata instance meliputi id instance, id AMI, tipe instance, status instance, nama instance, ip private 1, ip private 2 dan EIP/public ip instance.
aws ec2 describe-instances --query 'Reservations[*].Instances[*].[InstanceId,ImageId,InstanceType,State.Name,Tags[?Key==`Name`].Value|[0],PrivateIpAddress,NetworkInterfaces[*].PrivateIpAddress|[1],PublicIpAddress,Placement.AvailabilityZone]' --output table
Menambah IP private / IP public tertentu kedalam security group untuk SEMUA protokol:
IP=[IP_YG_DITAMBAHKAN]
SUBNET=[SUBNET_JARINGAN]
GROUP_NAME=[NAMA_SECURITY_GROUP]
SECURITY_GROUP_ID=[ID_SECURITY_GROUP]
PROTOCOL=[TCP_UDP_ICMP]
aws ec2 authorize-security-group-ingress --group-name $GROUP_NAME --protocol all --cidr $IP/$SUBNET
Cek event pada instance, contoh : jika instance akan di terminate/retired oleh aws
aws ec2 describe-instance-status --instance-ids [id_instance]
Fitur Baru
Sekarang kita dapat menambah deskripsi pada security group rule, info resminya bisa dilihat disini.
Untuk menambah deskripsi, kita perlu menambahkan parameter berbentuk JSON. berikut adalah contoh parameter JSON yang bisa kita gunakan :
aws ec2 authorize-security-group-ingress --group-id $SECURITY_GROUP_ID --ip-permissions '[{"IpProtocol": "$PROTOCOL", "FromPort": 0, "ToPort": 65535, "IpRanges": [{"CidrIp": "$PUB_IP/$SUBNET", "Description": "deskripsi disini"}]}]'
contoh selengkapnya bisa dilihat langsung dari dokumentasi AWS CLI bagian authorize security group
Namun, ada kekurangan dari dokumentasi pada yang saya sebutkan diatas. Saya tidak menemukan dokumentasi tentang bagaimana menambahkan semua protocol seperti cara lama yang sudah saya tulis sebelumnya. Iseng-iseng ngintip output JSON dari AWS CLI saya menemukan cara menambahkan IP ke security group dengan ijin akses penuh. Berikut adalah perintahnya :
aws ec2 authorize-security-group-ingress --group-id $SECURITY_GROUP_ID --ip-permissions '[{"IpProtocol": "-1", "IpRanges": [{"CidrIp": "$IP/SUBNET", "Description": "deskripsi d"}]}]'
Menghapus IP private / IP public tertentu dari security group :IP=[IP_YG_DIHAPUS]
SUBNET=[SUBNET_JARINGAN]
GROUP_NAME=[NAMA_SECURITY_GROUP]
aws ec2 revoke-security-group-ingress --group-name $GROUP_NAME --protocol all --cidr $IP/$SUBNET
Semoga bermanfaat. :)
Referensi :
No comments:
Post a Comment