Elastic Beanstalk
バックエンドは実は #CloudFormation 。
なので、エラーが発生した際には CloudFormation のログを見るなどすると良い。
#CodePipeline とも連携ができる。
CLIデプロイコマンド
eb deploy
S3にアップ? zip でまとめる?
ebextensionsディレクトリ
AWSリソースのカスタマイズを行う際に必要となるやつ。
EC2でシェルスクリプトとか動かすときにもこれを使う。
ここに *.config を配置することで認識される。
フォーマットは JSON / YAML。公式としては YAML を推している。
ロードバランサーとかオートスケールとかの設定はここに書くことになる。
ElastiCache, CloudWatch, SNS, SQS, DynamoDB とかも。コンピューティングリソース以外は全部と思えばいいのか。
X-Ray 有効化
ebextensions でできる。
Elastic Beanstalk コンソールでも設定できる。
デプロイ戦略
Rolling
よくある1つずつ入れ替えていくやつ
新旧が混在する時間がある。ダウンタイムはないはず。
Rolling with additional batch
最初に新しいバージョン分をバッチで起動しておき、容量を確保する。
それ以外は Rolling に準拠、だと思う
All at once
一気に全部入れ替える。かかる時間は最も小さい。
ダウンタイムが発生する。
Immutable
新バージョンのインスタンスを全ての台数分起動しておいて、準備可能になったらゴッソリ入れ替える。
新旧を混在させず、ダウンタイムもなくしたい場合に。
#Blue-Greenデプロイメント
DNSスイッチを組み合わせるプラクティスのこと
デプロイ戦略とは異なり、Elastic Beanstalk にもこの設定は存在しない
定期タスク(スケジュール)
cron.yaml を作成する
環境定義
env.yaml を作成する
環境名・ソリューションスタック・環境リンクを設定するのに使える
ライフサイクルポリシー
設定することで古いバージョンを自動で削除する運用ができる。
ワーカー環境
アプリケーション本体とは別?で、長時間かかる処理をオフロードすることができる
暗黙的にSQSが作成され、活用される
https://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/concepts-worker.html
https://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/using-features-managing-env-tiers.html
アプリケーションコードのパッケージング
zip ファイルにしておけば eb deploy でできる
アプリケーションバージョン
ソースコードを更新してアップロードするたびに向上する番号
ソースコードとの対応であり、動作中のアプリケーションに直接の影響はない
ライフサイクル管理で古いやつを消したりできる
本番・ステージング・開発などのステージ生成
環境 設定で分けることができる。
依存関係解決の高速化
CodeDeployでまとめてバンドルすることで早くなるらしい(よくわからん)