1

APIを使用して AWS Elastic Beanstalk にアプリをデプロイしています。

https://elasticbeanstalk.us-east-1.amazon.com/?ApplicationName=SampleApp
&SourceBundle.S3Bucket=amazonaws.com
&SourceBundle.S3Key=sample.war
...

少し読んだ感想としては、Java デプロイメント.war.zipは がサポートされており ( docs )、それを使用できる.git(ただし、PHP またはeb? docを使用する場合のみ) ということです。

.gitAPI を使用して Python アプリ用のからアプリケーション バージョンを作成できますか? それともzip、サポートされている唯一のタイプですか?

(または、コマンドライン ツールを使用せずに AWS に git push できますか?)

4

1 に答える 1

4

AWS にデプロイするには、次の 2 つの方法があります。

  1. 基本的に S3 から参照される .zip ファイルである API バックエンド。デプロイ時に、インスタンスはいくつかのカスタム スクリプトを解凍して実行します (AMI から、または推奨される方法であるカスタム構成ファイルを介してオーバーライドできます)。AWS Elastic Beanstalk 環境で新しいバージョンを作成してデプロイするには、s3 へのアップロード、アプリケーション バージョンの作成、および UpdateEnvironment の 3 つの呼び出しが必要であることに注意してください。

  2. 次のように機能する git エンドポイント:

    • AWS Elastic Beanstalk DevToolsをインストールし、git リポジトリでセットアップ スクリプトを実行します。
    • 実行されると、セットアップ スクリプトは、特に.git/configサポートするためにパッチを適用します(これは文書化されていません)。git aws.pushgit aws.remote
    • git aws.pushキーを取得し、カスタム URL (git aws.remote) を作成し、git push -f master を実行するだけです
    • AWS がこれを受け取ると (url は基本的<api>/<app>/<commitid>(/<envname>)に .s3 .zip ファイルを (コミットの内容から) 作成し、アプリケーション バージョンが存在<app>する<commitid>場合<envname>は、UpdateEnvironment 呼び出しも発行します。AWS ID はハッシュされ、 URL はすべての AWS 呼び出しと同じですが、ユーザー名/パスワード認証トークンとして送信されます。

(完全なリファレンス ドキュメント)

数か月前にこれを Maven プラグインとして移植しました。このファイルは、それがプレーンな Java でどのように行われるかを示しています。実際には多くのコードをカバーしています (実際にはカスタム git リポジトリを構築するため - jgit を使用してハッシュを計算し、そこにプッシュします)。

私は、バックポートを ant タスクとして行うことを強く検討しています。または、pom.xmlファイルが存在しなくても機能するようにすることで、ユーザーは Maven のみを使用してデプロイを行います。

歴史的には、最初の方法のみがサポートされていましたが、2 番目の方法が重要になってきました。2 番目の方法は実際にははるかに簡単なので (beanstalk-maven-plugin では、3 つの異なるメソッドを呼び出す必要がありますが、単純な git push で 3 つすべてが実行されます)、git ベースのデプロイをサポートし、そのアーキタイプも公開しています (ここにサンプル プロジェクト、特に README.md が表示されます)。

(ところで、.war ファイルを使用している場合、私のElastic Beanstalk プラグインは両方の方法をサポートしています。実際には git を支持しています。これにより、いくつかの増分展開が可能になるからです)

それで、あなたはまだそれを実装したいですか?

読むことをお勧めする 3 つのファイルがあります。

やりたい

  • パイソン?ダルウィッチを探したい
  • C#? powershell バージョンはそれに基づいています
  • ルビー?Linuxはそれに基づいています
  • ジャワ?私のものを使用してください、それはjgitを使用します
于 2013-01-09T11:39:39.080 に答える