2017-12-12 21 views
0

私はnodejs/express/codingの初心者ですので、これがあまり明確でない場合は謝ります。私は仕事のためにコードチャレンジをしています。AWS S3を使用して静的Express/NodeJSページをホストするにはどうすればよいですか?

私はほとんどのプロジェクトを行っています。チャレンジの一部は、S3上のバケットにアップロードすることです。私はバケツを作りました、それはすべて完了です。私の問題は、バケットのルートフォルダにindex.htmlがある必要があるということです(私は思っています)。すべてのHTMLページ(3つ)はviewsディレクトリの内側にあります。私がindex.htmlをcloud9のルートフォルダに入れようとすると、viewsディレクトリにindex.htmlが見つかりませんでした(明らかに、私が移動して以来)。 viewsディレクトリをルートフォルダに設定することはできますか?

express/nodeJSにルートフォルダ内のすべてのファイルを保存する方法はありますか?または、私のビューフォルダをCloud9のままにして、S3を除いてすべてがそこから実行されるようにする方法がありますか?私は何かを欠いているに違いない。私はS3でこのアプリをホストする方法に関して完全に迷っています。私の最後の手段はここに投稿!助けてくれてありがとう。

答えて

0

注文しましょう。 Amazon S3はクラウドファイルストレージサービスです。また、の静的資産のウェブサイトをホストするためにも使用できます。

私は理解しているので、あなたはエクスプレスアプリケーションでHTMLページをレンダリングしています。これはサーバーサイドレンダリングと呼ばれ、ファイルを提供できるamazon s3とは完全に互換性がありません。

ここで、問題を解決するにはどうすればよいですか(s3を使用することを義務付けられていると考えます)。場合によります。

あなたは急行のみアプリケーションをレンダリングすると、静的な資産を提供するために(ので、何のAPI)を使用していない場合は、いくつかのリファクタリングを検討する必要があります。このような場合には、あなたは基本的にAPIをせずにWebアプリケーションを構築しています。明示は必要ありません。おそらく、あなたはVue.js、React、Angularのようなクライアント側のフレームワークを探しています。より一般的には、にすると、アプリケーションクライアント側をレンダリングする必要があります。

エクスプレスサーバーもapiサーバーとして動作している場合は、プロジェクトを分割する必要があります。一方の側から、どこかに配備されたexpress apiサーバーがあります。反対側からは、Webアプリケーションクライアント側がレンダリングされています。

プリレンダーのようにthisを使用して、エクスプレスアプリケーションから静的資産を生成することもできます。しかし、Web開発の初心者であれば、このオプションを評価しないことをお勧めします。

+0

これは多くの助けとなりました。私は普通のJS/HTML/CSS/jQueryを使っていました。これまでのところ、S3で動作するようになっています....ありがとう! –

+0

私は実際に1つの質問があります。私はsendgrid APIを使用する必要があることを忘れていました。 sendgrid APIを呼び出すためにフォームをコーディングすると言われていますが、nodejを持たない静的サイトの場合はどうすればこのことができますか?私は現在、ベアボーンを実行していますが、NodeJSなしでAPI呼び出しを行うことはできません。純粋なhtml/javascriptを使ってそれを行う方法があるなら、それを聞くことに興味があります。多分これはすべてのトリック笑です。ありがとう! –

+0

クライアント側からAPIコールを行うことができます。これはすべてのウェブサイトが行うことです! Javascriptを使ってajaxを呼び出す方法(またはjQueryを使用していると言っているので、単純にsintaxを利用することができます)」を検索します。 sendgridが認証のためにAPI_KEYを必要とする場合、この鍵のクライアント側を公開すると安全ではありません。しかし、おそらくあなたはAPIキーを必要としないかもしれません。あるいは、必要ならば、チャレンジ目的のためにそれをクライアント側に公開することができます(セキュリティ上の挑戦でない限り:P)。 OUT:あなたは良い答えを役に立つものとしてマークしてください。私があなたを助けたら、私の答えでそれをしてください – Radar155

0

静的ファイルをS3に移動するときは、それに応じて相対パスを設定する必要があります。

viewsディレクトリをルートフォルダに設定できますか?

いいえ、index.htmlがルートで、ルートフォルダからjs/css/images /などのパスを持つファイルをS3に編成します。

注:NodeJSをS3で実行することはできず、S3からの内部Webホスティングを使用して静的コンテンツを配信することを理解することが重要です。

関連する問題