ハンズオン教材を使って、S3にコンテナデータを保存をしたので備忘録として残します。
インストール
AWS CLI をインストールします。
pip install --upgrade --user awscli
アクセスキーID とシークレットアクセスキーを使用します。
us-east-1デフォルトのリージョンとして使用します。
出力は今回はjsonとします。
aws configure
AWS Access Key ID [None]: xxxx
AWS Secret Access Key [None]: xxxx
Default region name [None]: us-east-1
Default output format [None]: json
資格情報をユーザーにrootをコピーします。
sudo cp -r ~/.aws /root
s3fs-fuseインストールします。
sudo yum install s3fs-fuse -y
バケット設定
サーバーにマウントポイントを作成します。
sudo mkdir /mnt/widget-factory
S3 バケットをマウントします。
export BUCKET=xxxx
AWSの請求額を抑えるためS3への余計な呼び出し減らすには、use_cacheマウント時にオプションを設定して、ローカルファイルシステムのキャッシュを有効にします。
sudo s3fs $BUCKET /mnt/widget-factory -o allow_other -o default_acl=public-read -o use_cache=/tmp/s3fs
ll /mnt/widget-factory
total 0
ll
total 0
drwxrwxr-x. 4 xxxx xxxx 29 Oct 8 23:42 widget-factory-inc
ウェブサイトのファイルをバケットにコピーします。
cp -r ~/widget-factory-inc/web/* /mnt/widget-factory
ファイルがフォルダーにあることを確認します。
ll /mnt/widget-factory
total 13
drwxrwxr-x. 1 cloud_user cloud_user 0 Oct 9 02:09 img
-rw-rw-r--. 1 cloud_user cloud_user 3059 Oct 9 02:09 index.html
-rw-rw-r--. 1 cloud_user cloud_user 2910 Oct 9 02:09 quote.html
-rw-rw-r--. 1 cloud_user cloud_user 2611 Oct 9 02:09 support.html
-rw-rw-r--. 1 cloud_user cloud_user 2645 Oct 9 02:09 widgets.html
ファイルがS3バケットにあることを確認します。
aws s3 ls s3://$BUCKET
PRE img/
2022-10-09 02:09:31 3059 index.html
2022-10-09 02:09:32 2910 quote.html
2022-10-09 02:09:32 2611 support.html
2022-10-09 02:09:32 2645 widgets.html
DockerコンテナでS3バケットファイルの設定
Webサイトを提供するコンテナを実行します。
バケットをマウントし、WebサーバーのHTTPポートを公開します。
docker run -d --name web1 -p 80:80 --mount type=bind,source=/mnt/widget-factory,target=/usr/local/apache/htdocs,readonly httpd:2.4
ファイルに先ほどの設定が反映されているか確認します。
ll /tmp/s3fs/
total 0
drwxr-xr-x. 3 root root 93 Oct 9 02:09 widgetfactory-xxxx
ll /tmp/s3fs/widgetfactory-xxxx
total 16
drwxr-xr-x. 2 root root 76 Oct 9 02:09 img
-rw-------. 1 root root 3059 Oct 9 02:09 index.html
-rw-------. 1 root root 2910 Oct 9 02:09 quote.html
-rw-------. 1 root root 2611 Oct 9 02:09 support.html
-rw-------. 1 root root 2645 Oct 9 02:09 widgets.html
ブラウザでパブリックIPを入力し、Webページを表示します。
既存のページのコピーを作成して、バケット内にnewPage.html
という新しいページを作成します。
cd /mnt/widget-factory/
cp index.html newPage.html
ブラウザーで下記の新しい Web ページを表示します。
http://<パブリックIP>/newPage.html。
新しい Web ページが S3 バケットにあることを確認します。
aws s3 ls $BUCKET
PRE img/
2022-10-09 02:09:31 3059 index.html
2022-10-09 02:23:05 3059 newPage.html
2022-10-09 02:09:32 2910 quote.html
2022-10-09 02:09:32 2611 support.html
2022-10-09 02:09:32 2645 widgets.html