6

私のアプリケーションのためにデプロイメントパイプラインを自動化しようとしています。あなたは私が私の展開を自動化するためにcodePipelinecodeBuildを使用しています、見ることができるように Automation ArchitectureAWS codeBuild/codePipeline with serverless framework

:ここでは、自動化アーキテクチャがあり、私が思い付きました。私のバックエンドは、Serverless Frameworkに基づいています。これは、sls deployコマンドを発射する際にラムダ関数をデプロイします。これが理由で、私はcodeDeployを使って従来の展開を行っていませんでした。 buildspec.ymlファイルは次のようになります。

質問1:コマンドsls deployconfig.ymlと呼ばれるファイルに依存

version: 0.1 

phases: 
    install: 
    commands: 
     – apt-get -y update 
     – npm install -g [email protected] 
    build: 
    commands: 
     – cd nj2jp/serverless && npm install 
    post_build: 
    commands: 
     – serverless deploy –verbose 

artifacts: 
    files: 
    – serverless.yml 
    discard-paths: yes 

、私は3質問CodeBuildサーバレスに関してでを持っていますdbパスワードなどの秘密を含んでいます。このファイルはgitにチェックインされません。 codeBuildにconfig.ymlを含める最良の方法は何と思いますか?

質問2:私たちはcodeDeployを使用して、従来のEC2アプリケーションを展開する必要がある場合ロールバックは、AWSで行うことができます。サーバレスの場合、codeDeployを使用していません。また、サーバレスの場合はロールバックの機能もサポートしています。 codePipeelineの中でサーバレスロールバックをどのように活用するのですか?

質問3:プルリクエストが発生したときにコードパイプラインをトリガーします。私はいくつかの投稿が、codePipelineによってサポートされていないと言っていました。しかし、これらの投稿は昨年のものでした.Pull Requestは現在codePipelineでサポートされていますか?

ハックは(正しくないが、作品をあなたからより良い答えが必要です。)回答

回答1:config.ymlファイルは、プライベートS3バケット内に保存することができ、codeBuildに引くことができますpre-build setupの一部として、またはすべての秘密をcodeBuildのEnv変数に追加することができます。私はすべての環境で一貫性を持たせたいので、第二の選択肢は気に入らない。この問題の解決策はどれですか?

回答2:私はこれのためのハックを考えることはできません。あなたからの回答を探しています。

回答3:私はプル要求のcodePipelineをトリガする[APIGateway + Lambda + S3]を使用して、いくつかのブログの記事に出くわしました。しかし、私は、この機能はすぐに使えるものとして提供されなければならないと感じています。この機能のcodePipelineに関する更新はありますか?

答えて

3

質問1

あなたconfig.ymlに固執する場合は、それを動作させるための唯一の方法は、それがバージョン管理されていないので、あなたはすでにやっていることに似てハックすることです。

あなたの環境変数をCodeBuild buildspec.ymlで参照できるEC2パラメータストアに保存することをお勧めします。これらの変数はを使用してserverless.ymlにアクセスできます。

ローカル開発の場合は、実際の環境変数を使用して、config.ymlに格納する必要があります。 direnvのようなツールはこれで素晴らしいです。

質問2

あなたは以前CodeBuildジョブを再実行して手動ロールバックを行うことができます。 CodeDeployのように自動的に行う簡単な方法は考えられません。おそらく、ラムダ関数はデプロイ後のテストを行うことができ、失敗した場合、以前のCodeBuildジョブの再実行をトリガーできます。

質問3

CodePipelinesが単一の枝に結び付けられているので、それはPRの枝に動作させるために、あなたが言及した記事のようなハックを行う必要があります。私はこれを行うにはAPIゲートウェイ + ラムダ + CodeBuild(ノーCodePipeline)を使用してに頼ってきました。

+0

ワンダフルアンサー!!あなたの答えは完全に理にかなっています。好奇心が強い、異なるブランチ(prod、dev&stg)間で環境(秘密)をどのように管理しますか?私は '.env.prod'、' .env.dev'、 '.env.stg'のような環境ごとに明示的な' .env'ファイルを使用しています。これらはすべてgitにチェックインされていません。 –

+1

私の秘密はすべてEC2パラメータストアに保存されています。私の開発者、ステージング、プロダクションではAWSの別々のアカウントを使用しています。だから、私は簡単に同じ変数名を使用して衝突を心配することなく使用することができます。 – dashmug

+0

ああ素敵!しかし、あなたはそれを地元の環境でどのように管理していますか?同じ変数だが異なる値になるようだ。 envファイルもバージョン管理していますか?はいの場合は意味があります。私は、それはプライベートレポのために良いと思います。 –

関連する問題