課題
- AWSアカウント複数管理していると、個別にwebコンソールにログインするのが大変
- webコンソールでぽちぽちするのが手間
- インスタンスの起動とかAMI焼きとかちょっとしたオペレーションに時間かかる...(´・ω・`)
そこで、やったこと
Go勉強してるし、aws-sdk-goを使って独自のコマンドラインツールを作ろう(^▽^)!
-
コマンド作成は Flagパッケージを利用しています。
-
main以外のソースコードはこちらです。
$ go get github.com/yhidetoshi/clitoolgoaws
- https://github.com/yhidetoshi/clitoolgoaws
-
準備
- 実行環境にaws-cliを使える必要があります
- go buildでmain.goをクロスコンパイルする
- /usr/local/bin等の場所に保存する
- 以下は /usr/local/binに
ore-aws
という名前で配置もしくはパスを通したときの例
- 以下は /usr/local/binに
- macOSとLinux(amd64)とWindows用にクロスコンパイルしたバイナリはこちらです
使い方(コマンドオプション)
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>
- 参考
-
GoDoc
: https://godoc.org/github.com/aws/aws-sdk-go/aws -
aws-sdk-go APIリファレンス
: https://docs.aws.amazon.com/sdk-for-go/api/
-