AWS Elastic Beanstalkでアプリケーションを実行していますが、最新のAMIを使用する場合は、新しい環境を作成する必要があるようです。
最新のAMI IDが何であるかを知っていれば、環境設定で更新できます。
最新バージョンのElastic Beanstalk AMIのIDを見つけることができる場所はありますか、さらに良いことに、新しいバージョンがロールアウトされるたびにインスタンスを新しいバージョンに自動的に置き換えることができますか?
AWS Elastic Beanstalkでアプリケーションを実行していますが、最新のAMIを使用する場合は、新しい環境を作成する必要があるようです。
最新のAMI IDが何であるかを知っていれば、環境設定で更新できます。
最新バージョンのElastic Beanstalk AMIのIDを見つけることができる場所はありますか、さらに良いことに、新しいバージョンがロールアウトされるたびにインスタンスを新しいバージョンに自動的に置き換えることができますか?
回答:
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には、これらすべてを行うための規定があります!
AMIを変更しても、ElasticBeanstalkが使用する適切なAMIに変更するようです。適切に動作していないようです。すべてのファイルが欠落しています。それは正しく機能しません。
AMIが更新された新しいElastic Beanstalk環境を開始する必要があると思います。すべてが機能するようにし、環境のURLを交換します。
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を使用できます。
アプリケーションのダッシュボードに移動し、「構成」を見つけて「変更」をクリックします
プラットフォームを選択できるリストが表示されます。そのリストには最新バージョンが示されています。 プラットフォームの選択
AWS EBは、さまざまなプログラミング言語に固有のセットアップを使用します。設定のリストは、ドキュメントhttp://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts.platforms.htmlにあります。
各プラットフォームが使用するAMIバージョンを示す表があります。
しかし、これらの更新を自動的に実行する方法を見つけられませんでした。私は実際に、プラットフォームの変更を確認し、展開する前にテストすることを好みます。
以下の手順を使用して、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で新しいインスタンスを作成することはなく、最新のアプリケーションを新しいインスタンスにデプロイすることもありません。