つかろぐスマートフォン用の表示で見るつかろぐもしかしたらどこかの誰かの役に立つかも...2018-04-05TerraformでS3+CloudFront+ACMなブログ環境を作ってみるterraform半年くらい前にTerraformを触り始めたときにS3+CloudFront+ACMな構成でブログ書く環境を作ったときのメモです。コードもGithubで公開しているので同じような環境がこの記事を見ながら構築できるかもしれません。構成コンテンツをS3にアップロード、フロントにCloudFront(以下CF)を配置してアクセスはCFで受け付けるよくあるパターンですね。ドメインをRoute53で管理していたので既存のゾーンに対してレコードを追加し、ワイルドカードなSSL証明書もACMで取得していたのでそちらをCFに設置して使用します。コンテンツ自体はサイトジェネレーターのJekyllで生成してGithubにプッシュしたタイミングでCircleCIが回ってS3にsyncする感じです。今回はTerraformでの構築の部分にのみざくっり触れます。今回はRoute53で管理しているゾーン内に新たにレコードを追加する想定なので予めゾーンを追加してくださいACMはTerraformから証明書発行が現時点では出来ないので予め作成してください事前準備TerraformのインストールTerraformにさくっと触れると、インフラ構成をコード管理するためのフレームワークです。Codeってやつですね。コードで構成を表現出来るのと、構築されている状態を保持出来るのでとても管理が楽です。terraform公式サイトからダウンロードする場合は以下のリンクからインストーラーをダウンロードしてください。CLIも合わせてインストールします。実際にAWS上にリソースが構築されます。いうファイルにJSONでローカルに出力されますが、これをS3上で管理することで複数人で同じリソースを管理することが出来るようになります。いうバケットを作ってみます。s3://tf-state同様にDynamoDBにもテーブルを作成します。いうカラムをPKにして作成してます。Read/Writeのキャパシティユニットを1にすることで多少ですが料金を下げるようにしています。デフォルト5で作成されると思うのですがそもそもそんなにアクセスするものではないので。ここまでで事前準備は完了です。構築編GithubにTerraformのコードを公開してありますのでCloneしてください。tf-aws-serverless-blog-boilerplateTerraformは可変になる値を変数としてコード外に定義して置けるのですがある程度汎用的に使えるように変数化してあります。