5
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?

More than 1 year has passed since last update.

はじめに

DomainのDNSレコードを管理とCDNサービスとしてCloudflareを使い始めました。便利、早いそして無料プランがあるのはCloudflareに関して印象です。今回に新規サービス:CloudflareWorkersを紹介します。

Document: https://workers.cloudflare.com/

CloudflareWorkersとは

CloudflareWorkersではServerlessな実行環境でJavaScriptのコードを実行することができます。デプロイしたコードはある特定の場所にあるデータセンターのサーバに保存されるのではなく世界中に分散するCDNのエッジにデプロイされるため世界中のどこからアクセスしても高速に応答することができます

CloudWorkerの無料プラン

Screenshot 2022-12-20 230527.png

無料プランを見ると小さいサービスについては十分です。

CloudflareWorkersで出来ること

  • JavaScriptのコードをデプロイするだけで、サーバーサイド機能が構築できる
  • 負荷に応じて自動的にスケーリングされ、常に安定して処理される
  • 常時起動されているわけではなく、呼び出しに応じて起動される
  • 使用量に応じた従量課金ではあるが、ある程度までは無料で使える

活用の仕方次第で色々出来ることでしょう。
CloudflareWorkersの活用方法は、公式サイトにてexamplesがあるので紹介します。\

Example: https://developers.cloudflare.com/workers/examples/

Return JSON

addEventListener('fetch', event => {
  const data = {
    name: 'クイ・ホアン',
    company: 'リンクバル'
  };

  const json = JSON.stringify(data, null, 2);

  return event.respondWith(
    new Response(json, {
      headers: {
        'content-type': 'application/json;charset=UTF-8',
      },
    })
  );
});

Screenshot 2022-12-20 232120.png

JSONを返すできるのでAPIを構築することができます。

Return HTML

const html = `<!DOCTYPE html>
<body>
  <h1>おはようございます。</h1>
  <p>私はクイです。</p>
  <p>よろしくお願いいたします。</p>
</body>`;

async function handleRequest(request) {
  return new Response(html, {
    headers: {
      'content-type': 'text/html;charset=UTF-8',
    },
  });
}

addEventListener('fetch', event => {
  return event.respondWith(handleRequest(event.request));
});

Screenshot 2022-12-20 232534.png

JSONだけではなくHTML版も返すことができるのでStaticWebとして利用できる。

Redirect request to other domain

const base = 'https://machicon.jp';
const statusCode = 301;

async function handleRequest(request) {
  const url = new URL(request.url);
  const { pathname, search } = url;

  const destinationURL = base + pathname + search;

  return Response.redirect(destinationURL, statusCode);
}

addEventListener('fetch', async event => {
  event.respondWith(handleRequest(event.request));
});

..........

上記はCloudflareWorkersのサンプル利用できりケースです。

終わりに

CloudflareWorkersはServerlessサービスです、利用する際サーバーに関して心配しない、コードだけ集中するのみです。そして「十分」無料プランがあります。コードがCDNのエッジにデプロイされるたので世界中のどこでもアクセススピードが遅くになりません。

5
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
5
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?