読者です 読者をやめる 読者になる 読者になる

tkuchikiの日記

Linux やプログラミングについて書きます。

AWS に SSL 証明書をアップロードしたりするコマンドを作りました

  • aws iam list-server-certificates
  • aws iam upload-server-certificate
  • aws iam update-server-certificate
  • aws iam delete-server-certificate

相当の処理を行う、

https://github.com/tkuchiki/iam-server-cert を作りました。

実行例は、github の README を参照してください。

Installation

https://github.com/tkuchiki/iam-server-cert/releases からお使いの環境用のバイナリを取得して、
解凍してください。

Usage

以下のサブコマンドで、各種操作を行えます。

  • list
  • upload
  • update
  • delete

オプション名は、AWS CLI と合わせてありますので、各オプションの詳細は以下を御覧ください。

http://docs.aws.amazon.com/cli/latest/reference/iam/index.html#cli-aws-iam

access key, secret については、

  • --access-key--access-secret で設定
  • 環境変数 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY で設定
  • --credentials--profile で credentials ファイルと profile を指定
  • 何も指定なければ、~/.aws/credentials の default profile を使用

となっています。

AWS CLI との違い

基本的に AWS CLI と挙動は同じですが、
主に 2 点違いがあります。

Delete

一覧を出力するようにしており、
予め証明書の名前がわからなくても大丈夫なようにしました。
実行例は、以下のとおりです。

$ ./iam-server-cert delete
Choose the server certificate you want to delete. (cert1/cert2): cert1[Enter]
Deleted cert1

証明書の名前がわかるときは、--server-certificate-name を指定すれば削除できます。

time offset の変更

AWS CLI を叩くと、証明書の有効期限は UTC で出力されます。
offset を指定したら、JST などの時間で出力できたら便利かなと思い、
--time-offset を用意しました。
以下のように、--time-offset 9 をつけて実行すると、UTC + 09:00 して出力します。

$ ./iam-server-cert list
+------------------------------------------------------------------+-----------+-----------------------+-----------------------+---------------------------+---------------------------+
|                               ARN                                |   PATH    |  SERVERCERTIFICATEID  | SERVERCERTIFICATENAME |        UPLOADDATE         |        EXPIRATION         |
+------------------------------------------------------------------+-----------+-----------------------+-----------------------+---------------------------+---------------------------+
| arn:aws:iam::xxxxxxxxxxxx:server-certificate/cert1               | /         | XXXXXXXXXXXXXXXXXXXXX | cert1                 | 2015-11-09 08:03:39 +0000 | 2016-10-15 02:18:29 +0000 |
| arn:aws:iam::xxxxxxxxxxxx:server-certificate/foo/bar/cert2       | /foo/bar/ | XXXXXXXXXXXXXXXXXXXXX | cert2                 | 2015-11-15 03:05:50 +0000 | 2016-10-15 02:18:29 +0000 |
+------------------------------------------------------------------+-----------+-----------------------+-----------------------+---------------------------+---------------------------+

$ ./iam-server-cert list --time-offset 9
+------------------------------------------------------------------+-----------+-----------------------+-----------------------+---------------------------+---------------------------+
|                               ARN                                |   PATH    |  SERVERCERTIFICATEID  | SERVERCERTIFICATENAME |        UPLOADDATE         |        EXPIRATION         |
+------------------------------------------------------------------+-----------+-----------------------+-----------------------+---------------------------+---------------------------+
| arn:aws:iam::xxxxxxxxxxxx:server-certificate/cert1               | /         | XXXXXXXXXXXXXXXXXXXXX | cert1                 | 2015-11-09 17:03:39 +0900 | 2016-10-15 11:18:29 +0900 |
| arn:aws:iam::xxxxxxxxxxxx:server-certificate/foo/bar/cert2       | /foo/bar/ | XXXXXXXXXXXXXXXXXXXXX | cert2                 | 2015-11-15 12:05:50 +0900 | 2016-10-15 11:18:29 +0900 |
+------------------------------------------------------------------+-----------+-----------------------+-----------------------+---------------------------+---------------------------+