Skip to Content

[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では使用不可

デプロイグループの各インスタンス上のアプリケーションが停止され、最新のアプリケーションリビジョンがインストールされて、新バージョンのアプリケーションが開始され検証されます。ロードバランサーを使用すれば、各インスタンスがデプロイ中に登録解除され、デプロイ完了後にサービスに復元されるようにすることができます。

ドキュメント

インプレイスデプロイのイベントフックを整理

デプロイフックの実行順序
インプレイスデプロイの場合

  1. ApplicationStop
  2. BeforeInstall
  3. AfterInstall
  4. ApplicationStart
  5. ValidateService

公式ドキュメント

デプロイ失敗例

エラーコード

  • HEALTH_CONSTRAINTS_INVALID (Constraints:制約)
    • デプロイ設定で定義されている正常なインスタンスの最小数が利用できないため、デプロイを開始できません。
    • デプロイ設定を更新するか、このデプロイグループのインスタンス数を増やすことで、正常なインスタンスの必要な数を減らすことができます。

ドキュメント

自動ロールバック失敗

状況

以前のリビジョンに戻るための必要なファイルが取得できない

対応

下記どちらかの対応で解決できる

  • 必要なファイルをインスタンスに手動で追加
  • 新しいアプリケーションリビジョンを作成

ドキュメント

参考

https://dev.classmethod.jp/cloud/aws/best-practice-of-code-deploy-hooks/