gdriveを用いたOmeka Sの簡易バックアップ

概要 gdriveを用いたOmeka Sの簡易バックアップの方法についてのメモです。 ここでは例として、Amazon Lightsailで起動したLAMP環境にインストールしたOmeka Sを対象とします。インストール方法は以下をご確認ください。 gdriveのインストール 今回は、Google Driveにファイルをバックアップします。そのため、gdriveを使用します。以下の記事を参考に、gdriveをインストールしてください。 backup用のスクリプトを用意する $HOMEディレクトリにおいて、例えばbackup.shというファイルを作成します。ファイルの内容の一例は以下です。 # # O O # U # # P # D F # m # m # z # # r # M U # S # # A # A O k y i / m 設 E T E S T L 出 d s s o p G g 出 定 O K P M R M c S O A D 力 i q q m o o 力 - 値 m A U y N y a W m B E フ r l l e - o / フ r e _ T S A S t O e A R ォ の d k q g b ォ f k D _ Q M Q R k S _ ル - バ u a l i ル a I D L E L / D a E I ダ p ッ m 関 $ e n ダ $ R I の = の h = _ D の ク p 連 O / の O S N R ユ r パ o < S N = 作 " ア フ U D g 削 U の A N ー o ス m パ の A < 成 $ ッ - ォ T r d 除 T イ M A ザ o ワ e ス デ M G ( O プ u ル P i r P ン E M 名 t ー / ワ ー E o 日 U ダ U v i U ス = E 。 ド b ー タ = o 付 T $ の T e v T ト h = 。 i ド ベ < g に P U 圧 _ へ e _ ー t ` 以 t > ー デ l 基 U S 縮 D の D ル d d 下 n ス ー e づ T E I ア u I デ o a の a 名 タ ド く _ R R ッ p R ィ c t コ m 。 ベ ラ フ D N N プ l N レ s e マ i 例 ー イ ォ I A A ロ o A ク ン / : ス ブ ル R M M ー a M ト + ド b o 名 の ダ N E E ド d E リ % で i m > フ 名 A / y 確 t e ォ を M - $ - 認 n k ル 作 E p O - % で a a ダ 成 " $ M r m き m s I ) P E e - ま i D A K c % す _ > S A u d 。 a S _ r ` p W D s p O I i l R R v i D N e c A a $ M t D E - i A p o T - a n A r r _ B e p A $ n a S O t s E M s _ E $ w N K F o A A O r M _ L d E D D I E > R R N _ $ A I O M D U E T $ P O U U T T _ P D U I T R _ N D A I M R E N / A d M u E m p . s q l 上記のファイルを作成後、以下のコマンドを実行します。 ...

2022年5月12日 · 4 分 · Nakamura

Using gdrive in a LAMP environment started with Amazon Lightsail

Overview Memorandum for using gdrive in a LAMP environment started with Amazon Lightsail, allowing backup of files to Google Drive, etc. Procedure First, access Amazon Lightsail and press the following “Connect using SSH” button on the target instance. You can access the server as follows. L T T T T D L b i h h h h e a i n e e e e b s t u i t n x p p p p a a r r r r n l m i o o o o W D h B o i p g g g g G e o t i g @ - r r r r N l c t t i i 1 a a a a U c u p n n p 7 m m m m / o m s a : - 2 s s s s L m e : m 1 - i e n / i T 7 2 i i i i n t / h 2 6 n n n n u t a d F u - - c c c c x o t o o 2 5 l l l l \ i c r M 6 - u u u u c } t o s u a - 2 d d d d o / h n . m y 5 0 e e e e m e : b s - 2 d d d d e i : 1 2 s L h t 2 0 4 w w w w A t n h 2 . i i i i w _ M t a t 0 : 1 t t t t i , P p m t 3 ~ 9 h h h h t \ _ s i p : $ . h } | p : . s 2 0 t t t t / _ a c : 5 - h h h h A | c / o / : 1 e e e e B _ _ k d m 1 9 S ` | a o c 3 - D D D D O _ g c a o c e e e e L e s w m 2 l b b b b U d . s m 0 o i i i i T b / u 2 u a a a a E b i n 2 d n n n n L \ y t i - Y } n t f a G G G G B a y r m N N N N N i m . o d U U U U O t i b m 6 / / / / n . i 4 L L L L W a c t 7 i i i i A m o n 2 # n n n n R i m a . 1 u u u u R / m 2 x x x x A 7 a i 1 S N . w . . M s s s s T 4 s c 2 P y y y y Y . / o 1 s s s s , 2 i m 7 D t t t t 8 n / . e e e e e t - f 1 b m m m m o 1 r 8 i 4 a 6 a a a a a t s n r r r r h t e e e e e r 4 u . f f f f e c 1 r r r r x t 9 e e e e t u . e e e e e r 2 n e 3 s s s s t / 2 o o o o l - f f f f p a 1 t t t t e m w w w w r p ( a a a a m / 2 r r r r i 0 e e e e t 2 ; ; ; ; t 2 e - t t t d 0 h h h 3 e e e b - y 0 e e e 7 x x x a ) a a a p c c c p x t t t l 8 i 6 d d d c _ i i i a 6 s s s b 4 t t t l r r r e i i i b b b l u u u a t t t w i i i . o o o n n n t t t e e e r r r m m m s s s f f f o o o r r r e e e a a a c c c h h h p p p r r r o o o g g g r r r a a a m m m a a a r r r e e e d d d e e e s s s c c c r r r i i i b b b e e e d d d i i i n n n t t t h h h e e e / i u n s d r i / v s i h d a u r a e l / d f o i c l / e * s / c i o n p y / r u i s g r h / t s . h a r e / d o c / * / c o p y r i g h t . Install golang Install golang as follows. ...

2022年5月12日 · 7 分 · Nakamura

Amazon Lightsailで起動したLAMP環境でgdriveを使用する

概要 Amazon Lightsailで起動したLAMP環境でgdriveを使用するための備忘録です。Google Driveへのファイルのバックアップなどが可能になります。 手順 まず、Amazon Lightsailにアクセスして、対象となるインスタンスにおいて、以下の「Connect using SSH」ボタンを押します。 以下のように、サーバにアクセスできます。 L T t i D p L b i h h n e e a i n e e d b r s t u i i m t n x p e v a i a r x i n t l m i o a d t W D B o i p g c u G e e o i g @ - r t a N d l c t i i 1 a l U c u n n p 7 m d / b o m a : - 2 s i f L y m e m 1 - s i i e n i T 7 2 i t l n a t h 2 6 n r e u p t a F u - - c i s x p o t o 2 5 l b l i r M 6 - u u i c i t o u a - 2 d t n o c h n m y 5 0 e i m a e : s - 2 d o / e b : 1 2 n u s l L 2 0 4 w s e A h h h 2 . i t r w _ _ M t t t 0 : 1 t e / i l ` , P t t t 3 ~ 9 h r s t a _ p p p : $ . m h h w p s s s 2 0 t s a . a : : : 5 - h r A c / : 1 e f e B k / 1 9 o / S a d d c 3 - D r d O g o o o c e o L e c c m 2 l b e c U d s s m 0 o i a / T . . u 2 u a c * E b b b n 2 d n h / L y i i i - c Y t t t f a G p o B n n y r m N r p N i a a . o d U y O t m m b m 6 g r n i i i 4 L r i W a . . t 7 i a g A m c c n 2 # n m h R i o o a . 1 u t R m m m 2 x a . A 7 / i 1 S r N . a a . . M s e T 4 w w c 2 P y Y . s s 1 s d , 2 / m 7 D t e 8 i / . e e s t - n 1 b m c o 1 f 8 i r 4 r 6 a a i t a n r b h s e e e t 4 d r . f e u 1 r i x c 9 e n t t . e e u 2 t n r 3 s h t e 2 o e / - f l 1 t a w m ( a p 2 r / 0 e 2 ; 2 - 0 3 - 0 7 ) x 8 6 _ 6 4 golangのインストール 以下のように、golangをインストールします。 ...

2022年5月12日 · 6 分 · Nakamura

Amazon Lightsailを用いたOmeka Sサイトの構築(独自ドメイン+SSL化を含む)

更新履歴 2022/09/08 スクリプトの記述を最新化しました。 概要 Amazon Lightsailは以下のような説明がなされています。 Amazon Lightsail は、コンテナなどのクラウドリソースを予測可能な低価格で簡単に管理できる、使いやすい仮想プライベートサーバー (VPS) です。 今回は、このAmazon Lightsailを用いたOmeka Sの構築方法を紹介します。合わせて、データベースの公開にあたり一般的に求められる「独自ドメイン」「SSL」設定についても扱います。 Amazon Lightsail インスタンスの作成 以下のページにアクセスします。 https://lightsail.aws.amazon.com/ls/webapp/home/instances そして、以下の「Create Instance」ボタンをクリックします。 「Select a blueprint」において、「LAMP (PHP 7)」を選択します。 「Choose your instance plan」において、インスタンスプランを選択します。今回は最も低価格のプランを選びました。 起動したら、以下のインスタンスのページにアクセスして、「Connect using SSH」ボタンを押します。 以下の画面が表示されます。 L T t i D p b i h h n e e i n e e d b r t u i i m n x p e v a i a r x i n t m i o a d t W D B i p g c u G e e o i @ - r t a N d l c t i 1 a l U c u n p 7 m d / b o m a - 2 s i f L y m e m 1 - s i i e n i 7 2 i t l n a t 2 6 n r e u p t a F - - c i s x p o t o 2 5 l b l i r 6 - u u i c i t o u - 2 d t n o c h n m 5 0 e i m a e : s - 2 d o / e b : 2 n u s l L 0 4 w s e A h h h 2 . i t r w _ _ M t t t : 1 t e / i l ` , P t t t ~ 9 h r s t a _ p p p $ . m h h w p s s s 0 t s a . a : : : - h r A c / 1 e f e B k / 9 o / S a d d c - D r d O g o o o c e o L e c c m l b e c U d s s m o i a / T . . u u a c * E b b b n d n h / L y i i i - c Y t t t a G p o B n n y m N r p N i a a . d U y O t m m b 6 g r n i i i 4 L r i W a . . t i a g A m c c n # n m h R i o o a 1 u t R m m m x a . A 7 / i S r N . a a . M s e T 4 w w c P y Y . s s s d , 2 / m D t e 8 i / e e s t - n b m c o 1 f i r 4 r a a i t a n r b h s e e e t 4 d r . f e u 1 r i x c 9 e n t t . e e u 2 t n r 3 s h t e 2 o e / - f l 1 t a w m ( a p 2 r / 0 e 2 ; 2 - 0 3 - 0 7 ) x 8 6 _ 6 4 インスタンス内での作業 ファイルの移動 まず、必要なファイルのダウンロードや移動を行います。 ...

2022年4月26日 · 13 分 · Nakamura

serverless-iiifで対応可能な画像サイズに関する実験

概要 以下の記事で、AWSサーバーレスアプリケーションによるIIIF Image Serverの構築方法について説明しました。 今回は、サイズが比較的大きい画像を登録し、タイル画像の配信が可能かを確認します。 対象 今回は、『鉱山借区図』(東京大学駒場図書館所蔵)を対象とします。 https://iiif.dl.itc.u-tokyo.ac.jp/repo/s/ichiko/document/4120a330-2f1c-4e2c-5d48-21aed4d42704 元画像は 300 MB弱のtif画像です。 pyramidal tiled tiffの作成 以下のサイトを参考に、VIPSとImageMagickの両方を試してみました。 https://github.com/samvera-labs/serverless-iiif#creating-tiled-tiffs Using VIPS v i p s t i f f s a v e s o u r c e _ i m a g e . t i f o u t p u t _ i m a g e . t i f - t i l e - p y r a m i d - c o m p r e s s i o n j p e g - t i l e - w i d t h 2 5 6 - t i l e - h e i g h t 2 5 6 Using ImageMagick c o n v e r t s o u r c e _ i m a g e . t i f - d e f i n e t i f f : t i l e - g e o m e t r y = 2 5 6 x 2 5 6 - c o m p r e s s j p e g ' p t i f : o u t p u t _ i m a g e . t i f ' 結果、VIPSの場合は 35.6 MB、ImageMagickの場合は 107.4 MB になりました。 ...

2022年4月14日 · 2 分 · Nakamura

【開発編】国立国会図書館「次世代デジタルライブラリー」で公開されているOCR結果をIIIFビューアで閲覧するアプリを作成しました。

概要 国立国会図書館「次世代デジタルライブラリー」で公開されているOCR結果をIIIFビューアで閲覧するアプリを作成しました。使用方法を以下の記事にまとめています。 今回は、上記アプリの構築方法について説明します。 構築方法 バックエンド AWSを利用しました。また、主にSAM(Serverless Application Model)を用いて構築しています。 IIIFマニフェスト&キュレーションリストの作成 次世代デジタルライブラリーで公開されているOCR結果を反映したIIIFマニフェストおよびキュレーションリストを生成する流れは以下です。 ポイントとして、AWS Lambdaが担う処理に時間がかかっため、AWS Step Functionsを導入しています。 具体的には、AWS Lambdaは、OCR結果をIIIFマニフェストおよびキュレーションリストに変換する処理、およびその変換結果をS3にアップロードする処理を行いますが、これがAPI Gatewayのタイムアウト(29秒)に引っかかってしまいました。そのため、以下の記事を参考に、Step Functionsを組み合わせた非同期処理を採用しています。 https://dev.classmethod.jp/articles/apigateway-stepfunctions-asynchronous/ IIIF Content Search APIの構築 本アプリのもう一つの工夫点として、IIIF Content Search APIを構築しています。 https://iiif.io/api/search/1.0/ こちらについては、以下に示すシンプルな構成をとっています。S3から取得したIIIFマニフェストに対して、検索語に対応したデータ(文字列および座標情報)を返却するAWS Lambda関数を作成しました。 フロントエンド フロントエンドはNuxt.jsを用いて開発しています。ソースコードは以下です。GitHub Pagesを用いて公開しています。 https://github.com/ldasjp8/ndl-ocr-iiif Step Functionsを実行後、定期的(3秒ごと)にステータスを取得し、SUCCEEDEDとなれば、MiradorとCuration Viewer(CODH提供)へのリンクを表示します。 Miradorについては、以下に示すように、デフォルトですべてのアノテーションを表示するhighlightAllAnnotations: true、かつ、サイドパネルでアノテーションを表示するdefaultSideBarPanel: 'annotations'ようにしています。 https://github.com/ldasjp8/ndl-ocr-iiif/blob/3b474ea1cb960a4d2e322ba04e131c11ed70529b/pages/_id/mirador/index.vue#L34-L40 まとめ AWS勉強中の身ですが、他の方の参考になる部分がありましたら幸いです。

2022年4月4日 · 1 分 · Nakamura

AWS Lambdaを用いた物体検出API(Flask + yolov5)の構築

概要 AWS Lambdaを用いた物体検出API(Flask + yolov5)の構築を行います。機械学習の推論モデルをAWS Lambdaを用いて構築することにより、コストの軽減を目指します。 以下の記事を参考にさせていただいています。 https://zenn.dev/gokauz/articles/72e543796a6423 リポジトリの内容の更新や、API Gatewayからの利用方法の追記などを行なっています。 Lambdaへの関数登録 以下のGitHubリポジトリをクローンします。 g i t c l o n e h t t p s : / / g i t h u b . c o m / l d a s j p 8 / y o l o v 5 - l a m b d a . g i t ローカルで実行する 次に、venvを用いて仮想環境を作成して、モジュールをインストールします。 ...

2022年3月24日 · 3 分 · Nakamura

Flaskを用いてyolo5モデルを公開するリポジトリのECRとAWS App Runnerでの使用方法

本記事では、AWS App Runnerとyolo5を用いた物体検出APIの構築例について紹介します。 Amazon ECR 以下で公開されている、Flaskを用いてyolo5モデルを公開するリポジトリについて、 https://github.com/robmarkcole/yolov5-flask Amazon ECR(Elastic Container Registry)のパブリックレジストリにイメージを登録しました。 https://gallery.ecr.aws/b8m8i5m3/yolov5-flask 元のリポジトリから一部ソースコードを変更しています。フォークしたリポジトリは以下です。 https://github.com/ldasjp8/yolov5-flask 以下では、本イメージの利用例として、App Runnerでの使用方法を説明します。 AWS App Runner App Runnerにアクセスして、画面右上の「サービスの作成」をクリックします。 次の「ソースおよびデプロイ」画面において、以下のように選択します。「コンテナイメージのURI」には、以下を与えてください。 public.ecr.aws/b8m8i5m3/yolov5-flask:latest 次の「サービスを設定」画面において、サービス名を入力し、ポートを5000に変更します。 その後の設定はデフォルトのまま進めると、以下の画面に遷移します。 5分から10分程度待つと、「ステータス」が「Running」となったら成功です。 「デフォルトドメイン」のドメイン「 https://XXXX.us-east-1.awsapprunner.com/ 」を用いて、以下のURLにアクセスしてください。 https://XXXX.us-east-1.awsapprunner.com/detect?url=https://raw.githubusercontent.com/ultralytics/yolov5/master/data/images/zidane.jpg 以下に示すような物体検出結果のJSONデータが返却されます。 まとめ AWS App Runnerを用いて、yolo5を用いた物体検出APIを簡単に構築することができました。 App Runnerを用いたAPI構築の一例として、参考になりましたら幸いです。

2022年3月21日 · 1 分 · Nakamura

AWS App Runner + ECR 利用時におけるHealth check on port

AWS App RunnerにおけるソースとしてECRを利用した際、以下のように、Health check on port “XXXX"が発生しました。 0 3 - 2 0 - 2 0 2 2 0 7 : 1 8 : 5 2 A M [ A p p R u n n e r ] H e a l t h c h e c k o n p o r t ' 3 0 0 0 ' f a i l e d . S e r v i c e i s r o l l i n g b a c k . C h e c k y o u r c o n f i g u r e d p o r t n u m b e r . F o r m o r e i n f o r m a t i o n , r e a d t h e a p p l i c a t i o n l o g s . ...

2022年3月20日 · 2 分 · Nakamura

AWSサーバーレスアプリケーションによるIIIF Image Serverの構築

お知らせ 以下に、2024年時点の使用方法を記載しました。参考にしてください。 概要 本記事では、Awesome IIIFで紹介されている、AWSサーバーレスアプリケーションによるIIIF Image Serverの構築方法を紹介します。 https://github.com/samvera-labs/serverless-iiif なお、本記事の手続きにより、AWSのサービス利用料金が発生しますので、試される場合にはご注意ください。 想定読者 上記リポジトリでは、以下のように紹介されています。 AWSの基本的な知識があること。 コンソールやコマンドラインからリソースを作成する権限を持つAmazon Web Servicesアカウントを持つこと。 IIIF で提供するソース画像を格納する Amazon S3 バケットを持つこと。 準備 S3のバケット準備 IIIF で提供するソース画像を格納する Amazon S3 バケットを作成します。今回は、「serverless-iiif-s3-dd」というバケットを作成し、その中に「ezu」というディレクトリを作成しました。 tiled TIFFファイルの作成 今回は、国立国会図書館で公開されている以下の国絵図をサンプルデータとして用いました。 https://dl.ndl.go.jp/info:ndljp/pid/1286201 JPG画像をダウンロードし、以下の変換コマンドを参考に、tiled TIFFファイルを作成します。 Using VIPS vips tiffsave source_image.tif output_image.tif –tile –pyramid –compression jpeg –tile-width 256 –tile-height 256 Using ImageMagick convert source_image.tif -define tiff:tile-geometry=256x256 -compress jpeg ‘ptif:output_image.tif’ S3へのtiled TIFFファイルのアップロード 変換して得られたファイルを以下のようにアップロードします。 Image Serverの構築 セットアップ まず、冒頭で紹介した、以下のリポジトリページにアクセスし、Quick Startにある「Deploy the Serverless Application」のリンクをクリックします。 https://github.com/samvera-labs/serverless-iiif ...

2022年3月17日 · 1 分 · Nakamura

【開発者向け】AWS x Nuxt.js x Elasticsearchを用いた検索アプリケーションの開発環境の構築

本記事では、AWS x Nuxt.js x Elasticsearchを用いた検索アプリケーションの開発環境の構築について、説明します。備忘録の側面が強いです。 以下の構成を目指します。よりよい構成や構築方法があるかと思いますが、とりあえずAWSを用いて、検索エンジンにElasticsearchを使用したNuxt.js製のウェブアプリケーションの開発環境が整います。 Cultural Japanプロジェクトにおいても、上記とほぼ同様の構成を採用しています。 以下の流れで説明します。 準備(任意) AWSでドメインの取得やSSL/TLS化を行う方法です。 Route 53を用いたドメイン取得 独自ドメインの取得が必要な場合、Route 53でドメインの取得が可能です。 AWS Certificate Manager 次に、AWS Certificate Managerを用いて、SSL/TLS化を行います。こちらも手順に進めれば問題ありません。 なお、検証を行う際、以下の「Route 53でレコードを作成」ボタンをクリックして手続きすることで、簡単に進めることができました。 Backend Backendの構築から進めます。 Identity and Access Management (IAM)ユーザの作成 まず、Amazon OpenSearch Serviceにアクセス権限があるユーザを作成します。 作成後に表示される「アクセスキー」と「シークレットアクセスキー」をメモしておきます。 Amazon OpenSearch Service まず、Amazon OpenSearch Serviceを選びます。 その後は、以下のチュートリアルが参考になります。 https://docs.aws.amazon.com/opensearch-service/latest/developerguide/gsg.html 上記のマニュアルからの変更点として、アクセスポリシーは「ドメインレベルのアクセスポリシーの設定」を選択し、先に作成したユーザのARNを許可してください。 (ローカル)Pythonを用いたAmazon OpenSearch Serviceへのデータ登録 次に、上記で発行した「アクセスキー」と「シークレットアクセスキー」などを用いて、Amazon OpenSearch Serviceにデータ登録を行います。 具体的には、以下のGoogle Colabなどを参考にしてください。 https://colab.research.google.com/drive/1-uygvtQwoc3Wn4XSEUWN5Z5Hxq3vT9Gj?usp=sharing AWS SAM(Serverless Application Model) 次に、API GatewayとLambda 関数を作成します。具体的には、以下の記事を参考に、AWS SAM(Serverless Application Model)を利用します。 dev.classmethod.jp ...

2022年3月12日 · 3 分 · Nakamura