[AWS] AWS SDK for Python(boto3) Raspi cameraの静止画をS3にアップロード

■ 前提条件
・Raspberry pi セットアップ
・Raspberry Piカメラ セットアップ
・Python3 インストール
・S3 バケット作成(自由)
・S3 の利用権限があるIAMユーザーの作成(CLI 許可)

■ Agenda
・ライブラリ インストール
・AWS CLI設定
・スクリプト作成

■ ライブラリ インストール

pip3 install boto3
pip3 install datetime
pip3 install picamera
pip3 install awscli

■ AWS CLI 設定
・以下のコマンドを実行後、アクセスキーなどを設定

aws configure
AWS Access Key ID [None]    : *************ID
AWS Secret Access Key [None]: ******************************KEY
Default region name [None]  : ap-northeast-1
Default output format [None]: json

■ スクリプト作成

# -*- coding: utf-8 -*-
import boto3
import time
import os
import picamera

from datetime import datetime

TIME_STAMP = datetime.now().strftime("%Y%m%d%H%M%S")

# S3のバケット名を設定(作成したバケット名と同じにすること)
BUCKET_NAME = 'visualization-app-camera'

# アップロードするファイル名
UPLOAD_OBJECT_FILE_NAME = 'capture_' + TIME_STAMP + '.jpg'

# アップロードするファイルのパスを設定
GET_OBJECT_FILE_PATH = './' + UPLOAD_OBJECT_FILE_NAME

s3 = boto3.resource('s3')
bucket = s3.Bucket(BUCKET_NAME)

camera = picamera.PiCamera()

try:
   # 静止画 取得
   camera.start_preview()
   time.sleep(2)
   camera.capture(UPLOAD_OBJECT_FILE_NAME)
   camera.stop_preview()

   # S3 アップロード
   bucket.upload_file(GET_OBJECT_FILE_PATH, UPLOAD_OBJECT_FILE_NAME)

   # 静止画を削除
   os.remove(GET_OBJECT_FILE_PATH)

finally:
   camera.close()


以下のようにアップロードいればOK

スクリーンショット 2020-01-06 18.11.15



この記事が気に入ったらサポートをしてみませんか?