「こと」っていうか覚えておくべきコマンド。
install
もろもろの操作に使うaws
コマンドをインストールする。
$ curl -O https://s3.amazonaws.com/aws-cli/awscli-bundle.zip
$ unzip awscli-bundle.zip
$ sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws
configure
aws
のサブコマンドconfigure
を使うと、id・secret・region等の設定が書き込める。
$ aws configure
AWS Access Key ID [********************]: XXXXXXXXXXXXXXXXXX
AWS Secret Access Key [********************]: XXXXXXXXXXXXXXXXXX
Default region name [None]: hogehogehoge
Default output format [None]:
または、今後設定ファイルを指定しながら叩くようにする。
実際、ひとりでいくつかのid・secretを取り回すケースはよくあるので、この叩き方のほうがよくあるみたい。
例えば以下。
$ AWS_CONFIG_FILE=aws.conf aws s3 ls
設定ファイルの中身はこんなかんじ。
[default]
aws_access_key_id=XXXXXXXXXXXXXXXXXX
aws_secret_access_key=XXXXXXXXXXXXXXXXXX
region=hogehogehoge
バケット・ファイルの一覧
S3でファイルを置く場所は、 バケットという単位で扱われている。
いまアクセスできるバケットを一覧するには以下。
$ aws s3 ls
2013-02-10 19:10:28 example.com
2013-01-02 20:38:30 test1.example.com
2013-02-10 12:10:40 assets.fnobi.com
このうちの、あるバケットの中身を参照するには以下。
$ aws s3 ls s3://example.com
ファイルの操作
ファイルをアップロードすると言うと、put
とかイメージしてしまうのだけれど、awsで使うのはcp
。
$ aws s3 cp hoge.jpg s3://example.com/images/
upload: ./hoge.jpg to s3://example.com/images/hoge.jpg
これでs3://example.com/hoge.txt
ができる。
ただし、このまんまで上げてしまうと、自分からしか読み込めないファイルになってしまう。(厳密に言うともうすこしややこしいけど)
のでので、これをそのままWeb公開したりする場合は、権限をきちんと設定してあげる必要がある。
具体的には、長いけど以下。
(http://acs.amazonaws.com/groups/global/AllUsers
は、「すべてのユーザー」ってのを示すnamespaceみたいなものらしい)
$ aws s3 cp hoge.jpg s3://example.com/images/ --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers