ホーム 記事一覧 ブック DH週間トピックス 検索 このサイトについて
English
gdriveを用いたOmeka Sの簡易バックアップ

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

概要 gdriveを用いたOmeka Sの簡易バックアップの方法についてのメモです。 ここでは例として、Amazon Lightsailで起動したLAMP環境にインストールしたOmeka Sを対象とします。インストール方法は以下をご確認ください。 gdriveのインストール 今回は、Google Driveにファイルをバックアップします。そのため、gdriveを使用します。以下の記事を参考に、gdriveをインストールしてください。 backup用のスクリプトを用意する $HOMEディレクトリにおいて、例えばbackup.shというファイルを作成します。ファイルの内容の一例は以下です。 # 設定値 ## Omeka Sのインストールディレクトリ OMEKA_DIRNAME=htdocs OUTPUT_DIRNAME=`date +%y-%m-%d` ## MySQLのユーザ名。 USERNAME=root ## MySQLのパスワード。以下のコマンドで確認できます。 ## cat /home/bitnami/bitnami_application_password PASSWORD=<パスワード> ## Omeka Sのデータベース名。例:omekas DATABASE_NAME=<データベース名> FOLDER_ID=<GoogleドライブのフォルダID> # 出力フォルダの作成(日付に基づくフォルダ名を作成) mkdir -p "$OUTPUT_DIRNAME" # sqlのバックアップ mysqldump -u $USERNAME -p$PASSWORD $DATABASE_NAME > $OUTPUT_DIRNAME/dump.sql # omeka関連フォルダの圧縮 zip -q $OUTPUT_DIRNAME/$OMEKA_DIRNAME -r $OMEKA_DIRNAME # Google Driveへのアップロード ./go/bin/gdrive upload --recursive --parent $FOLDER_ID $OUTPUT_DIRNAME # 出力フォルダの削除 rm -rf $OUTPUT_DIRNAME 上記のファイルを作成後、以下のコマンドを実行します。 ...

Using gdrive in a LAMP environment started with Amazon Lightsail

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. Linux ip-172-26-5-202 4.19.0-19-cloud-amd64 #1 SMP Debian 4.19.232-1 (2022-03-07) x86_64 The programs included with the Debian GNU/Linux system are free software; The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the /usr/share/doc/*/copyright. The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. ___ _ _ _ _ _ | _ _ |_) |_ _ _ _ _ _ _ _ _ _ _ __ (_) | _ _ \ \ \}/ _| ' \}/ _` | ' \} |___/_|\__|_|_|\__,_|_|_|_|_|_| *** Welcome to the LAMP packaged by Bitnami 7.4.28-14 *** *** Documentation: https://docs.bitnami.com/aws/infrastructure/lamp/ *** *** https://docs.bitnami.com/aws/ *** *** Bitnami Forums: https://community.bitnami.com/ *** Last login: Thu May 12 03:25:13 2022 from 72.21.217.186 bitnami@ip-172-26-5-202:~$ Install golang Install golang as follows. ...

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

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

概要 Amazon Lightsailで起動したLAMP環境でgdriveを使用するための備忘録です。Google Driveへのファイルのバックアップなどが可能になります。 手順 まず、Amazon Lightsailにアクセスして、対象となるインスタンスにおいて、以下の「Connect using SSH」ボタンを押します。 以下のように、サーバにアクセスできます。 Linux ip-172-26-5-202 4.19.0-19-cloud-amd64 #1 SMP Debian 4.19.232-1 (2022-03-07) x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. ___ _ _ _ | _ |_) |_ _ _ __ _ _ __ (_) | _ \ | _| ' \/ _` | ' \| | |___/_|\__|_|_|\__,_|_|_|_|_| *** Welcome to the LAMP packaged by Bitnami 7.4.28-14 *** *** Documentation: https://docs.bitnami.com/aws/infrastructure/lamp/ *** *** https://docs.bitnami.com/aws/ *** *** Bitnami Forums: https://community.bitnami.com/ *** Last login: Thu May 12 03:25:13 2022 from 72.21.217.186 bitnami@ip-172-26-5-202:~$ golangのインストール 以下のように、golangをインストールします。 ...

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

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」ボタンを押します。 以下の画面が表示されます。 Linux ip-172-26-5-202 4.19.0-19-cloud-amd64 #1 SMP Debian 4.19.232-1 (2022-03-07) x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. ___ _ _ _ | _ |_) |_ _ _ __ _ _ __ (_) | _ \ | _| ' \/ _` | ' \| | |___/_|\__|_|_|\__,_|_|_|_|_| *** Welcome to the LAMP packaged by Bitnami 7.4.28-14 *** *** Documentation: https://docs.bitnami.com/aws/infrastructure/lamp/ *** *** https://docs.bitnami.com/aws/ *** *** Bitnami Forums: https://community.bitnami.com/ *** bitnami@ip-172-26-5-202:~$ インスタンス内での作業 ファイルの移動 まず、必要なファイルのダウンロードや移動を行います。 ...

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

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 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' 結果、VIPSの場合は 35.6 MB、ImageMagickの場合は 107.4 MB になりました。 IIIF画像URL それぞれのIIIF画像URLは以下です。 VIPS https://iiif3.a-ldas.com/iiif/2/kakezu_v/info.json ImageMagick https://iiif3.a-ldas.com/iiif/2/kakezu/info.json Image Viewerでの表示 今回は、IIIF画像URLを読み込むことができるImage Annotator(神崎正英氏作成)を利用しました。 VIPS https://www.kanzaki.com/works/2016/pub/image-annotator?u=https%3A%2F%2Fiiif3.a-ldas.com%2Fiiif%2F2%2Fkakezu_v%2Finfo.json ImageMagick https://www.kanzaki.com/works/2016/pub/image-annotator?u=https%3A%2F%2Fiiif3.a-ldas.com%2Fiiif%2F2%2Fkakezu%2Finfo.json 結果 上記いずれの場合においても、(一部読み込みに時間がかかるケースがありますが、)無事に表示することができました。 本実験結果が参考になりましたら幸いです。

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

【開発編】国立国会図書館「次世代デジタルライブラリー」で公開されている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勉強中の身ですが、他の方の参考になる部分がありましたら幸いです。

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

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

概要 AWS Lambdaを用いた物体検出API(Flask + yolov5)の構築を行います。機械学習の推論モデルをAWS Lambdaを用いて構築することにより、コストの軽減を目指します。 以下の記事を参考にさせていただいています。 https://zenn.dev/gokauz/articles/72e543796a6423 リポジトリの内容の更新や、API Gatewayからの利用方法の追記などを行なっています。 Lambdaへの関数登録 以下のGitHubリポジトリをクローンします。 git clone https://github.com/ldasjp8/yolov5-lambda.git ローカルで実行する 次に、venvを用いて仮想環境を作成して、モジュールをインストールします。 cd yolov5-lambda python -m venv venv source venv/bin/activate cd yolov5 pip install --upgrade pip pip install -r requirements.txt その後、以下を実行すると、物体検出結果のjsonデータが出力されます。 python app.py デプロイ 冒頭で述べた通り、以下の記事の成果を利用させていただいています。 https://zenn.dev/gokauz/articles/72e543796a6423 ここでは、Jupyter Notebookを利用します。 cd ../ jupyter notebook Jupyter Notebookが起動した後、以下のbuild_and_test.ipynbを選択して、手順の通りに実行します。 今回作成したリポジトリで変更した点として、まずconf.jsonファイルをロードするようにしています。 cloneしたリポジトリにconf.json.templateを格納していますので、conf.jsonに名前を変えて、profile項目に、AWS CLIにプロファイル名を与えてください。 mv conf.json.template conf.json code conf.json Notebookの実行にあたっては、dockerを起動しておく必要があります。 (オプション)AWS Lambdaでのテスト実行 以下、AWS Lambdaでのテストの実行方法を示します。なお、上記のNotebook内で推論まで実行するため、本作業は必須ではありません。(私の備忘録です。) Lambdaの関数ページにアクセスし、「テスト」タブを選択します。 そして、以下に示すように、テンプレートで「agigateway-aws-proxy」を選択し、サンプルとして利用する画像のbase64エンコードされた文字列を、body項目に与えます。画像のbase64エンコードされた文字列の作成については、上記のNotebookの「推論してみる」の項目にありますので、参考にしてください。 以下のように実行結果を確認することができます。 ...

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

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構築の一例として、参考になりましたら幸いです。

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

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

AWS App RunnerにおけるソースとしてECRを利用した際、以下のように、Health check on port “XXXX"が発生しました。 03-20-2022 07:18:52 AM [AppRunner] Health check on port '3000' failed. Service is rolling back. Check your configured port number. For more information, read the application logs. 上記について、以下の「アプリケーションログ」を確認したところ、 以下が出力されていました。 exec user process caused: exec format error 上記について、以下のstack overflowがみつかりました。 https://stackoverflow.com/questions/67361936/exec-user-process-caused-exec-format-error-in-aws-fargate-service 上記の中で、以下の回答がありました。 docker buildx build --platform=linux/amd64 -t <image-name> . こちらを試したところ、正しくデプロイすることができました。 同様のことでお困りの方の参考になりましたら幸いです。

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

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 ...

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

【開発者向け】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 ...