Table of Contents

事前準備

環境の確認

まず、開発環境の確認を行う。Ubuntu 22.04.4 LTS のみサポートしている。

lsb_release -a
# Ubuntu 22.04.4 LTS

uname -m
# x86_64

AWS Lambda Layer のために Zip ファイルを作成

筆者の github プロジェクト arxiv-bot をクローン.

git clone git@github.com:kktsuji/arxiv-bot.git
cd arxiv-bot

Python のバージョンは 3.12.3 でなければならない.

python --version
# Python 3.12.3

新しいディレクトリを作成し、そこに python パッケージをインストールする。次に zip ファイルを作成する。ここで、zip ファイルの名前は python.zip でなければならない点に注意。このファイルは AWS のラムダレイヤーで使用される。

mkdir python
pip install -U pip
pip install -r requirements.txt -t ./python
zip -r python.zip ./python

Webhook の設定

通知したいサービスの webhook url を取得する。

(任意) OpenAI の設定

ChatGPT による論文のサマリを生成したい場合、OpenAI API Keyを取得する。

注意:OpenAI API は有料。

AWS Lambda の設定

Lambda Layer

AWS Lambda Console へアクセスし、“Create layer” を行う。

先ほど作成した python.zip ファイルをアップロードし、“compatible architectures” では Zip ファイルを作成した開発環境のアーキテクチャを選択する。ランタイムは Python 3.12 を選ぶ。

注意:Zip ファイルの名前が python.zip 出ない場合、lambda 関数実行時のサードパーティ製 Python モジュールのインポートが失敗する。

img

Lambda Function

AWS ラムダコンソールで “Create function” を行う。

“Author from scratch” を選択し、項目を正しく記載する。

img

関数作成後、“Add a layer” ページを開く。

img

“Custom layers” を選択し、先ほど作成したレイヤーとそのバージョンを指定する。

img

arxiv-bot プロジェクトの main.py のコード全体をコピーし、“Code” > “Code source” > lambda_function.py を上書きして貼り付ける。

そして、“Deploy” ボタンを押下する。

img

次に “Test” を押下し、“Configure test event” のフォームを記載する。

“Event JSON” の項目は、以下のフォーマットに従って記入する必要がある(これらのパラメータは関数のテストでのみ使用される)。

{
  "webhook_url": "https://YOUR_WEBHOOK_URL",
  "keywords": "keyword1,keyword2,keyword3",
  "categories": "cs.AI,cs.CV,cs.LG,eess.IV",
  "openai_api_key": "YOUR_API_KEY"
}
Key Description
webhook_url Slack, Teams, その他のサービスの API の webhook url。
keywords arXiv検索のクエリーで使用されるキーワード。
各キーワードはスペース無しの半角コンマで区切る。
キーワードはタイトルとアブストラクトの検索に使用され、それぞれ “or” で検索される。
例えば、“keyword1,key word2"と指定すると、keyword1 を含む論文と ‘key word2’ を含む論文が検索結果として表示される。(もしキーワード内にスペースを含む場合、シングルクォーテーションで囲んで検索に使用される)
categories arXiv 検索のクエリで使用されるカテゴリー。
これはキーワードと同じルールに従う(スペースなしの半角カンマ区切り、“or “で検索)。また、半角スペースは無視される。
詳細は arXiv Category Taxonomy を参照。
OPENAI_API_KEY (任意) OpenAI API Key.
もし論文のサマリ作成機能を使用しない場合は、以下のように空白を指定する:
"openai_api_key": ""

img

設定を保存し、テストを実行する。

実行結果は “Code source” で確認できる。もしくは、Webhook URL で指定したサービスでも確認ができる。

img

img

動作確認の後、Lambda 関数の “ARN” をメモする。

img

AWS IAM の設定

Lambda 関数を実行するためのポリシーを作成する。

IAM Policy

AWS IAM > Policies > “Create policy” で以下のポリシーを作成。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "lambda:InvokeFunction",
            "Resource": "arn:aws:YOUR-LAMBDA-FUNCTION-ARN"
        }
    ]
}

IAM Role

AWS IAM > Roles > “Create role” で以下のロールを作成。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "admitEventBridge",
            "Effect": "Allow",
            "Principal": {
                "Service": "scheduler.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

作成後、ロールにポリシーをアタッチしておく。

AWS EventBridge の設定

ラムダ関数を毎日決まった時間に実行するための設定。

EventBridge Schedule

AWS EventBridge Console へアクセスし、“Create schedule” を行う。

img

フォームを記入する。ラムダ関数を正しい時刻に実行するために、タイムゾーンの設定と cron の設定をよく確認する。

img

img

img

arXiv 検索結果を得るために JSON パラメータを正しく設定すること(これらのパラメータは毎日のクエリで使用される)。

{
  "webhook_url": "https://YOUR_WEBHOOK_URL",
  "keywords": "keyword1,keyword2,keyword3",
  "categories": "cs.AI,cs.CV,cs.LG,eess.IV",
  "openai_api_key": "YOUR_API_KEY"
}

img

img

残りのフォームも記入する。

img

作成した AIM ポリシーを、Permission > Execution role > Use existing role > Role name へ設定。

img

スケジュールを作成。

以上で設定は完了。