AWSのAmplifyが、単なるウェブサイト公開にも便利だった話

もうタイトルで全てなのですが。

AWSには、ウェブ・アプリおよびモバイル・アプリの開発と公開とを最速かつ簡単にするフレームワークとして、https://aws.amazon.com/jp/amplify/ が提供されています。この中身は、AWSが提供するいくつものサービスを、開発向けに機能として使えるように束ねたものと言えます。

単なるウェブサイトの公開にかかる手間

amplifyは、単なるウェブサイトの公開に使っても便利でした。 AWSで、ウェブサイトを公開する場合:

  • まずS3バケットを作り、それをCloudFrontにつなげて公開して、
  • カスタム・ドメインで公開したい場合はRoute53でドメインを管理して、そこからCNAMEでCloudFrontにつなげて、
  • さらにhttpsもサポートしたいならばAWSのSSL証明書発行をつける、 という手順を踏みます。

Amplifyの手動デプロイでウェブサイト公開

Amplifyのコンソールだと、まず空のプロジェクトを作ります。この時点で、Amplifyが内部で、S3のバケット作成とCloudFrontの設定が完了した状態にしてくれます。デプロイは、手動デプロイに設定します。こうしておくと、コンソールで、index.htmlを含むファイル一式をZIPアーカイブにしたものをドロップすれば、AWS側で解凍してウェブとして公開してくれます。ドメイン名、サブドメイン、SSL証明書の設定も、コンソールから設定ができます。

Amplifyでかかる料金

Amplifyの課金は、ウェブアプリのビルド時間と、コンテンツのストレージ、そしてインターネットへの転送料金分です。ビルドは、4 vCPUで7GBメモリのDockerイメージで走っていました。おそらくデプロイの計算量やコンテンツの保持は無視できるほど小さいものでしょう。残るのはインターネットの転送料ですが、これは、地域の区別なく1GBあたり0.15ドルとあります。CloudFrontのインターネット外部転送量が、米国だと0.7ドルくらい、インドだと0.17ドルくらいとありますから、Amplifyの転送量は、CloudFrontの最も高い料金より少し下くらいに設定されていると思っておけばよさそうです。

もちろんウェブ・アプリにも便利

Amplifyは、もちろんウェブアプリにも便利です。アプリというと商業的開発のイメージが浮かぶかもしれませんが、意外と使っているものです。

例えば、私のブログサイトは、hexoというNode.jsを使う静的ウェブ生成ツールを使っています。また仕事で、簡単なデモンストレーションのためのウェブ・サイトを作る必要があるときに、私はウェブでそれなりの見た目の画面が作れないのですが、IonicというNode.jsを使いウェブ・アプリケーションの開発フレームワークを使い、そのほぼテンプレートなプロジェクトにちょっとテキストや画像を入れて、それらしい画面を作っています。

私が作るブログもデモサイトも、Ionicなどを使っていてもバックエンドを使わない単なる静的ウェブ・コンテンツでしかないので、Amplifyの手動デプロイでも十分です。ですが、わかりきった作業をするのも手間なので、ソースのレポジトリからデプロイする設定にしておくのもいいかもしれません。ローカルでビルドして、S3にrsyncしてもいいのかもしれませんけど。

Amplify本来の使い方なので、ドキュメントを見ながらやれば、できるでしょう。気をつけるのは、Amplifyの最初の設定で、どのフォルダにindex.htmlをはじめとするファイル一式が生成されるフォルダを設定する"dist"の設定が正しいことを確認すること、何か特別なリソースファイルを使う場合は、Amplifyのリダイレクト設定で、jpgやらpngやらの拡張子がたくさん並んでいる設定のところに、その特別なリソースファイルの拡張子も追加しておくこと、くらいだと思います。