AWS Elastic Beanstalkで最新のAMIにアップグレードする方法は?


18

AWS Elastic Beanstalkでアプリケーションを実行していますが、最新のAMIを使用する場合は、新しい環境を作成する必要があるようです。

最新のAMI IDが何であるかを知っていれば、環境設定で更新できます。

最新バージョンのElastic Beanstalk AMIのIDを見つけることができる場所はありますか、さらに良いことに、新しいバージョンがロールアウトされるたびにインスタンスを新しいバージョンに自動的に置き換えることができますか?


2
新しい環境を立ち上げ、それが起動するサーバー上のAMI IDを確認しますか?
ceejayoz

2
それは少し苦痛ですよね?
ベンジャミン

前回EB環境をセットアップしたとき、約5分かかりました。Amazon Linux AMIは3か月に1回IIRCでリリースされます。1か月に1.6分で痛みは感じません。
ceejayoz

言い替えさせてください。より良い方法が必要だと感じています。しかし、あなたは正しい、それは大したことではありません。
ベンジャミン

2
彼らは静かにそれらを展開するのではなく、いくつかのリリースノートやフォーラムの付箋にこれらを投稿するべきです。
ケン

回答:


2

AWS Beanstalk環境をアップグレードするための推奨およびサポートされている方法はここに文書化されており、管理されたプラットフォームの更新についてはここで説明されてます。中断のない更新のみを取得すると、AWSがプロセスを管理するため、ダウンタイムが発生しません。

したがって、管理されたプラットフォームの更新はおそらくあなたやGoogleから来ている誰かが望むものであることを繰り返したいと思いますが、Beanstalk環境用に最新のAWSが提供するAMIを知りた​​い場合はAWS CLIでかなり簡単に行うことができます(ありがとうAmazonのAMIでの正しい命名規則に準拠しています)。

ご使用の環境のインスタンスから始めて、現在のAMIを取得するインスタンスを記述します(現在のAMIを既に知っている場合はスキップします)。

aws ec2 describe-instances --instance-ids i-0909613f35ec0ffee --query 'Reservations[*].Instances[*].ImageId' --output text

ami-35290a56

結果のAMI IDを取得して説明します。

aws ec2 describe-images --image-ids ami-35290a56 --query 'Images[*][Architecture, Hypervisor, Name, RootDeviceType, VirtualizationType]' --output json

[
    [
        "x86_64",
        "xen",
        "aws-elasticbeanstalk-amzn-2016.03.0.x86_64-python34-hvm-201603290718",
        "ebs",
        "hvm"
    ]
]

上記の出力を新しいソート済みの入力として使用できますdescribe-imagesが、今回は次の*ようにタイムスタンプをワイルドカード記号に置き換えます。

aws ec2 describe-images --filters 'Name=architecture,Values=x86_64' 'Name=virtualization-type,Values=hvm' 'Name=owner-alias,Values=amazon' 'Name=name,Values=aws-elasticbeanstalk-amzn-*.x86_64-python34-hvm-*' --query 'sort_by(Images[*], &Name)[-1].ImageId' --output text

ami-1be5de78

字句ソートとISO 8601のパワーにより、最新のAMIになりami-1be5de78ます。これは私の例ではです。

aws ec2 describe-images --image-ids ami-1be5de78 --query 'Images[*].Name' --output text

aws-elasticbeanstalk-amzn-2016.09.0.x86_64-python34-hvm-201612200708

繰り返しますが、手作業でこのAMIに変更することはお勧めしません。Beanstalkには、これらすべてを行うための規定があります!


0

AMIを変更しても、ElasticBeanstalkが使用する適切なAMIに変更するようです。適切に動作していないようです。すべてのファイルが欠落しています。それは正しく機能しません。

AMIが更新された新しいElastic Beanstalk環境を開始する必要があると思います。すべてが機能するようにし、環境のURLを交換します。


0

ebに付属している管理された更新機能を使用できますが、これを行うには強化されたヘルスレポートの費用がかかります。または、「eb platform show」コマンドを使用します。ワーカーアプリには、CURRENT = eb platform show your_env_name | sed -n '5p' | cut -d: -f2- | tr -d '[[:space:]]' LATEST = を実行するcronがありますeb platform show your_env_name | sed -n '6p' | cut -d: -f2- | tr -d '[[:space:]]' -次にそれらを比較し、異なる場合はeb clone(デフォルトは新しいバージョン)を使用してからcname swapを使用できます。


0

アプリケーションのダッシュボードに移動し、「構成」を見つけて「変更」をクリックします

プラットフォームを選択できるリストが表示されます。そのリストには最新バージョンが示されています。 プラットフォームの選択

AWS EBは、さまざまなプログラミング言語に固有のセットアップを使用します。設定のリストは、ドキュメントhttp://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts.platforms.htmlにあります。

各プラットフォームが使用するAMIバージョンを示す表があります。

しかし、これらの更新を自動的に実行する方法を見つけられませんでした。私は実際に、プラットフォームの変更を確認し、展開する前にテストすることを好みます。


0

Elastic Beanstalkでサービスを選択します。ダッシュボードに概要が表示され、ダッシュボードの右側にAMIの構成が表示されます。[アップグレードの変更またはAMIの低下]を選択します。この時点で、インスタンスを置き換えます。そのため、バックアップまたはクローンを作成します。


-2

以下の手順を使用して、Beanstalkでホストされている現在のアプリケーションを最新のAmazon Linux AMIに更新できました。

1- AWSコンソールにログインし、Beanstalkポータルに移動します。

2-アプリケーションの構成ページに移動し、「インスタンス」をクリックします。

3- AMI-xxxxxxのようなAMI IDを見つけます。

4- AMI IDを取得してEC2コンソールに戻り、AMIをクリックします。

5-ビューをPublic Imagesに変更し、Beanstalk設定から以前に取得したAMI IDを探します。

6-そのAMIを新しいインスタンスとして起動します。

7-起動すると、インスタンスにログインし、アプリケーションの要件に従ってカスタマイズします。

8-この新しいインスタンスのAMIイメージを作成したいので、適切にすべてを満たしたら。

9-ステップ8で作成された新しいインスタンスAMI IDを取得し、それをBeanstalkアプリケーション構成に適用します。

10-古いインスタンスを削除して、カスタマイズAMIで新しいインスタンスを作成することはなく、最新のアプリケーションを新しいインスタンスにデプロイすることもありません。


1
あなたは質問を誤解したと思います。カスタムAMIを作成して使用する方法は尋ねませんでした。新しい環境を作成するときに適用される最新のデフォルトのElastic Beanstalk AMI IDを確認する方法と、可能であれば、新しいAMIを自動的に適用する方法を尋ねましたAWSによってリリースされたとき。
ベンジャミン14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.