0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Azure Functions で スクレイピングするため、Praywrightを動かしたい~2つ目の関数を追加~

Posted at

Azure Functions (FaaS)で スクレイピングするため、Puppeteer / Praywrightを動かしたい の続きです。

修正点

  • 前回は写経しただけなので、JST Clockの画面ショットを取得するコードをデプロイした
  • 次は自分のコードをデプロイしたい
  • 前回の手順を1から再実行する必要がある…と思ったが、よくよく考えればdockerのイメージはAzure上にあるので、関数だけ追加すればよい
    • 自分のコードもPlaywright以外は利用しないシンプルなものなので

やったこと

1.ローカルのプロジェクトディレクトリに2つ目のHTTP Trigger 関数を作成

# 2つめのHTTP Trigger の関数を作成します。
func new --name httpTrigger2 --template "HTTP trigger" --authlevel "anonymous"

Azure Functions のプロジェクトディレクトリは前回の手順で作成済みなので、関数だけを作成。

※プロジェクトディレクトリを作成するコマンドは参考までに以下。

func init --worker-runtime node --language javascript --docker

1-2.ローカルで動作確認する場合

ローカルの Azure Functions ランタイム ホストを起動して関数の動作を確認する。
http://localhost:7071/api/httpTrigger2 にアクセスして、期待する動作が行われていることを確認します。

※ 写経元の Azure Functions on Azure Container Apps で Playwright をサーバーレスで実行する に書いてありました。

func start

2つの関数が正しく認識されれば、Functions:以下の2つの関数と対応するURLが表示される。

image.png

# 2つめのHTTP Trigger の関数を作成します。
func new --name httpTrigger2 --template "HTTP trigger" --authlevel "anonymous"

で --name httpTrigger2を指定したことで、生成されるhttpTrigger2.jsのコードがapp.http('httpTrigger2', { ~となる。

const { app } = require('@azure/functions');

app.http('httpTrigger2', {
    methods: ['GET', 'POST'],
    authLevel: 'anonymous',
    handler: async (request, context) => {
        context.log(`Http function processed request for url "${request.url}"`);

        const name = request.query.get('name') || await request.text() || 'world';

        return { body: `Hello, ${name}!` };
    }
});

2.Playwrightのコードを作成

src/functions/httpTrigger2.js に適当なコードを作成

初回作業時、httpTrigger.jsのコードをコピペしたことによって

app.http('httpTrigger2', {

ではなく

app.http('httpTrigger', {

となってしまい、Functionsの構成的にエラーになってしまった。注意。

3.Azure Function をデプロイする

az functionapp create --name $APP_NAME --resource-group $RG  --functions-version 4 --runtime node  --environment $APP_CONTAINER_ENV_NAME --workload-profile-name "Consumption"  --storage-account $STORAGE_NAME  --registry-server $LOGIN_SERVER --registry-username $REGISTRY_NAME --registry-password $ADMIN_PASSWORD --image nodescraperregistryrg20240930.azurecr.io/nodewebscraperrg20240930:WebScraperAppRG20240930

4. 動作確認

以下のコマンドで帰ってきたURLにブラウザ経由でアクセス

az functionapp function show -g $RG -n $APP_NAME --function-name "httpTrigger2" --query "invokeUrlTemplate" --output tsv

image.png

正常に動作が確認できました。ちなみにこのコードはNHKのサイトにアクセスし、covid19の感染者数を取得するスクリプト。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?