aws memo

AWS関連の備忘録 (※本ブログの内容は個人的見解であり、所属組織及び企業の意見を代弁するものではありません。1年以上古いエントリは疑ってかかってください)

S3: Amazon Linuxにs3cmdをインストールしてコマンドラインでS3を操作する

S3は、まずは Management ConsoleやCloud Berry ExplorerCyberDuckといったGUIツールから使うか、 AWS SDK for PHP, Java, Ruby, .NET といったAPI経由で使うことが多い。(参考:S3の関連ツール・ライブラリ等 - aws memo )

バックアップ処理など、cronなどでスクリプトから操作したい場合は、s3cmdが便利。

インストール

Amazon Linuxでデフォルト無効になっている epelリポジトリからインストール

$ sudo yum -y --enablerepo epel install s3cmd

もしくは、ここからyumのリポジトリファイルを取得して、/etc/yum.conf.d/にコピーした後にyum installする。

$ wget http://s3tools.org/repo/RHEL_6/s3tools.repo ~/
$ sudo cp s3tools.repo /etc/yum.conf.d/
$ sudo yum -y install s3cmd

設定

コンフィグウィザードを起動し ~/.s3cfg を作成。ウィザードで最低限必要なのは、Access KeyとSecret Key。残りはデフォルトのままリターンでOK。あとから .s3cfgを編集可能。

$ s3cmd --configure
Access Key: xxxx
Secret Key: xxxx

実行例

バケツ一覧

$ s3cmd ls

リージョンを指定してバケツ作成

$ s3cmd mb --bucket-location=ap-northeast-1 s3://<bucket_name> 

バケツにアップロード

$ s3cmd put -r /path/to/files s3://<bucket_name>
# --acl-public オプションをつけると、アップロードと同時にweb公開
$ s3cmd put --acl-public -r /path/to/files s3://<bucket_name>

 バケツ内オブジェクトのパーミッションを変更しWeb公開

$ s3cmd setacl  -r --acl-public s3://<bucket_name>

バケツの使用量確認

$ s3cmd du s3://<bucket_name>

バケツへの差分同期

$ s3cmd sync /path/to/source/dir s3://<bucket_name>/prefix
$ s3cmd sync s3://<bucket_name>/prefix /path/to/source/dir 

バケツ間のコピー

$ s3cmd cp  s3://<source_bucket_name>/object s3://<dist_bucket_name>/

Amazon Linux用の Zabbix RPMを作る

Amazon Linuxで Zabbix 2.0系を動かすには、現状はソースからコンパイルが必要。@kodai74 さんが公開している RHEL/CentOS用RPMだと、libmysqlclient.soの依存関係で怒られる(Amazon Linuxだと新しすぎるorz)。

てことで、RPMを自前で作っておいて、ばら撒く作戦。

参考にしたのはこのお二人

TNKの気になること: Zabbix 2.0をAmazon Linux上で動かしてみよう

zabbix2.0をAmazonlinuxにインストールしたった。(rpm) - zabbiたんAMIたん

==以下、上記ブログからコマンドラインだけ抜粋==

$ cd
$ sudo yum install git
$ git clone https://github.com/atanaka7/zabbix-jp-amzn1.git
$ sudo yum -y install rpm-build
$ sudo yum -y groupinstall 'Development tools'
$ sudo yum -y install mysql-devel net-snmp-devel openldap-devel sqlite-devel unixODBC-devel libssh2-devel java-devel curl-devel OpenIPMI-devel postgresql-devel
$ sudo yum -y install php-cli php-mbstring php-common php-mysql php-xml php-pdo php-gd php-bcmath php
$ wget http://www.zabbix.jp/binaries/relatedpkgs/rhel6/x86_64/fping-2.4b2-16.el6.JP.x86_64.rpm
$ wget http://www.zabbix.jp/binaries/relatedpkgs/rhel6/x86_64/iksemel-1.4-2.el6.JP.x86_64.rpm
$ wget http://www.zabbix.jp/binaries/relatedpkgs/rhel6/x86_64/iksemel-devel-1.4-2.el6.JP.x86_64.rpm
$ sudo yum -y localinstall *.rpm
$ mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
$ cat <<EOS > ~/.rpmmacros
%_topdir /home/ec2-user/rpmbuild
%_builddir %{_topdir}/BUILD
%_rpmdir %{_topdir}/RPMS
%_sourcedir %{_topdir}/SOURCES
%_specdir %{_topdir}/SPECS
%_srcrpmdir %{_topdir}/SRPMS
EOS
$ rpmbuild --rebuild ~/zabbix-jp-amzn1/zabbix-2.0.0-1.amzn1.src.rpm
$ mkdir ~/zabbix-rpm
$ cp ~/rpmbuild/RPMS/noarch/*.rpm ~/zabbix-rpm
$ cp ~/rpmbuild/RPMS/x86_64/*.rpm ~/zabbix-rpm