この記事では、Bitbucket Pipelinesを使用してAWSクラウドにDjangoアプリケーションをデプロイする方法について説明します。 このトピックに興味がある人のために、猫へようこそ。
鉱山に行きましょう!
アプリケーションワイヤフレームを作成する
プロジェクトは典型的なDjangoアプリケーションです。 唯一の違いは、アプリケーション設定が環境変数を通じて取得されることです。 プロジェクトリポジトリはbitbucket上にあります。 同様のものを作成するには、リストから要件を設定します。
zappa==0.45.1 django-rest-swagger==2.1.2 djangorestframework==3.7.3 django-filter==1.1.0 Django==2.0 psycopg2==2.7.3.2 django-storages==1.6.5
ご覧のとおり、REST APIを構築してPostgreSQLに接続するための一般的な依存関係のセット。 次に、一般的なDjangoアプリケーションを作成する手順を実行します。 データベースに接続し、S3に静的データを配置するためのプロジェクト設定設定に追加します。
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage' DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
Zappaは、GatewayおよびLambda APIに基づいたwsgiアプリケーションの展開を簡素化するフレームワークです。 内部では、CloudformationテンプレートジェネレーターとwsgiリクエストへのLambdaイベントアダプターがあります。これにより、従来のアプリケーション操作スキームを使用できます。 テストの最後の仕上げを最終仕上げとして追加します。
pytest==3.3.1 pylint==1.8.1 tox==2.9.1 pytest-django==3.1.2 docstringtest==0.3.0
tox、pylint、およびpytestの構成ファイルを追加します
Zappaの構成
変数のセットを持つJSONまたはYAMLファイルを表します。 私のバージョンでは、Pipelines S3の設定で非表示のバケットに保存され、アーティファクトが作成されるたびにコピーされます。
例を挙げます。
{ "dev1": { "environment_variables": { "RDS_DB_NAME": "dbname", "RDS_USERNAME": "user", "RDS_PASSWORD": "pass", "RDS_HOSTNAME": "host", "RDS_PORT": "5432", "S3_BUCKET": "s3-bucket" }, "aws_region": "us-east-1", "django_settings": "sample.settings", "project_name": "serverless", "runtime": "python3.6", "s3_bucket": "app-bucket", "domain":"example.com", "certificate_arn":"<ACM certificate arn>" } }
プロジェクト設定に関連するすべてのものは、environment_variablesに登録されます。 詳細については、zappaのドキュメントを参照してください。
Bitbucket Pipelinesの構成
私は他の記事にそれが何であるかを知らない人を送ります。 ここでは、パイプライン構成を詳細に検討します。 CI / CDの場合、次のシェルスクリプトを使用します。
このスクリプトは、Debianのbitbucketパイプライン(画像:python:3.6.1)の典型的なコンテナーで実行されます。 Pipelineを使用すると、DockerHubで任意のコンテナを使用できますが、スクリプトの適応はあなたの良心に残ります。
パイプライン構成自体は次のとおりです。
image: python:3.6.1 pipelines: tags: release-*: - step: caches: - pip script: - ./ci.sh prod1 branches: master: - step: caches: - pip script: - ./ci.sh dev1
イメージはコンテナを指し、本番展開はタグによって行われ、ブランチマスターはdev1環境に展開されます。 希望する場合は、残りのブランチに対して個別にテスト実行を追加できます。 すべてがシンプルです。
構成ファイルを追加した後は、ビットパック自体を構成するだけです。 パイプラインをオンにして、環境変数を設定します。

これで、マスターにプッシュしてタグをカットし、一般的にはリポジトリを開発者に提供できます。
秘密の暗号化とCloudfrontの使用のトピック、およびRDS、ACM、IAM、Route53の設定は、舞台裏に残りましたが、これはすでに記事の範囲外です。 興味のある方は、AWSのドキュメントでこれらすべてを見つけることができます。
再び
リポジトリへのリンク