AWS CLIを使ってJetson NanoとS3のデータ同期を試してみる
概要
AWS CLIを使ってJetson NanoとS3のデータ同期をテストした時のログを残しておきます。
テストの結果、JetsonとS3間でもaws s3 sync
を使うと、差分のみのデータ同期、削除は同期しないといったデータ同期が可能であることが確認できました。
プログラムを作らなくても手軽にデータ同期の仕組みを作れそうです。
AWS CLIは、Linux ARMもサポートしており、Jetsonでも動作するようです。
AWS CLI v2 now available for Linux ARM
https://aws.amazon.com/jp/blogs/developer/aws-cli-v2-now-available-for-linux-arm/
環境
Jetson Nano
Jetpack 4.4.1
AWS CLIのバージョンは以下
$ aws --version
aws-cli/2.1.21 Python/3.7.3 Linux/4.9.140-tegra exe/aarch64.ubuntu.18 prompt/off
AWS CLIのインストール
以下の手順に従ってインストールします。
https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2-linux.html#ARM
curlがなかったので入れておきます。
sudo apt install curl -y
手順にある以下のコマンドでインストールします。
curl "https://awscli.amazonaws.com/awscli-exe-linux-aarch64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
導入されたことを確認します。
$ /usr/local/bin/aws --version
aws-cli/2.1.21 Python/3.7.3 Linux/4.9.140-tegra exe/aarch64.ubuntu.18 prompt/off
Access Key、Secret Access等の接続の設定を行います。
$ aws configure
AWS Access Key ID [None]: xxxxxxx
AWS Secret Access Key [None]: xxxxxx
Default region name [None]: ap-northeast-1
Default output format [None]: json
JetsonとS3のデータ同期をテスト
ディレクトリを作成して、ファイルを5つ作成します。
aws s3 sync
でデータ同期を行い、ファイルが5つアップロードされることを確認します。
nvidia@nvidia-desktop:~/work$ aws s3 ls tsota-jetson --recursive
nvidia@nvidia-desktop:~/work$ mkdir test
nvidia@nvidia-desktop:~/work$ for i in `seq 1 5`; do touch test/${i}.txt; done
nvidia@nvidia-desktop:~/work$ ls -l test
total 0
-rw-rw-r-- 1 nvidia nvidia 0 1月 24 11:15 1.txt
-rw-rw-r-- 1 nvidia nvidia 0 1月 24 11:15 2.txt
-rw-rw-r-- 1 nvidia nvidia 0 1月 24 11:15 3.txt
-rw-rw-r-- 1 nvidia nvidia 0 1月 24 11:15 4.txt
-rw-rw-r-- 1 nvidia nvidia 0 1月 24 11:15 5.txt
nvidia@nvidia-desktop:~/work$ aws s3 sync test s3://tsota-jetson/test/
upload: test/2.txt to s3://tsota-jetson/test/2.txt
upload: test/5.txt to s3://tsota-jetson/test/5.txt
upload: test/3.txt to s3://tsota-jetson/test/3.txt
upload: test/4.txt to s3://tsota-jetson/test/4.txt
upload: test/1.txt to s3://tsota-jetson/test/1.txt
nvidia@nvidia-desktop:~/work$ aws s3 ls tsota-jetson --recursive
2021-01-24 11:16:19 0 test/1.txt
2021-01-24 11:16:19 0 test/2.txt
2021-01-24 11:16:19 0 test/3.txt
2021-01-24 11:16:19 0 test/4.txt
2021-01-24 11:16:19 0 test/5.txt
追加データで5つのデータを作成します。
aws s3 sync
でデータ同期を実施して、差分の5ファイルがアップロードされることを確認します。
nvidia@nvidia-desktop:~/work$ for i in `seq 6 10`; do touch test/${i}.txt; done
nvidia@nvidia-desktop:~/work$ ls -l test
total 0
-rw-rw-r-- 1 nvidia nvidia 0 1月 24 11:16 10.txt
-rw-rw-r-- 1 nvidia nvidia 0 1月 24 11:15 1.txt
-rw-rw-r-- 1 nvidia nvidia 0 1月 24 11:15 2.txt
-rw-rw-r-- 1 nvidia nvidia 0 1月 24 11:15 3.txt
-rw-rw-r-- 1 nvidia nvidia 0 1月 24 11:15 4.txt
-rw-rw-r-- 1 nvidia nvidia 0 1月 24 11:15 5.txt
-rw-rw-r-- 1 nvidia nvidia 0 1月 24 11:16 6.txt
-rw-rw-r-- 1 nvidia nvidia 0 1月 24 11:16 7.txt
-rw-rw-r-- 1 nvidia nvidia 0 1月 24 11:16 8.txt
-rw-rw-r-- 1 nvidia nvidia 0 1月 24 11:16 9.txt
nvidia@nvidia-desktop:~/work$ aws s3 sync test s3://tsota-jetson/test/
upload: test/7.txt to s3://tsota-jetson/test/7.txt
upload: test/10.txt to s3://tsota-jetson/test/10.txt
upload: test/9.txt to s3://tsota-jetson/test/9.txt
upload: test/6.txt to s3://tsota-jetson/test/6.txt
upload: test/8.txt to s3://tsota-jetson/test/8.txt
既存ファイルを更新して同期されることを確認します。
1.txtの内容を更新して、aws s3 sync
でS3のバケットが更新されることを確認します。
nvidia@nvidia-desktop:~/work$ echo "abcdef" > test/1.txt
nvidia@nvidia-desktop:~/work$ ls -l test
total 4
-rw-rw-r-- 1 nvidia nvidia 0 1月 24 11:16 10.txt
-rw-rw-r-- 1 nvidia nvidia 7 1月 24 11:17 1.txt
-rw-rw-r-- 1 nvidia nvidia 0 1月 24 11:15 2.txt
-rw-rw-r-- 1 nvidia nvidia 0 1月 24 11:15 3.txt
-rw-rw-r-- 1 nvidia nvidia 0 1月 24 11:15 4.txt
-rw-rw-r-- 1 nvidia nvidia 0 1月 24 11:15 5.txt
-rw-rw-r-- 1 nvidia nvidia 0 1月 24 11:16 6.txt
-rw-rw-r-- 1 nvidia nvidia 0 1月 24 11:16 7.txt
-rw-rw-r-- 1 nvidia nvidia 0 1月 24 11:16 8.txt
-rw-rw-r-- 1 nvidia nvidia 0 1月 24 11:16 9.txt
nvidia@nvidia-desktop:~/work$ aws s3 sync test s3://tsota-jetson/test/
upload: test/1.txt to s3://tsota-jetson/test/1.txt
nvidia@nvidia-desktop:~/work$ aws s3 ls tsota-jetson --recursive
2021-01-24 11:17:48 7 test/1.txt
2021-01-24 11:16:54 0 test/10.txt
2021-01-24 11:16:19 0 test/2.txt
2021-01-24 11:16:19 0 test/3.txt
2021-01-24 11:16:19 0 test/4.txt
2021-01-24 11:16:19 0 test/5.txt
2021-01-24 11:16:54 0 test/6.txt
2021-01-24 11:16:54 0 test/7.txt
2021-01-24 11:16:54 0 test/8.txt
2021-01-24 11:16:54 0 test/9.txt
削除をテストしてみます。
S3への削除の同期は、--deleteオプションを指定する必要があります。
最初は--deleteオプションなしで実行して、削除が同期されないことを確認します。
次に--deleteオプションをつけて、削除が同期されることを確認します。
nvidia@nvidia-desktop:~/work$ rm test/*.txt
nvidia@nvidia-desktop:~/work$ ls -l test
total 0
nvidia@nvidia-desktop:~/work$ aws s3 sync test s3://tsota-jetson/test/
nvidia@nvidia-desktop:~/work$ aws s3 ls tsota-jetson --recursive
2021-01-24 11:17:48 7 test/1.txt
2021-01-24 11:16:54 0 test/10.txt
2021-01-24 11:16:19 0 test/2.txt
2021-01-24 11:16:19 0 test/3.txt
2021-01-24 11:16:19 0 test/4.txt
2021-01-24 11:16:19 0 test/5.txt
2021-01-24 11:16:54 0 test/6.txt
2021-01-24 11:16:54 0 test/7.txt
2021-01-24 11:16:54 0 test/8.txt
2021-01-24 11:16:54 0 test/9.txt
nvidia@nvidia-desktop:~/work$ aws s3 sync test s3://tsota-jetson/test/ --delete
delete: s3://tsota-jetson/test/1.txt
delete: s3://tsota-jetson/test/5.txt
delete: s3://tsota-jetson/test/10.txt
delete: s3://tsota-jetson/test/4.txt
delete: s3://tsota-jetson/test/6.txt
delete: s3://tsota-jetson/test/7.txt
delete: s3://tsota-jetson/test/8.txt
delete: s3://tsota-jetson/test/9.txt
delete: s3://tsota-jetson/test/2.txt
delete: s3://tsota-jetson/test/3.txt
nvidia@nvidia-desktop:~/work$ aws s3 ls tsota-jetson --recursive
nvidia@nvidia-desktop:~/work$
以上。
Author And Source
この問題について(AWS CLIを使ってJetson NanoとS3のデータ同期を試してみる), 我々は、より多くの情報をここで見つけました https://qiita.com/tsota/items/507bd562c48d0fc22873著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .