Serverless Frameworkと Serverless Fauna Plugin を利用した Fauna の DB 環境を IaC で管理する。
- 実装環境の統一のために VSCode で
devcontainerを利用する。 - AWSアカウントが必要であり、AWS CLIのcredentialが必要になります。
- ホスト環境で設定されている場合は
~/.awsにあるcredential情報をDocker内にマウントするようにしています。
- ホスト環境で設定されている場合は
- Fauna のアカウントをこちらから取得する。
- 既にある場合はスキップしてください。
- アカウントは
GithubとNetlifyのアカウントからも作れますが、Email と Password での作成をしてくださ。GithubとNetlifyのアカウントからだとこのあと CLI からの DB 作成ができなくなります。
fauna cloud-loginを実行します。- 実行すると対話式で入力を求められるます、CLI の他のコマンドを実行する前にログインしておく必要があります。
The endpoint alias prefix (to combine with a region):はそのまま Enter- 既に
cloudという名前の Endpoint があるとThe endpoint alias already exists. Overwrite?と聞かれます。
- 既に
How do you prefer to authenticate? (Use arrow keys)はEmail and Passwordを洗濯してください。Email address:はログイン時の Email を入力します。Password:はログイン時のパスワードを入力します。Endpoints created. Would you like to set one of them as default?と Endpoint が作成されたのでデフォルト Endpoint を選択します。今回はcloudを選択します。Endpoint 'cloud' set as default endpoint.と表示されたら完了です。
fauna create-database fauna-serverlessで DB を作成します。creating database fauna-serverlessと表示されたら作成完了です。
fauna create-key fauna-serverlessでシークレットキーを作成します。secret: *************と表示されているのがシークレットキーになります。
.env.sampleをcp .env.sample .envでコピーします。.envファイルが出来るのでFAUNA_SECRET=に先程のシークレットキーを追記します。
sls deploy [--aws-profile <profile名>]
デプロイするとAWSのCloudFormationにスタックが作られます。
今回はserverless.ymlにAWSリソースを作成するコードは書いてませんが、CloudFormationの状態保存のためにS3が自動作成されます。
sls remove [--aws-profile <profile名>]
リソース削除を行うと、Fauna上のリソースが全て削除されるのと同時にCloudFormationのスタックも削除されます。 このときにS3がちゃんと削除されていることを確認します。
https://github.com/fauna-labs/serverless-fauna https://github.com/fauna-labs/serverless-fauna-example