Syntax Error.

[Sy] aws-serverless-express を使ってサーバレス化した API を git で管理する

2019/05/17 (更新: 2019/05/22)

前回の記事で aws-serverless-express を使って API をサーバレス化しました。今回は、それを git で管理する場合にぼくが行った手順をまとめました。

前回の記事の続きになるので、こちらを読んでからの方がわかりやすいと思います。

⇒ [Sy] Express で作った API をまるっとサーバレスにする手順(aws-serverless-express使用)

1. 初期化&除外設定

まず初期化( .git ディレクトリ作成)します。

$ git init

git の管理対象から除外するファイルを .gitignore を新規作成して書いていきます。

$ vim .gitignore
(.gitignore)

node_modules
.env
package.json
cloudformation.yaml
simple-proxy-api.yaml
packaged-sam.yaml

(2019/05/22 追記) packaged-sam.yamlが漏れてたので追記しました。

なぜ除外するか?

node_modulesnpm install 等で作成できるので除外。

.envなどその他のファイルは、 自分の環境に依存した設定が入っているため 除外しています。

バレては困る情報もありますし、他の人の環境でそのまま動かないこともあるので、除外しておくということですね。

※本当は package.json は除外しないことが望ましいのですが、 aws-serverless-express のスクリプトが直接 package.json を書き換えるようになっているため、とりあえずこうしてます。package.jsonに持っている情報を別のところに持っていくなどの方法を探したいと思ってます。

2. 除外したファイルのデフォルト用ファイルを用意する

以下の手順で、除外したファイルの代わりに git で管理するためのデフォルト用ファイルを用意します。

$ git clone https://github.com/awslabs/aws-serverless-express.git ase
$ cp ase/examples/basic-starter/cloudformation.yaml cloudformation_default.yaml
$ cp ase/examples/basic-starter/simple-proxy-api.yaml simple-proxy-api_default.yaml
$ rm -rf ase

$ cp .env .env_default
$ cp package.json package_default.json

なお、package_default.json は、以下のように config 部分を書き換えてください。(YOUR_XXXXX の部分もそのまま同じように貼り付けてください)

(package_default.json)
{
  "config": {
    "s3BucketName": "YOUR_UNIQUE_BUCKET_NAME",
    "region": "YOUR_AWS_REGION",
    "cloudFormationStackName": "YOUR_STACK_NAME",
    "functionName": "YOUR_SERVERLESS_EXPRESS_LAMBDA_FUNCTION_NAME",
    "accountId": "YOUR_ACCOUNT_ID",
    "profile": "YOUR_PROFILE"
  },
・
・
}

なぜデフォルト用ファイルが必要か?

先ほど除外した node_modules 以外の4つのファイルは、リポジトリを clone した時に落ちてこなくなり、必要なファイルがない状態になってしまいます。

それだと困るので、除外する代わりに、コピー元となるデフォルト用ファイルを用意して、そちらを git で管理するようにします。

(clone した人は、デフォルト用ファイルをコピーして名前を変えて、中身を自分の環境に合わせて書き換える、という作業が必要になります)

3. コミット

すべてのファイルをコミットして、完了です。

$ git add .
$ git commit -m "(コメント)"