0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【AWS】「置き換えタスクセットのデプロイ」で一向に終わらない時は環境変数をチェックすべし

Posted at

エラー内容

AWS Codedeployを実施したところ、「置き換えタスクセットのデプロイ」が33%のところで止まってしまい一向に進まなくなりました。本記事ではどのような解決したか記載します。

原因

半年ほど前にも、別の原因でこの現象に陥りました。エラーのログが見当たらないのでなかなか苦戦します。。
そのときにいろいろ原因は調査し記載したのですが、いずれでもなかったです。ご参考までに。
【AWS】Codedeployのタイムアウトエラーにより「置き換えタスクセットのデプロイ」が一向に終わらない件の対応方法

今回の原因は、envファイルでした。
デプロイが失敗するとついELBやデプロイグループなどAWSリソースの問題かと気にしてしまうのですが、がっつりソースコードに問題がありました。

ビルドしたソースはFASTAPIのコード。以下config.pyがありました。

config.py
from pydantic import BaseSettings


class Settings(BaseSettings):
    db_user: str
    db_password: str
    db_host: str
    db_port: Union[int, str] = 3306
    db_name: str

    class Config:
         env_file = ".env"

    @sample
    def SQLALCHEMY_DATABASE_URI(self) -> str:
        SQLALCHEMY_DATABASE_URI: str = (f'mysql://{self.db_user}:{self.db_password}@{self.db_host}:'
                                        f'{self.db_port}/{self.db_dbname}')
        return SQLALCHEMY_DATABASE_URI

config.pyについての公式ドキュメントはこちら:Settings in another module

FastAPIアプリケーション内で環境設定や設定情報を管理するためのPythonモジュールです。アプリケーションの設定情報を一元管理するもので、環境変数や.envファイルなどから設定情報を読み込みます。

ビルド時にbuildspec.yaml.envからDB環境変数が渡るようになっていたのですが、その.envdb_userたちを書いていなかったのです...(一旦使わなくなり.envから消してしまっていたため)。

Settingsクラスのdb_userdb_passwordなどの属性は.envファイルから環境変数を読み込んで設定されるため、.envファイルに必要な環境変数が設定されていない場合、これらの属性には値が設定されず、デプロイが失敗してしまったのです。アプリケーションが正しく動作せず、デプロイプロセスが途中で停止してしまうんですね。

解決方法

.envファイルに必要な環境変数を設定することで、デプロイが正常に完了しました。
仮に使用しない環境変数だとしても、Settingsクラスに書いたままの状態で.envから消すとこうなるんですね。AWS CodeDeployが「置き換えタスクセットのデプロイ」中に途中で停止する問題に遭遇した時は、一度環境変数が正しく設定されているか確認するのも大事、、ということですな。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?