My Note

自己理解のためのブログ

ore-awsというおれおれAWS-CLIツールをGoで作った

目的

AWSアカウント複数管理していると、個別にwebコンソールにログインするのが大変でwebコンソールでぽちぽちするのが手間だったり..インスタンスの起動とかAMI焼きとかちょっとしたオペレーションに時間がかかる...(´・ω・`) また、出力をテーブル形式で、自分が欲しい情報だけを出力するために独自のコマンドラインツールがあれば便利! そこで、Go勉強してるし、aws-sdk-goを使って独自のコマンドラインツールを作ってみました。

活用したもの

ツールを使うための準備

※ 実行環境に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にスターをつけていただければとてもうれしいですヽ(´▽`)ノ