0

AWS EC2 にデプロイされるアプリケーションを開発する必要があります。毎晩のビルドの一環として、コードをローカルで単体テストしてから AWS インスタンスにデプロイし、インターネット経由で機能テストを実行したいと考えています。

理想的な世界では、AWS SDK を使用して適切な AMI を選択し、インスタンスを開始し、SSH でログインし、環境をセットアップし、プログラムを FTP で転送し、ビンゴ! ただし、HTTP プロキシの背後にあります。SSH や FTP を使用できないため、3 つの基本的なオプションを考えました。

1: インスタンスが環境をセットアップし、開始時に (おそらく AWS S3 バケットから) プログラムをダウンロードして実行するように、userData を RunInstanceRequest に追加してみてください。Java では、これは次のようになります。

RunInstancesRequest runInstancesRequest = new RunInstancesRequest()
    .withInstanceType(myType)
    .withImageId(id)
    .withMinCount(min)
    .withMaxCount(max)
    .withSecurityGroupIds(mySecurityGroup)
    .withKeyName(someKey)
    .withUserData(myScript); //add our installation script

RunInstancesResult runInstances = ec2.runInstances(runInstancesRequest);

2: プログラムを VM にローカルにインストールし、ここで説明されているように ec2-import-instance ツールを使用して VM 全体を AWS にインポートします。

3: 飛び跳ねて、より制限の少ないネットワーク環境を要求します。

(1)については、インストールに関する問題をデバッグするのが非常に難しいため、不安を感じています。(2) デプロイするたびに VM 全体の転送と変換が必要であり、(3) 見込みがありません。

これを行う最良の方法を知っている人はいますか?

:D

4

1 に答える 1

1

起動時にリモートインストールスクリプトを自動的にダウンロードして実行する独自のカスタムAMIを作成してみませんか?派手なinit.dスクリプトを作成するか、/ etc / rc.localから単純なシェルスクリプトを呼び出すことができます(Redhatのようなdistoを想定)。これは、RightScaleが行う方法と非常によく似ています。

于 2012-07-20T05:12:50.790 に答える