153

.NET MVCアプリケーションを開発し、AWSで遊んで、VisualStudioToolkitを介してデプロイし始めました。ツールキットのElasticBeanstalkオプションを使用してアプリケーションを正常にデプロイしました。

ツールキットを使用して.NETアプリをAWSにデプロイするためのチュートリアルを調べていたときに、ElasticBeanstalkとCloudFormationの両方を使用してデプロイするためのチュートリアルがあることに気付きました。これら2つの違いは何ですか?

私の知る限り、どちらも基本的に同じことを行っているようです。つまり、アプリケーションをAWSクラウドにデプロイするのが簡単になります(EC2インスタンス、ロードバランサー、自動スケーリングなどのセットアップ)。両方を読んでみましたが、同じように聞こえる流行語以外は何も得られないようです。AWSのWebサイトで、この正確な質問に答えるはずのFAQを見つけましたが、よくわかりません。

どちらかを使用する必要がありますか?両方?

4

7 に答える 7

282

それらは実際にはかなり異なります。Elastic Beanstalkは、開発者の生活を楽にすることを目的としています。CloudFormationは、システムエンジニアの生活を楽にすることを目的としています。

Elastic Beanstalkは、AWSのIaaSサービスの上にあるPaaSのようなレイヤーであり、基盤となるEC2インスタンス、Elastic Load Balancer、自動スケーリンググループなどを抽象化します。これにより、取引を望まない開発者にとって非常に簡単になります。すべてのシステムを使用して、アプリケーションをAWSにすばやくデプロイします。これは、Heroku、EngineYard、Google App Engineなどの他のPaaS製品と非常によく似ています。ElasticBeanstalkを使用すると、基盤となる魔法がどのように機能するかを理解する必要はありません。

一方、CloudFormationは自動的に何もしません。これは、デプロイに必要なすべてのリソースを巨大なJSON/YAMLファイルで定義するための単なる方法です。そのため、CloudFormationテンプレートは、実際には2つのElastic Beanstalk環境(本番環境とステージング)、2つのElasticCacheクラスター、DynamoDBテーブル、そしてRoute53の適切なDNSを作成する可能性があります。次に、このテンプレートをAWSにアップロードし、立ち去ります。45分後、すべての準備が整い、待機しています。プレーンテキストのJSON/YAMLファイルなので、ソース管理に貼り付けることができます。これは、アプリケーションのデプロイをバージョン管理するための優れた方法を提供します。また、別の地域にすばやく展開できる、繰り返し可能な「既知の良好な」構成を確保できます。

于 2013-01-20T21:53:02.430 に答える
81

標準の.NETWebアプリケーションの迅速な展開を開始するには、 ElasticBeanstalkが最適なサービスです。

アプリサービスの比較グラフィック

AWS CloudFormation:「テンプレートドリブンプロビジョニング」

AWS CloudFormationを使用すると、開発者とシステム管理者は、関連するAWSリソースのコレクションを簡単に作成および管理し、それらを整然とした予測可能な方法でプロビジョニングおよび更新できます。

CloudFormation(CFn)は、既存のAWSAPIを超える軽量で低レベルの抽象化です。静的なJSON/YAMLテンプレートドキュメントを使用して、AWS APIでのCRUD操作に対応する一連のリソースEC2インスタンスS3バケットなど)を宣言します。

CloudFormationスタックを作成すると、CloudFormationは対応するAPIを呼び出して関連するリソースを作成し、スタックを削除すると、CloudFormationは対応するAPIを呼び出してそれらを削除します。ほとんど(すべてではありません)のAWSAPIがサポートされています。

AWS Elastic Beanstalk:「Webアプリを簡単に」

AWS Elastic Beanstalkは、 Apache、Nginx、Passengerなどの使い慣れたサーバー上でJava.NETPHPNode.jsPythonRubyGoDockerで開発されたWebアプリケーションとサービスをデプロイおよびスケーリングするための使いやすいサービスです。 、およびIIS。

コードをアップロードするだけで、Elastic Beanstalkが、容量のプロビジョニング、負荷分散、自動スケーリングからアプリケーションの正常性の監視まで、デプロイメントを自動的に処理します。

Elastic Beanstalk(EB)は、 Herokuと同様の範囲で、Webアプリケーションをホストするための高レベルの管理された「サービスとしてのプラットフォーム」(PaaS)です。EBは、低レベルのAWSリソースを直接処理するのではなく、ウェブインターフェースを使用してアプリケーション環境を作成し、アプリケーションが使用するプラットフォームを選択し、ソースバンドルを作成してアップロードし、残りをEBが処理するフルマネージドプラットフォームを提供します。

EBを使用すると、アプリケーション環境を監視し、アプリケーションの新しいバージョンをデプロイするためのあらゆる種類の組み込み機能を利用できます。

内部的には、EBはCloudFormationを使用して、アプリケーションのさまざまなAWSリソースを作成および管理します。アプリケーションとともにデプロイされたEB構成ファイルにCloudFormationリソースを追加することにより、デフォルトのEB環境をカスタマイズおよび拡張できます。

結論

アプリケーションがElasticBeanstalkでサポートされているプラ​​ットフォームの1つを使用する標準のWeb層アプリケーションであり、アプリケーションに管理が容易で拡張性の高いホスティングが必要な場合は、ElasticBeanstalkを使用してください。

もし、あんたが:

  • アプリケーションのすべてのAWSリソースを直接管理したい。
  • インスタンスのプロビジョニングまたはデプロイプロセスを管理または大幅にカスタマイズしたい。
  • ElasticBeanstalkでサポートされていないアプリケーションプラットフォームを使用する必要があります。また
  • 高レベルのElasticBeanstalk機能は必要ありません。

次に、CloudFormationを直接使用し、ElasticBeanstalkの追加された構成レイヤーを避けます。

于 2017-01-04T17:45:46.690 に答える
18

クラウドフォーメーションは、AWSサービスをデプロイできるようにするサービスです。必要なサービスを説明するテンプレートファイルを作成します。そのテンプレートをデプロイすると、CloudFormationはリソースを「パッケージ」として作成します。テンプレートで定義したすべてのリソースは、一緒に開始および終了されます。クラウドフォーメーションで作成できるリソースのタイプの例は、S3、EC2インスタンス、AutoScaling、DynamoDbなどです。EC2の場合、クラウドフォーメーションでは「cfn-init」スクリプトを利用することもできます。これをテンプレートと組み合わせて使用​​して、インスタンスをブートストラップすることができます。

Elastic Beanstalkは、クラウドフォーメーションテンプレートとsciptsを使用して次のことを行います。1。ロードバランサーと自動スケーリンググループを作成します。2。コードをS3にコピーします。3。Ec2インスタンスをブートストラップしてS3からコードをダウンロードしてデプロイします。

クラウドフォーメーションはEBほど使いやすいものではありませんが、EC2インスタンス以外のリソースを作成したり、cfn-initスクリプトの方法を制御したりできるため、はるかに強力です。

于 2013-01-20T22:02:07.870 に答える
11

注目に値する他の違いがあります。Elastic Beanstalkは、単一のアプリのコンテナーとして設計されています。私はいくつかのウェブサイトとサービスのセットを持っていますが、beanstalkを使用して複数のウェブサイトをデプロイすることは非常に困難であり、何度か試みた後、AWSは、柔軟性が高いため、この状況でクラウド形成を使用するようにアドバイスされました。AWSクラウド形成のブートストラップと実行中のサイトの更新に関する非常に役立つ記事がここにあります。これはAWSページよりもはるかに明確です。VSからS3に保存されているクラウド形成テンプレートに直接デプロイして、Beanstalkのように自動更新できるかどうかをまだ検討しています...

于 2013-12-23T09:23:39.233 に答える
3

これらのサービスは、相互に補完するように設計されています。AWS Elastic Beanstalkは、クラウドにアプリケーションを簡単にデプロイして実行するための環境を提供します。開発者ツールと統合されており、アプリケーションのライフサイクルを管理するためのワンストップエクスペリエンスを提供します。AWS CloudFormationは、幅広いAWSおよびサードパーティのリソースのための便利なプロビジョニングメカニズムです。既存のエンタープライズアプリケーション、レガシーアプリケーション、さまざまなAWSリソースを使用して構築されたアプリケーション、コンテナベースのソリューション(AWS Elastic Beanstalkを使用して構築されたものを含む)など、さまざまなタイプのアプリケーションのインフラストラクチャのニーズをサポートします。

AWS CloudFormationは、AWSリソースタイプの1つとしてElasticBeanstalkアプリケーション環境をサポートしています。これにより、たとえば、AWS Elastic BeanstalkでホストされるアプリケーションをRDSデータベースとともに作成および管理して、アプリケーションデータを保存できます。RDSインスタンスに加えて、サポートされている他のAWSリソースもグループに追加できます。

于 2020-02-22T15:01:46.553 に答える
2

Elastic Beanstalkは、容量プロビジョニング、負荷分散、自動スケーリングから、アップロードしたコードに基づくアプリケーションヘルスモニタリングまで、デプロイを自動的に処理します。CloudFormationは、JSONスクリプトを介してクラウド環境全体をデプロイするように設計された自動プロビジョニングエンジンです。

于 2018-01-15T06:15:24.410 に答える
0

Beanstalk:開発者がシステムではなくコードのみを管理できるようにします

クラウド形成:システムエンジニアがすべてを簡素化し、簡単にします

開発者または開発チームが迅速なMVPテストを探している場合、最良のオプションはBeanstalkを使用して迅速にデプロイし、チェックすることです。

AWSの移行が発生すると、システムエンジニアがプロビジョニングに関与し、クラウドフォーメーションが大いに役立ち、よりきめ細かい制御を提供します。

于 2022-01-10T00:49:25.703 に答える