[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