ore-awsというおれおれAWS-CLIツールをGoで作った
目的
AWSアカウント複数管理していると、個別にwebコンソールにログインするのが大変でwebコンソールでぽちぽちするのが手間だったり..インスタンスの起動とかAMI焼きとかちょっとしたオペレーションに時間がかかる...(´・ω・`) また、出力をテーブル形式で、自分が欲しい情報だけを出力するために独自のコマンドラインツールがあれば便利! そこで、Go勉強してるし、aws-sdk-goを使って独自のコマンドラインツールを作ってみました。
- main以外のソースコードはこちらです。
$ go get github.com/yhidetoshi/clitoolgoaws
- https://github.com/yhidetoshi/clitoolgoaws
活用したもの
ツールを使うための準備
- go buildでmain.goをクロスコンパイルする
- /usr/local/bin等の配置するか、ホームディレクトリに配置してパスを通す
- macOSとLinux(amd64)とWindows用にクロスコンパイルしたバイナリを用意しています
※ 実行環境にaws-cliで使うcredentialを配置している必要があります。
使い方(コマンドオプション)
EC2
■ 一覧 > $ ore-aws -resource=ec2 -profile=<PROFILE> ■ 起動 > $ ore-aws -resource=ec2 -start -instances=<INSTANCENAME> or <INSTANCEID> -profile=<PROFILE> ■ 停止 > $ ore-aws -resource=ec2 -stop -instances=<INSTANCENAME> or <INSTANCEID> -profile=<PROFILE> ■ 削除 > $ ore-aws -resource=ec2 -terminate -instances=<INSTANCENAME> or <INSTANCEID> -profile=<PROFILE> ※ インスタンスを 複数同時に操作するときは `,` で区切り複数指定する ■ AMI焼き > $ ore-aws -resource=ec2 -ami -aminame=<AMINAME> -instances=<INSTANCENAME> or <INSTANCEID> -profile=<PROFILE> ■ AMI情報の一覧を取得 > $ ore-aws -resource=ec2 -amilist -profile=<PROFILE> ■ AMIの削除(解除) > $ ore-aws -resource=ec2 -deregister -amiid=<ami-id> -profile=<PROFILE> ■ ElasticIPの一覧を取得 > $ ore-aws -resource=ec2 -eiplist -profile=<PROFILE> ■ ElasticIPのリリース > $ ore-aws -resource=ec2 -deleteeip -allocationid=<ALLOCATIONID> -profile=<PROFILE> ■ SecurityGroupの一覧を取得 > $ ore-aws -resource=ec2 -sglist -profile=<PROFILE> ■ SecurityGroupのルール確認(output:json) > $ ore-aws -resource=ec2 -show -sgid=<GROUPID> -profile=<PROFILE> ■ AutoScalingグループ一覧の情報を出力(コンソール画面相当) > $ ore-aws -resource=as -profile=<PROFILE> ■ AutoScalingグループのインスタンスの`最大`数を変更 > $ ore-aws -resource=as -asg=<GROUP名> -max -num=<NUM> -profile=<PROFILE> ■ AutoScalingグループのインスタンスの`最小`数を変更 > $ ore-aws -resource=as -asg=<GROUP名> -min -num=<NUM> -profile=<PROFILE> ■ AutoScalingグループのインスタンスの`希望`数を変更 > $ ore-aws -resource=as -asg=<GROUP名> -desire -num=<NUM> -profile=<PROFILE>
RDS
■ 一覧 > $ ore-aws -resource=rds -profile=<PROFILE> ■ 起動 > $ ore-aws -resource=rds -start -instances=<INSTANCENAME> or <INSTANCEID> -profile=<PROFILE> ■ 停止 > $ ore-aws -resource=rds -stop -instances=<INSTANCENAME> or <INSTANCEID> -profile=<PROFILE>
ELB
■ 一覧 > $ ore-aws -resource=elb -profile=<PROFILE> ■ ELBのバックエンドインスタンスを取得 > $ ore-aws -resource=elb -show -elbname=<ELBNAME> -profile=<PROFILE> ■ ELBにバックエンドインスタンスを登録 > $ ore-aws -resource=elb -register -elbname=<ELBNAME> -instances=<INSTANCEID> -profile=<PROFILE> ■ ELBにバックエンドインスタンスを解除 > $ ore-aws -resource=elb -deregister -elbname=<ELBNAME> -instances=<INSTANCEID> -profile=<PROFILE>
S3
■ バケット一覧 > $ ore-aws -resource=s3 -profile=<PROFILE> ■ バケットのオブジェクト一覧を取得 > $ ore-aws -resource=s3 -show -bucket=<BUCKETNAME> -profile=<PROFILE> ■ バケットのサイズ取得 > $ ore-aws -resource=s3 -size -bucket=<BUCKETNAME> -profile=<PROFILE> ■ バケットの削除(条件: bucket is empty) > $ ore-aws -resource=s3 -deletebucket -bucket=<BUCKETNAME> -profile=<PROFILE> ■ オブジェクト削除 > $ ore-aws -resource=s3 -deleteobject -bucket=<BUCKETNAME> -object=<FILENAME> ■ バケット内のオブジェクトを全て削除 > $ ore-aws -resource=s3 -deleteallobject -bucket=<BUCKETNAME> -profile=<PROFILE> ■ Tokyoリージョン内の全バケットのACLがPublic or Privateかを取得 > $ ore-aws -resource=s3 -checkacl -profile=<PROFILE> ■ Tokyoリージョン内の全バケットサイズを取得 > $ ore-aws -resource=s3 -sizeall -profile=<PROFILE>
Route53
■ Zone一覧 > $ ore-aws -resource=route53 -profile=<PROFILE> ■ Zoneid指定のレコード情報取得 > $ ore-aws -resource=route53 -show -zoneid=<ZONEID> -profile=<PROFILE>
Cloudwatch
■ Billing > $ ore-aws -resource=cloudwatch -billing -profile=<PROFILE> ■ Alarm > $ ore-aws -resource=cloudwatch -profile=<PROFILE>
IAM
■ ユーザ一覧 > $ ore-aws -resource=iam-user -profile=<PROFILE> ■ グループ一覧 > $ ore-aws -resource=iam-group -profile=<PROFILE>
おわりに
Goとaws-sdkを活用してawsコマンドを作成しました。 作成した当時はGoを勉強しながら作成しており、コードは決してきれいではないです(汗 少しでもいいなって思ってもらえたらgithubにスターをつけていただければとてもうれしいですヽ(´▽`)ノ