[AWS DVA対策] Codeシリーズ要点まとめ
概要
AWS DVA試験対策用にCodeシリーズの要点をまとめる
CodeBuild
VPC内のリソースへアクセスできない
VPC内へのアクセスを有効にするには、CodeBuild プロジェクト設定の一部として追加の VPC 固有設定情報を指定する必要がある
VPC内にアクセスできたら何が嬉しいのか
- プライベートサブネット上のRDSのデータに対して、ビルドから統合テストできる
- ELBの内側でパブリックでないWEBサーバにアクセスできる
buildspec.yml
buildspecの値を外部から上書き方法
AWS CLI
aws codebuild create-project
- プロジェクトへのアクセス権必要
aws codebuild update-project
- プロジェクトへのアクセス権必要
aws codebuild start-build
- プロジェクトへのアクセス権不要
CodeDeploy
クラメソの記事 がわかりやすい
ソースコード決められた場所に配置するサービス
CodeDeploy Agentがサーバ上で動いている必要がある
appspec.yml
Lambdaを使用する場合は下記を指定できる
- デプロイするLambda関数のバージョン
- 検証として使用される関数
注意
CodeDeploy絡みのLambdaのバージョン管理は、Lambdaのエイリアスではなく*appspec**!!
ECSを使用する場合は下記を指定できる
- ECS サービスの名前と、新しいタスクセットにトラフィックを送信するために使用されるコンテナ名とポート
- 検証として使用される関数
インプレイスデプロイ
実行対象: EC2, オンプレのみ。Lambda, ECSでは使用不可
デプロイグループの各インスタンス上のアプリケーションが停止され、最新のアプリケーションリビジョンがインストールされて、新バージョンのアプリケーションが開始され検証されます。ロードバランサーを使用すれば、各インスタンスがデプロイ中に登録解除され、デプロイ完了後にサービスに復元されるようにすることができます。
インプレイスデプロイのイベントフックを整理
デプロイフックの実行順序
インプレイスデプロイの場合
- ApplicationStop
- BeforeInstall
- AfterInstall
- ApplicationStart
- ValidateService
デプロイ失敗例
エラーコード
- HEALTH_CONSTRAINTS_INVALID (Constraints:制約)
- デプロイ設定で定義されている正常なインスタンスの最小数が利用できないため、デプロイを開始できません。
- デプロイ設定を更新するか、このデプロイグループのインスタンス数を増やすことで、正常なインスタンスの必要な数を減らすことができます。
自動ロールバック失敗
状況
以前のリビジョンに戻るための必要なファイルが取得できない
対応
下記どちらかの対応で解決できる
- 必要なファイルをインスタンスに手動で追加
- 新しいアプリケーションリビジョンを作成
参考
https://dev.classmethod.jp/cloud/aws/best-practice-of-code-deploy-hooks/