LoginSignup
3
2

More than 5 years have passed since last update.

Go言語を勉強しながらおれおれAWS-CLI ( ore-aws ) ツールを作った

Last updated at Posted at 2018-09-29

課題

  • AWSアカウント複数管理していると、個別にwebコンソールにログインするのが大変
  • webコンソールでぽちぽちするのが手間
  • インスタンスの起動とかAMI焼きとかちょっとしたオペレーションに時間かかる...(´・ω・`)

そこで、やったこと

Go勉強してるし、aws-sdk-goを使って独自のコマンドラインツールを作ろう(^▽^)!

  • コマンド作成は Flagパッケージを利用しています。

  • main以外のソースコードはこちらです。

  • 準備

    • 実行環境にaws-cliを使える必要があります
    • go buildでmain.goをクロスコンパイルする
    • /usr/local/bin等の場所に保存する
      • 以下は /usr/local/binに ore-aws という名前で配置もしくはパスを通したときの例
    • 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>
3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2