LoginSignup
13
5

More than 5 years have passed since last update.

amply でチームで開発するときは amplify cli の multienv 版を使おう

Last updated at Posted at 2019-02-09

はじめに

amplify で作ったリソースを Git 管理するさい、何をコミットして何をコミットしないかで悩んだことはありませんか? また、チームの他のメンバーがコミットしたリソースを自分の環境にチェックアウトしたとき、デプロイができなくなった経験はないでしょうか?
そんなときは amplify-cli の beta版 である multienv [1] を試してみましょう。

amplify-cli multienv を使うメリット

  1. デプロイ環境の分離
  2. amplify init 時にコミットしなくて良い資材を .gitignore に自動追加してくれる

私の場合はとりあえず 2番目の目的のためにインストールしました(何を gitignore に追加するべきなのかについて、公式ドキュメントに記載が見つけられなかったので。。こちらの github issue でも multienv を使うようにガイドされています。)。デプロイ環境の分離もできるようなので、これからリソースを作ろうとしている人は multienv 版を試してみることをおすすめします

インストール

@aws-amplify/cli でなく @aws-amplify/cli@multienv をインストールします(注1)。

npm install -g @aws-amplify/cli@multienv

[!] 注1: 公式ドキュメント [1] にもあるとおり、 multienv版をインストールすると、もともとあった amplicy-cli が multienv 版に置き換わります 。既存のプロジェクトに意図しない影響を与える可能性があるので、すでに amplify-cli で環境構築してある場合は注意してください(グローバルでなく、まずはローカルにインストールしてみて試してみるなど)。


サンプルプロジェクトの作成

mkdir amplify-multienv-example
cd amplify-multienv-example
amplify init

普通の amplify-cli と同様、対話的に設定の入力を求められます。
multienv を使った場合の違いとして environment について聞かれます。
ここでは開発環境として dev を指定します。

? Enter a name for the environment dev

すべての質問を入力し終えると、 .gitignore が自動的に作成され、コミットする必要のない資材のパスが追加されています。

.gitignore
#amplify
amplify/\#current-cloud-backend
amplify/.config/local-*
amplify/backend/amplify-meta.json
aws-exports.js
awsconfiguration.json

multienv で amplify init したときのもう一つ違いとして、 team-provider-info.json というファイルが amplify フォルダに作られていることがわかります。

amplify/team-provider-info.json
{
    "dev": {
        "awscloudformation": {
            "AuthRoleName": "amplifymultienvexamp-20190209112419-authRole",
            "UnauthRoleArn": "arn:aws:iam::xxxxxxxxxxxx:role/amplifymultienvexamp-20190209112419-unauthRole",
            "AuthRoleArn": "arn:aws:iam::xxxxxxxxxxxx:role/amplifymultienvexamp-20190209112419-authRole",
            "Region": "ap-northeast-1",
            "DeploymentBucketName": "amplifymultienvexamp-20190209112419-deployment",
            "UnauthRoleName": "amplifymultienvexamp-20190209112419-unauthRole",
            "StackName": "amplifymultienvexamp-20190209112419",
            "StackId": "arn:aws:cloudformation:ap-northeast-1:xxxxxxxxxxxx:stack/amplifymultienvexamp-20190209112419/ce6b1060-2c11-11e9-ade2-0a29b069fc22"
        }
    }
}

amplify リソースを作成したときの Cloudformation stack の情報が記載されていることがわかります。このファイルをメンバーとシェアすることで、同じ CloudFormation Stack に対して push/pull することができるようになります。

注意: AWSアカウントIDなどが記載されているので、リポジトリを Public に公開する場合は上記のファイルはコミットしないようにしましょう

終わりに

これで、複数のメンバーで amplify のプロジェクトを共有することが問題なくできるようになりました。
気が向いたらデプロイ環境の分離についても試してみようと思います。

参考

  1. Multiple environments and team workflows (beta)
  2. amplify/.config should be in .gitignore?
  3. Sharing projects outside the team
13
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
5