aws cliを使ってhugoをs3にアップロードする

Transmit4からaws cliにかえたのでそのときメモ。

あらかじめインストールしておくもの

aws cliをインストールする前にあらかじめ、pythonとpipが必要。

そもそもpythonが入っているのかを確認

$ which python
$

何も表示されなかったのでない。ということでpythonのインストール

$brew install python3

次にpipのインストール、homebrewのpython版みたいなやつ。

$ sudo easy_install pip
$ パスワードを聞かれるので入力

これで下準備は終了。





awscliのインストール

公式にやってみる

$ pip install awscli --upgrade --user

普通はこれで完了するらしいが、やっぱりエラーがでた。こういうことが多いからTransmitを使用してきましたが、今はそうも言ってられないのでエラーの確認。

Found existing installation: six 1.4.1
  DEPRECATION: Uninstalling a distutils installed project (six) has been deprecated and will be removed in a future version. This is due to the fact that uninstalling a distutils project will only partially uninstall the project.
  Uninstalling six-1.4.1:

Uninstalling six-1.4.1:と言われたので、アンイストールしようとしましたが、できなかったので、ググった結果。回避法を発見。

$ sudo -H pip install awscli --upgrade --ignore-installed six

できた。

あとは、細かい設定を終わらせる。

$ aws configure
AWS Access Key ID : awsのサイトで確認
AWS Secret Access Key : シークレットキーを忘れた場合は、新しく作るしかない
Default region name : ap-northeast-1 => tokyoのこと
Default output format [None]: text => hugoで使うだけなのでとりあえずtext





試しにhugoのpublicをアップロードしてみる。

まず、s3にアクセスできるか確認。

$ aws s3 ls
2017-07-22 16:56:44 bokunonikki.net

ちゃんとアクセスできて、バケットも確認できた。

publicフォルダに移動。

$ cd public

ローカルにあるpublicフォルダ内全てをアップロードするのでこうする。

public$ aws s3 sync . s3://bokunonikki.net <=ここにバケット名を入力

上記のようにいちいちpublicに移動するのは面倒なので、下のようにすることもできる。

$ aws s3 sync --delete ./public s3://bokunonikki.net <=ここにバケット名を入力

以上で終了。Transmitを使うより早かったが、やはりターミナルを扱うのは面倒なことが多い。公式通りやっていてもエラーがよくでる。

See Also