Amazon Linux ec2インスタンスのブートでAWSに特化したスクリプトとスクリプトを実行しています。これはカスタムAMIイメージですが、Java、Maven、Gradleがインストールされているだけで、Amazon Linuxマシンのものです。Amazon Linux ec2ブートでSpringブートアプリケーションを起動するためのユーザーデータスクリプト
現在私が抱えている問題は、Springブートアプリケーションが格納されているec2インスタンスに、ポート8080のTomcatサーバーを自動的に起動/起動させたいということです。理想的には、これは、AWSを介してインスタンスを起動するときに、サーバーがすでにインスタンスなしで実行されていることを意味します。インスタンス設定に「ユーザーデータ」を追加するとこれが解決すると信じていましたが、起動時にスクリプトが実行されていないようです。 init.dファイルには、ユーザーデータが実行されたことを示すログや、出力をtxtファイルにパイプしたときに作成されたファイルはありません。誰かが似たような経験をしているなら、これにアプローチする方法に関するアドバイスが大好きです。
私は、「ユーザデータ」にロードしていたスクリプトは、テキストのようになります。
<myApp>
は、ビルドコマンドの結果として生成私のアプリのjarファイルである
#!/bin/bash
cd ~/java-service-tier
./gradlew clean build
java -jar build/libs/<myApp>.jar
。
私のプロジェクトでは、Springブートで中間層のJavaサービスアプリケーションを使用して、Amazon RDSでホストされているMySQLデータベースと対話しています。これはGradleで構築されています。次に、サービス層の応答を基にして、サービスレイヤと通信してデータ要求を行い、フロントエンドを角度で操作するWeb層レイヤが存在します。アーキテクチャの設定は問題ありませんが、問題はありませんが、関連性のあるケースについてはいくつかの背景を述べたいと思いました。
ありがとうございます。私はこれらの変更を反映するためにユーザーデータスクリプトを変更しました。インスタンスの起動時にはまだ実行されません。このスクリプトは、JAVA_HOMEが設定されることを期待していますが、ec2インスタンス上のSSHセッション中にすでに行っているので、JAVA_HOMEを設定する必要はありません。 – bang
いいえ、スクリプト内でJAVA_HOMEをエクスポートする必要があります。間違えている。あなたのログインセッションスクリプトは実行されません。何も仮定しないでください。スクリプトを自己完結型にする方がよいでしょう。テストするたびにインスタンスを起動するのではなく、 'curl'または' ec2metadata'を使ってユーザデータを取得し、変数を設定しないでシェルでテストしてください(制限された環境) – helloV
これは#cloud-boothook私のユーザーデータエントリの。これについて私が理解することは、私が望むように、それがユーザーデータをそれぞれの起動を実行させることになるということです。私は問題がサーバーの停止/起動が「起動」を構成しておらず、スクリプトを実行しなかったと仮定しています。環境変数の設定に関しては、これは将来のスクリプト作成のために知っておくと良いことです。助けてくれてありがとう。 – bang