shou.com
JP / EN

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

Fri Sep 29, 2017
Sat Apr 20, 2024

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

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

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

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

1
$ which python

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

1
$ brew install python3

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

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

これで下準備は終了。

awscliのインストール

公式通りにやってみる

1
$ pip install awscli --upgrade --user

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

1
2
3
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:と言われたので、アンイストールしようとしましたが、できなかったので、ググった結果。回避法を発見。

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

できた。

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

1
2
3
4
5
$ 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にアクセスできるか確認。

1
2
$ aws s3 ls
2017-07-22 16:56:44 shou2017.com

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

publicフォルダに移動

1
$ cd public

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

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

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

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

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

See Also