Skip to content

Commit

Permalink
Cloudflare worker
Browse files Browse the repository at this point in the history
  • Loading branch information
Yusuke Kanazawa committed May 27, 2024
1 parent d83db75 commit 84b08f5
Show file tree
Hide file tree
Showing 9 changed files with 3,723 additions and 3,546 deletions.
6,465 changes: 3,235 additions & 3,230 deletions ga4_pv.json

Large diffs are not rendered by default.

568 changes: 284 additions & 284 deletions ga_cache.json

Large diffs are not rendered by default.

81 changes: 50 additions & 31 deletions sns_count_cache.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,25 @@
"FetchAt": "2024-02-28T09:51:41.379173127+09:00"
}
},
{
"URL": "https://future-architect.github.io/articles/20240523a/",
"Twitter": {
"Count": 0,
"FetchAt": "0001-01-01T00:00:00Z"
},
"FaceBook": {
"Count": 0,
"FetchAt": "2024-05-27T13:41:57.03162436+09:00"
},
"Hatebu": {
"Count": 0,
"FetchAt": "2024-05-27T13:41:57.03162436+09:00"
},
"Pocket": {
"Count": 5,
"FetchAt": "2024-05-27T13:41:57.03162436+09:00"
}
},
{
"URL": "https://future-architect.github.io/articles/20240522a/",
"Twitter": {
Expand All @@ -26,15 +45,15 @@
},
"FaceBook": {
"Count": 0,
"FetchAt": "2024-05-23T10:37:15.267122932+09:00"
"FetchAt": "2024-05-27T13:41:57.03162436+09:00"
},
"Hatebu": {
"Count": 0,
"FetchAt": "2024-05-23T10:37:15.267122932+09:00"
"FetchAt": "2024-05-27T13:41:57.03162436+09:00"
},
"Pocket": {
"Count": 0,
"FetchAt": "2024-05-23T10:37:15.267122932+09:00"
"FetchAt": "2024-05-27T13:41:57.03162436+09:00"
}
},
{
Expand All @@ -45,15 +64,15 @@
},
"FaceBook": {
"Count": 0,
"FetchAt": "2024-05-23T10:37:15.267122932+09:00"
"FetchAt": "2024-05-27T13:41:57.03162436+09:00"
},
"Hatebu": {
"Count": 0,
"FetchAt": "2024-05-23T10:37:15.267122932+09:00"
"FetchAt": "2024-05-27T13:41:57.03162436+09:00"
},
"Pocket": {
"Count": 0,
"FetchAt": "2024-05-23T10:37:15.267122932+09:00"
"FetchAt": "2024-05-27T13:41:57.03162436+09:00"
}
},
{
Expand All @@ -64,15 +83,15 @@
},
"FaceBook": {
"Count": 0,
"FetchAt": "2024-05-23T10:37:15.267122932+09:00"
"FetchAt": "2024-05-27T13:41:57.03162436+09:00"
},
"Hatebu": {
"Count": 0,
"FetchAt": "2024-05-23T10:37:15.267122932+09:00"
"FetchAt": "2024-05-27T13:41:57.03162436+09:00"
},
"Pocket": {
"Count": 0,
"FetchAt": "2024-05-23T10:37:15.267122932+09:00"
"FetchAt": "2024-05-27T13:41:57.03162436+09:00"
}
},
{
Expand All @@ -83,15 +102,15 @@
},
"FaceBook": {
"Count": 0,
"FetchAt": "2024-05-23T10:37:15.267122932+09:00"
"FetchAt": "2024-05-27T13:41:57.03162436+09:00"
},
"Hatebu": {
"Count": 1,
"FetchAt": "2024-05-23T10:37:15.267122932+09:00"
"FetchAt": "2024-05-27T13:41:57.03162436+09:00"
},
"Pocket": {
"Count": 2,
"FetchAt": "2024-05-23T10:37:15.267122932+09:00"
"FetchAt": "2024-05-27T13:41:57.03162436+09:00"
}
},
{
Expand All @@ -102,15 +121,15 @@
},
"FaceBook": {
"Count": 0,
"FetchAt": "2024-05-23T10:37:15.267122932+09:00"
"FetchAt": "2024-05-27T13:41:57.03162436+09:00"
},
"Hatebu": {
"Count": 1,
"FetchAt": "2024-05-23T10:37:15.267122932+09:00"
"FetchAt": "2024-05-27T13:41:57.03162436+09:00"
},
"Pocket": {
"Count": 0,
"FetchAt": "2024-05-23T10:37:15.267122932+09:00"
"FetchAt": "2024-05-27T13:41:57.03162436+09:00"
}
},
{
Expand Down Expand Up @@ -140,15 +159,15 @@
},
"FaceBook": {
"Count": 0,
"FetchAt": "2024-05-23T10:37:15.267122932+09:00"
"FetchAt": "2024-05-27T13:41:57.03162436+09:00"
},
"Hatebu": {
"Count": 5,
"FetchAt": "2024-05-23T10:37:15.267122932+09:00"
"FetchAt": "2024-05-27T13:41:57.03162436+09:00"
},
"Pocket": {
"Count": 4,
"FetchAt": "2024-05-23T10:37:15.267122932+09:00"
"FetchAt": "2024-05-27T13:41:57.03162436+09:00"
}
},
{
Expand All @@ -159,15 +178,15 @@
},
"FaceBook": {
"Count": 0,
"FetchAt": "2024-05-23T10:37:15.267122932+09:00"
"FetchAt": "2024-05-27T13:41:57.03162436+09:00"
},
"Hatebu": {
"Count": 20,
"FetchAt": "2024-05-23T10:37:15.267122932+09:00"
"FetchAt": "2024-05-27T13:41:57.03162436+09:00"
},
"Pocket": {
"Count": 26,
"FetchAt": "2024-05-23T10:37:15.267122932+09:00"
"FetchAt": "2024-05-27T13:41:57.03162436+09:00"
}
},
{
Expand Down Expand Up @@ -1679,15 +1698,15 @@
},
"FaceBook": {
"Count": 0,
"FetchAt": "2024-05-23T10:37:15.267122932+09:00"
"FetchAt": "2024-05-27T13:41:57.03162436+09:00"
},
"Hatebu": {
"Count": 6,
"FetchAt": "2024-05-23T10:37:15.267122932+09:00"
"FetchAt": "2024-05-27T13:41:57.03162436+09:00"
},
"Pocket": {
"Count": 17,
"FetchAt": "2024-05-23T10:37:15.267122932+09:00"
"FetchAt": "2024-05-27T13:41:57.03162436+09:00"
}
},
{
Expand Down Expand Up @@ -3408,15 +3427,15 @@
},
"FaceBook": {
"Count": 0,
"FetchAt": "2024-05-23T10:37:15.267122932+09:00"
"FetchAt": "2024-05-27T13:41:57.03162436+09:00"
},
"Hatebu": {
"Count": 4,
"FetchAt": "2024-05-23T10:37:15.267122932+09:00"
"FetchAt": "2024-05-27T13:41:57.03162436+09:00"
},
"Pocket": {
"Count": 1,
"FetchAt": "2024-05-23T10:37:15.267122932+09:00"
"FetchAt": "2024-05-27T13:41:57.03162436+09:00"
}
},
{
Expand Down Expand Up @@ -4035,15 +4054,15 @@
},
"FaceBook": {
"Count": 0,
"FetchAt": "2024-05-23T10:37:15.267122932+09:00"
"FetchAt": "2024-05-27T13:41:57.03162436+09:00"
},
"Hatebu": {
"Count": 4,
"FetchAt": "2024-05-23T10:37:15.267122932+09:00"
"FetchAt": "2024-05-27T13:41:57.03162436+09:00"
},
"Pocket": {
"Count": 6,
"FetchAt": "2024-05-23T10:37:15.267122932+09:00"
"FetchAt": "2024-05-27T13:41:57.03162436+09:00"
}
},
{
Expand Down Expand Up @@ -20805,7 +20824,7 @@
},
"Feedly": {
"Count": 700,
"FetchAt": "2024-05-23T10:37:15.267122932+09:00"
"FetchAt": "2024-05-27T13:41:57.03162436+09:00"
}
}
]
Original file line number Diff line number Diff line change
Expand Up @@ -342,7 +342,7 @@ Plan: 1 to add, 0 to change, 0 to destroy.
これは`postcondition`が事後チェックであることを反映している例で、データソースやリソースが取得された後で値が評価されていることを如実に表しています。
こうなると `postcondition`で全部チェックしてしまっても良い気もしますが、事後チェックであるか事後チェックであるかを明示するため`precondition`で制御できる箇所は`precondition`で制御するようにしましょう。
こうなると `postcondition`で全部チェックしてしまっても良い気もしますが、事後チェックであるかを明示するため`precondition`で制御できる箇所は`precondition`で制御するようにしましょう。
## さいごに
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
---
title: "Cloudflare連載を始めます & WorkersにPythonをデプロイして動かしてみる"
date: 2024/05/27 00:00:00
postid: a
tag:
- Cloudflare
- Cloudflare Workers
- Python
category:
- Programming
thumbnail: /images/20240527a/thumbnail.jpg
author: 伊藤太斉
lede: "Cloudflareは、インターネット上で運営されている最大のネットワークの1つです。ユーザーは、Webサイトやサービスのセキュリティとパフォーマンスを向上させる目的でCloudflareサービスを利用しています。"
---
<img src="/images/20240527a/CF_logo_stacked_blktype.jpg" alt="" width="1200" height="405" loading="lazy">

ロゴは https://www.cloudflare.com/ja-jp/press-kit/ より引用

こんにちは。TIGの伊藤です。

Cloudflare連載の第1日目とインデックス記事です。

## Cloudflare連載を始めます

CDNやインターネットセキュリティを中心としたサービスプロバイダーであるCloudflareを題材とした連載を開催します。Cloudflareについては技術ブログではこれまで、個人の寄稿で数記事上がっていましたが、連載という形にするのは今回が初めてです。

## Cloudflareとは

Cloudflareは、[公式](https://www.cloudflare.com/ja-jp/learning/what-is-cloudflare/)では以下の様に書かれていました。

> Cloudflareは、インターネット上で運営されている最大のネットワークの1つです。ユーザーは、Webサイトやサービスのセキュリティとパフォーマンスを向上させる目的でCloudflareサービスを利用しています。
上記の様にCloudflare自体でもサービスを持ちつつ、既存のシステムのセキュリティ、パフォーマンスを向上することを目的としているサービス群です。
AWSなどのパブリッククラウドではリージョン、ゾーンという概念がありますが、Cloudflareでは全てエッジネットワークにて構築されており、ユーザが接続する時は一番近い接続点に繋ぎにいき、Cloudflareのサービス、その裏の他のクラウドに接続などをしています。

## 連載日程

今回は初めての連載ということもあり、5人が参加してくれました。内容は初めて触った系の記事もありますが、わずかながら社内の知見も公開されるようなので、ぜひ楽しみにお待ちください。

| 日付 | 寄稿者 | タイトル・ネタ |
| ---- | ----- | ---------- |
| 5/27 | 伊藤太斉 | WorkersにPythonをデプロイして動かしてみる |
| 5/28 | 真野隼記 | Cloudflare D1 を触ってみる |
| 5/29 | 宮崎将太 | Cloudflareにおけるアーキテクチャ選定 |
| 5/30 | 大岩潤矢 | Cloudflare R2とNextCloudで自分だけのクラウドストレージを作ろう |
| 5/31 | 小林弘樹 | Webサイトのメンテナンスイン/アウトを実装 |

※公開順、日程は変わる可能性がございますが、ご了承ください。

----

# Cloudflare WorkersでPythonを使いたい

今から約1ヶ月前、2024/04/02にCLoudflareのアナウンスより、Workersにオープンベータという形でPythonが利用できるようになりました。

https://blog.cloudflare.com/python-workers

本記事の結論をいきなり出しますが、PythonをWorkersで利用するにはオープンベータということもあり、まだまだ制限がありました。ただ、WorkersでPythonを使う、ということに対しては最低限であれば動くというのが分かりました。
個人的には、これまでWorkersのアーキテクチャからJavascriptのみをサポートしていたこともあり、ちょっととっつきづらい部分もありましたが、まだ自分に馴染みのあるPythonが使えるようになったことで言語選択の幅が出たことは喜ばしいことですね。
さて、早速動かせるところまでは動かしてみましょう。

## 必要なもの

事前準備は以下のコマンドで[wrangler](https://developers.cloudflare.com/workers/wrangler/install-and-update/)コマンドを利用できるようにしておきましょう。

```bash
npm install wrangler --save-dev
```

## コマンドを利用してWorkersにPythonをデプロイする

はじめにPythonのプロジェクトを作成しましょう。以下のコマンドから作成します。

```bash
npm create cloudflare@latest

In which directory do you want to create your application?
dir ./cf-python # 作成するディレクトリ名を記載

What type of application do you want to create?
type "Hello World" Worker (Python) # PythonのWorkersプロジェクトを作成

Do you want to use git for version control?
yes git # Gitのバージョンコントロールをするか

Do you want to deploy your application?
yes deploy via `npm run deploy` # Workersに初期プロジェクトをデプロイするか

# ここでブラウザ側で認証が走り、認証後デプロイされる
```

デプロイまで完了すると、以下の画面に遷移します。

<img src="/images/20240527a/スクリーンショット_2024-05-26_21.59.14.png" alt="スクリーンショット_2024-05-26_21.59.14.png" width="1200" height="775" loading="lazy">

この時デプロイされているソースコードは`./src/entry.py`に格納されています。

```py
from js import Response

async def on_fetch(request, env):
return Response.new("Hello World!")
```

ここまででの作業でPythonのアプリケーションが動く様になったので、次はPythonのパッケージを入れて試してみます。

## Pythonのパッケージのサポート

2024/04/02時点でWorkersがサポートしているPythonのパッケージですが、公式の[Packages](https://developers.cloudflare.com/workers/languages/python/packages/)のページに記載があります。しかし、

> Python Workers are in open beta.
You can currently only use built-in packages in local development. Support for deploying packages with a `requirements.txt` file is coming soon.

と書いてある様にPythonの標準パッケージは使えるものの、外部のパッケージについては現時点ではデプロイできない状態です。実際に試してみましたが、エラーとなり、その文面にもまだサポートされていないことが書かれていました。

```requirements.txt
fastapi
```

```bash
# 実行コマンド
wrangler deploy
⛅️ wrangler 3.57.1
-------------------
▲ [WARNING] The entrypoint src/entry.py defines a Python worker, support for Python workers is currently experimental.


Attaching additional modules:
┌─────────┬────────────────────┬──────┐
│ Name │ Type │ Size │
├─────────┼────────────────────┼──────┤
│ fastapi │ python-requirement │ │
└─────────┴────────────────────┴──────┘
Total Upload: 0.06 KiB / gzip: 0.07 KiB

✘ [ERROR] A request to the Cloudflare API (/accounts/xxxxxxxxxxxxxxxx/workers/scripts/yyyyyyyyy) failed.

You cannot yet deploy Python Workers that depend on packages defined in
requirements.txt. Support for Python packages is coming soon. [code: 10021]

If you think this is a bug, please open an issue at:
https://github.com/cloudflare/workers-sdk/issues/new/choose
```

実際に色々動かしてみたかったところではありますが、ネイティブでもっと動かせる時が来たらさらに試してみようと思います。

## まとめ

Cloudflare連載のインデックス記事とWorkersでPythonがオープンベータで使えるようになったのでできるところまで試してみた記事でした。

私が他の記事を見てみた時の違いは、`npm create`コマンドを実行した時に、テンプレでPythonが選べる様になっていたので、わずかながらGAになる様に進んでいそうにも見えました。今後のリリースにも期待ですね!

本日からあと4記事ほど続くCloudflare連載ですが、ぜひ他の記事も読んでみてください!
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added source/images/20240527a/thumbnail.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 84b08f5

Please sign in to comment.