2017-03-29 16 views
1

S3に公開され公開されているリアクションアプリ(SPA)があります。各ビルドの後、index.html静的アセットを手動でアップロードする必要があります。このプロセスを自動化する方法はありますか?ビルド後に静的なWebサイトファイルをS3に自動的にデプロイ

私はのCD(連続展開)をS3に徹底的に検索しました。ここでは、およそSO questionです。

私は徹底した研究のすべての情報を集約しています。私はこれを達成するためのさまざまな方法を含む下記の答えを書いています。

答えて

3

S3のインストールの自動化を行う方法はたくさんあります。

1. AWS SNSとラムダ:

あなたはgithubのpush.So上の任意のAWSサービスをトリガーにしたい場合は、このプロセスは、有用であるが、ここでの処理がされています。ここで私は集まった事がある

  1. github pushはSNSにメッセージをトリガーします。
  2. SNSトピックにサブスクライブされているLambdaが呼び出されます。
  3. ラムダの中で、私はgithubリポジトリをクローンします。
  4. ビルドまたはディストリビューションディレクトリをS3バケットにアップロードするには、AWSのS3 SDKを使用します。ここで上記のプロセスの高レベルのアーキテクチャである:

Automation using SNS & Lambda

このアプローチの欠点は、大規模なレポのクローニングされた時間がかかり、ラムダは、毎秒請求れます。したがって、これは大きなレポに対して高価になる可能性があります。

2トラヴィスは:

トラヴィスは、そのCI(継続的インテグレーション)ライブラリのために知られています。 A .travis.ymlは、統合プロセスにとって不可欠です。

ビルド後にいくつかのテストを行い、成功した場合は、ファイルをS3にアップロードします。そうすれば、このアプローチが最善の方法になります。 Travisはオープンソースプロジェクトでは無料です。

しかし、私はリポジトリからディレクトリを分離し、特定のディレクトリだけをアップロードする方法を見つけることができませんでした。

3. AWSのCLI:

これはS3にファイルをアップロードするための最も安いと最良の方法です。私はこのアプローチを使用しました。私はこの情報をmedium postから得ました。通常

での反応は、package.jsonでスクリプトとして記述されNPMや糸によってトリガされビルドスクリプトをアプリ。ここではS3にファイルをアップロードするためのコマンドです:

aws s3 sync build/ s3://<bucket-name>

私はpackage.jsonでビルドスクリプトの一部として、このスクリプトを追加しました。これは非常に便利で、S3にファイルをアップロードする手作業を自動化しました。

この回答は私の見解に基づいています。何かが間違っている場合、または私が何かを見逃してしまった場合は、お気軽にコメントしてください。

+1

AWS CLIアプローチに同意します。ラムダは最大300秒後にタイムアウトするため、大規模な資産を含むサイトでは最適ではありません。 –

関連する問題