2017-04-10 8 views
1

Terraformとそのterraform.tfstateファイルに精通しています。このファイルでは、どのローカルリソース識別子がどのリモートリソースにマップされているかを把握しています。私は.serverlessディレクトリに私のマシンには、CloudFormationテンプレートやラムダコードを含むZIPファイルなどのファイルが含まれているようだと気づいた。サーバーレスフレームワークのバックアップをバックアップする

は、私が作成し、私のラップトップからプロジェクトを展開したとし、サーバレスはラムダ関数arn:aws:lambda:us-east-1:123456789012:function:handleRequest456を指すfooxyz.cloudfront.netをスピンアップ。 fooxyz.cloudfront.netがすでに同じアプリケーションを表していることがわからないので、別のマシン(または私がgit clean自分の作業ディレクトリ)からServerlessを再度実行しようとすると、新しいCloudFrontエンドポイントが起動します。私は内部で保持している状態をバックアップすることを望んでいるので、新しいリソースを作成するのではなく、既存のリソースを変更します。 (Terraformに相当するのは、terraform.tfstateファイルをバックアップすることです)

バックアップを取ってサーバーレスデプロイメント状態を復元したい場合は、どのファイルをバックアップしますか? AWSの場合、CloudFormationテンプレートをバックアップする必要があるようです。ラムダコードはソースから直接生成されているので、私はラムダコードをバックアップしたくありません。しかし、将来的にはAWSだけでなく、CloudFormationテンプレートを可能な限り特別に扱いたいと考えています。

再生成できないファイルのみをバックアップするにはどうすればよいですか?

+0

Serverlessは自動的にCloudFormationテンプレートをS3にバックアップします。バケット名は、_serverless.yml_の 'deploymentBucket'キーを使用して[configured](https://serverless.com/framework/docs/providers/aws/guide/serverless.yml/)にすることができます。しかし、私はこれがAWSの設定をバックアップするだけだと思っていますが、他のプロバイダの状態も保持したいと思います。 –

+0

私はこの質問を理解していません。 serverless.ymlとソースコードは、別のクラウドアカウントにまったく同じソリューションを展開するのに十分なだけです。キーやエンドポイントをハードコーディングする必要はありません。 – Zanon

+1

良い点、私の意図は私が書いたものから明らかではありません。私は今質問を編集中です。 –

答えて

0

あなたが尋ねるのはだと思います私や同僚が別のマシンのgitからサーバーレスコードをチェックアウトしても、同じラムダ関数と同じAPIゲートウェイエンドポイントを引き続き展開して更新できますか?

そしてその答えはイエスです! Serverlessは、ファイル内のすべてのものを追跡します。 serverless destroyを実行しない限り、操作は行われず、新しいラムダまたはapiエンドポイントが作成されます。

チームと私はこの方法を使用しています。すべてのコードをgit repoにコミットし、私たちがチェックアウトして関数または全体をデプロイし、既存の関数セットを適切に更新します。環境ファイルをセットアップすれば、それは本当に心配する必要があります。そしてgitの外に置いておくことをお勧めします。

関連する問題