忍者ブログ

設備のマニアどっとこむ

IoT開発、設備・DIYのブログ!

ラズパイカメラからAWS S3への写真のアップロード

データセンター業界では最近AWSって大手クラウドとしてよく聞くけど、実際サービスってどんな感じかな~ って思ってました。 1年間は無料なので今回ラズパイとの連携をやってみることにしました。
まずはAWSのアカウントを取得してください。いきなりカード番号を聞かれますが大丈夫です笑
はじめにS3というストレージサービスでバゲットを作ります。
(ここに画像データを送ります)
 
あとは右上のタブからセキュリテイ認証を選択して
アクセスキー (アクセスキー ID とシークレットアクセスキー)を取得します。
(ここでコピーしておいて下さい)
あとでラズパイ上で使います。
今度はユーザーと紐づけていきます。
AWS S3FullAccessのポリシーをアタッチしてください。
あとはラズパイの準備!
必要なパッケージをインストールしていきます。
pip install boto3
pip install awscli
あとはアクセスキー ID とシークレットアクセスキーを設定していくのですが、
ここでエラーが出ることがあります。
aws configure
AWS Access Key ID [None]: ***********
AWS Secret Access Key [None]: ***********
Default region name [None]: ***********
Default output format [None]: json
configureのコマンドが見つからないといった症状がでればこちらでインストールしてください。
pip install awscli --upgrade
画像をアップロードするコードです。
BUCKET_NAME = '*******'はS3で作成したバケット名をいれて下さい
import sys
import threading
import boto3
# boto3 (.aws/config)
BUCKET_NAME = '*******'
class ProgressCheck(object):
    def __init__(self, filename):
        self._filename = filename
        self._size = int(os.path.getsize(filename))
        self._seen_so_far = 0
        self._lock = threading.Lock()
    def __call__(self, bytes_amount):
        with self._lock:
            self._seen_so_far += bytes_amount
            percentage = (self._seen_so_far / self._size) * 100
            sys.stdout.write(
                    "\r%s / %s (%.2f%%)" % (
                        self._seen_so_far, self._size,
                        percentage))
            sys.stdout.flush()
def UploadToS3():
    # S3Connection
    s3 = boto3.resource('s3')
    s3.Object(BUCKET_NAME, 'test.jpg').upload_file('test.jpg')
UploadToS3()  
これでtest.jpgをアップロードできます。S3で確認できました。


もしエラーになることがあればこちらのコマンドでアクセスキー ID とシークレットアクセスキーを設定してみてください(自分はここでハマりました・・)
aws configure set aws_access_key_id AKIA****************
aws configure set aws_secret_access_key ***************
自動でアップロードをするなら
raspistill -w 480 -h 360 -n -o test.jpg
などと絡めてシェルスクリプトをcrontabに登録しておけば定期投稿できます。

ちなみにAWSはアプリもあるので携帯でも見れます!!
(S3などのサービスに限定されますが)


ラズパイでIotをやるならAWSは要チェックですね…
IoT coreとかも手を出していこうかと・・。
 










拍手[1回]

PR

コメント

翻訳(Translate)

プロフィール

HN:
佐々木 雅史
性別:
男性
自己紹介:
2021年 ラズパイ、M5stackを用いたIoT開発を専門で受注するアルティメンテを設立。代表を務める。
・2020年ラズパイコンテスト優良賞受賞
・設備系資格多数(電験3種、消防設備士甲4、2級ボイラー技士、危険物乙4、電工2種、技術士補(電気・電子)、エネ電、フォークリフトなど)

AD

カレンダー

10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30