コマンドライン¶
magic-pocketには、pocketで始まるCLIが用意されています。
全てのコマンドは、--stageオプションで対象となるデプロイ環境を指定できます。
以下のコード例は、dev環境を操作する場合です。
pocket status¶
環境の作成状況を確認します。
pocket deploy¶
デプロイします。
具体的には、pocket.tomlに記述がある場合、以下の作業を行います。記述がない場合、何もしません。
- :material-database: NeonへのDB作成
- :simple-awssecretsmanager: SecretsManagerへのNeon DBの接続情報登録
- :simple-amazons3: ストレージ用にS3を作成し権限を設定
- :simple-docker: コンテナイメージを作成しECRへアップロード
- :material-language-javascript: フロントエンドSPAのビルドデータをアップロードするS3を作成
- CF: Lambdaに関わるCloudFormationを登録・更新
- LambdaのIAM Role, SecurityGroup, Function
- API Gateway の LogGroup, Api, ApiGatewayManagedOverrides, Route, Integration, lambda Permission, Certificate, DomainName, RecordSet, ApiMapping
- API Gatewayのhost名のoutput
- CF: SPAに関わるCloudFormationを登録・更新
- CloudFrontのOriginAccessControl, Certificate, CloudFrontFunction, Distribution, RecordSet
pocket django manage COMMAND ARGS¶
任意のdjango management commandを実行します。
# collectstatic を実行
pocket django manage collectstatic --noinput --stage=dev
# migrateを実行
pocket django manage migrate --stage=dev
pocket django storage upload STORAGE¶
ローカルからデプロイ先に、データをsyncします。STORAGEはpocket.tomlのstoragesのキーです(1)。
ローカルはfilesystem、デプロイ先はs3で定義されている必要があります。
[general.django_fallback.django.storages]がローカル用、[awscontainer.django.storages]がリモート用です。このSTORAGESのキーは、そのままsettings.pyのSTORAGESのキー名にもなります。
何のためのコマンド?
大きなファイルを利用する際の、アップロード先を管理するためのコマンドです。
ラムダ環境でファイルを利用したい場合、djangoのSTORAGES経由でS3を使うのが簡単です。
その場合、ローカルでもpathlib.PathではなくSTORAGESを使えば分岐が不要になります。
その状況で、ローカルのSTORAGESとリモートのSTORAGESを同期させるコマンドです。
例えば、システムが正しく動くために、load_booksというコマンドで、books.csvを読み込む必要があるとします。
以下の様にすれば、アップロード先に悩む必要がありません。
pocket.tomlでローカルとデプロイ先のSTORAGESを定義(1)- ローカルで
data/management/books.csvを作成 load_booksコマンドでは、django.core.files.storage.storages['management'].open('books.csv', r)でファイルを読み込み動作確認pocket django storage upload management --stage=devでリモートにデータをuploadpocket django manage load_booksでリモートでも同じデータを読み込む
- 少し下の「pocket.tomlのストレージ設定の例」を見てください
上記のコマンドでは、以下のpocket.tomlが定義されていた場合に、data/managementディレクトリのデータをS3のmanagemtntディレクトリにアップロードします。どちらの環境でも、storages['management']でアクセスできます。
# pocket.tomlのストレージ設定の例
[general.django_fallback.storages]
management = { store = "filesystem", location = "data/management" }
[awscontainer.django.storages]
management = { store = "s3", location = "management" }
pocket resource awscontainer status¶
Lambdaの作成状況を確認します。
pocket resource awscontainer secretsmanager list¶
SecretsManagerの情報を確認します。
# dev環境で必要なsecretの作成状況を確認する例
pocket resource awscontainer secretsmanager list --stage=dev
# 値を表示する場合
pocket resource awscontainer secretsmanager list --stage=dev --show-values
pocket resource awscontainer yaml¶
Lambdaを作るCloudFormationのyamlファイルを確認します。
pocket resource awscontainer yaml-diff¶
Lambdaを作るCloudFormationのyamlファイルの差分を確認します。
すでにLambdaが動いていて、pocket.tomlの設定変更を行った場合に利用します。
pocket resource neon status¶
Neonの作成状況を確認します。
pocket resource s3 status¶
S3バケットの作成状況を確認します。
pocket resource spa status¶
SPAアップロード先S3バケットやCloudFrontの作成状況を確認します。