JavaScript は S3 から提供される Web ページで実行されており、EC2 で実行しているサーバーから REST API にアクセスする必要があります。Web ページとサーバーが同じドメイン (たとえば、example.com) にある場合を除き、これはクロスオリジン リクエストになり、デフォルトではブラウザによって禁止されます。
解決策 1: S3 ページと EC2 サーバーを同じドメインに配置します。S3 では、S3 オブジェクト (Web ページ) を選択したアドレスで利用できるようにする静的 Web サイト ホスティングが可能です。それらと EC2 サーバーを同じドメインのアドレスに配置すると、機能します。
解決策 2: REST API サーバーでクロスオリジン要求を許可します。この EC2 サーバーを制御しているので、それを変更して、他のドメインからのページがサーバーにそのような要求を行うことを許可するよう Web ブラウザーに指示できます。これには、応答にいくつかのヘッダーを設定することが含まれ、通常はサーバーが HTTP OPTIONS 要求にも適切に応答する必要があります。それを始めるには、 CORS 仕様を参照してください。
他の DB オプションについても尋ねます。独自の EC2 サーバーを保持して REST API を提供する場合、同じまたは他の EC2 インスタンスで実行されているか、AWS RDB や AWS DynamoDB などのサービスとしてのデータベース製品のいずれかで、ほぼすべての種類のデータベースを使用できます。ただし、Web ページの JavaScript からデータベースに直接接続する場合は、HTTP API を直接提供し、CORS をサポートするサービスを使用する必要があります。RDB は HTTP API をまったく提供しておらず、DynamoDB は現時点で CORS をサポートしていないようです。そのため、どちらも機能しません。