背景RailsでWebシステムを公開したい時、どこのレンタルサーバを使用していますか?Railsが動作する前提で探すと(PHPと比較して)どうしても高くなってしまい、遊び程度のシステムを作成するにはどうも気が引けます。簡単なWebサービスであればAWSのサーバレスアーキテクチャがかなり安く運用できそうなので、簡単な運用費計算と簡単な動作確認までを記事にまとめました。王道ですが以下3つの構成から成る簡単なWebアプリを作成するとします。大まかな料金表は以下の通り。(日割りされるみたい。超ざっくりですが、皮算用は0.5USD/月程度です。安すぎるけど計算間違えてないかな・・・。計算している人を見ると、やや違うけど、とんでもない金額にはならなそうなのでとりあえず進みます。以下のコマンドでconfigの設定を行う。設定された値は~/.aws/configに保存されている。今回はdefaultという名前のプロファイルが作成された。Lambdaと同様の設定でbundleするために以下コマンドを実行する。ここがうまくいかなくて–developを外したり付けたりディレクトリ毎削除したり順番を変えて実行したりしていたらうまくいった。--deploymentオプションの意味は以下の通りです。pseudo-TTY。ttyは標準入出力となっている端末デバイスの名前を表示するもの。この後S3にデプロイするのですが、実行ユーザーに権限を付与する必要があります。適当なユーザーをAWSコンソールのIAM上で作成し、以下の権限設定を行います。実行ユーザーがデプロイするために付与する権限は以下の通りだそうです。3点目については独自にポリシーを作成する必要があります。[こちら][3]を参考に以下の通り作成しました。]}デプロイ以下コマンドでパッケージとデプロイをします。S3_BUCKET_NAMEには環境に合わせて値を設定してください。packaged-template.ymlプロファイルがdefaultの場合、–profileについては設定しなくて良い。大半の場合が権限不足です。以下からエラーが読めるので、権限を付与します。lesslambda画面で動作確認AWSコンソールのLambdaサービス画面を開くと、作成した関数が存在します。関数の画面を開き、以下の通り設定をしてテストを実行します。lambda画面上の設定(実行ロール)実行ロールを設定する欄があるので、前述の権限を持ったロールを割り当てる(これも前述通り必要な権限はもっと少ないはず)lambda画面上の設定(環境変数)以下2店環境変数を設定します。productionを設定していないと以下のようなエラーが出ます。ここでかなりハマりました。S3のアクセス制限がないとか、ファイル編集権限などを疑い続けてしまいました。MASTER_KEYは/config/master.keyの中身を貼り付けます。lambda画面の右上からテストイベントを作成し、テストを実行します。Railsがとりあえず動く最低限の設定まではできました。権限設定がまだよくわからず、とりあえず時短でやっつけのFull権限という逃げ道をつかってしまいました。深く使えていませんが、以下が便利そうです。不慣れな状態でAWSを触っていたところ、仕組みを知らないと余計にお金がかかってしまいそうな点があったので以下にまとめます。(今回の記事内容とは関係ないけど)スナップショットは取らないように。ME温泉ソムリエエンジニア。サーバ構築からアプリケーションの開発まで手広く対応。