Elastic Beanstalk を使用して AWS にデプロイする

Elastic Beanstalk を使用すると、アプリケーションを実行するインフラストラクチャについて心配することなく、AWS Cloud でアプリケーションを迅速にデプロイおよび管理できます。Elastic Beanstalk は、選択肢や管理性を制限することなく、管理の複雑さを軽減します。アプリケーションをアップロードするだけで、Elastic Beanstalk は容量のプロビジョニング、ロード バランシング、拡張、およびアプリケーションの健康状態の監視の詳細を自動的に処理します。

始める前に

  • アプリケーションへのデプロイや S3 バケットへのアーティファクトのアップロードを行うための十分な権限が構成されている IAM ユーザー。

  • Elastic Beanstalk アプリケーションと環境が構成されていること。

  • デプロイメント アーティファクトがコピーされる S3 バケットをセットアップしていること。S3 バケットの名前は次のようになります: 
    "<application name>-elasticbeanstalk-deployment" となります。ここで <application name> は Elastic Beanstalk アプリケーションの名前です。

手順

  1. Elastic Beanstalk パイプのサンプル リポジトリのクローンを作成します。

  2. AWS 資格情報を Bitbucket Pipelines に追加します。リポジトリで [設定] に移動し、[パイプライン] で [リポジトリ変数] を選択し、次の変数を追加します。

    基本的な用途のための変数 

    • AWS_ACCESS_KEY_ID (*): ご使用の AWS アクセス キー。

    • AWS_SECRET_ACCESS_KEY (*): ご使用の AWS 秘密アクセス キー。セキュアな変数として保存されている必要があります。

    • AWS_DEFAULT_REGION (*): AWS リソースを含むリージョンの AWS リージョン コード (us-east-1、us-west-2 など)。詳細については、AWS リソースを含むリージョンの AWS リージョン コード (us-east-1、us-west-2 など) を参照してください。詳細については「リージョンとエンドポイント」を確認してください。

    • APPLICATION_NAME (*): Elastic Beanstalk アプリケーションの名前。

    • ENVIRONMENT_NAME (*): 環境名。

    • ZIP_FILE (*): デプロイするアプリケーション ソース バンドル (zip、jar、war)。

    • (*) = 必須の変数。

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 image: atlassian/default-image:2 pipelines: default: - step: name: "Build and Test" script: - pytest test/test.py - zip application.zip Dockerfile application.py cron.yaml Dockerrun.aws.json # Define an artifact to pass the zip file to the next step artifacts: - application.zip - step: name: "Deploy to Production" # Track production environments builds using deployments. deployment: production script: - pipe: atlassian/aws-elasticbeanstalk-deploy:0.5.0 variables: AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY: $AWS_SECRET_ACCESS_KEY AWS_DEFAULT_REGION: "us-east-1" APPLICATION_NAME: "application-test" ENVIRONMENT_NAME: 'production' ZIP_FILE: "application.zip"

既定では、新しいアプリケーション リビジョンにバージョン ラベルが設定されます。

"<アプリケーション名>-<bitbucket ビルド番号>-<短いコミット ハッシュ>" ただし、この内容は VERSION_LABEL 変数を使用して変更できます。

結果

これで、新しいバージョンのアプリケーションを Elastic Beanstalk にデプロイするようにセットアップできました。

高度な使用

高度なユースケースでは、build once and deploy many アプローチをおすすめします。複数の環境がある場合、COMMAND 変数を使用して、CI/CD ワークフローを別の操作 / パイプに分割します。

  • COMMAND: 'upload-only': アーティファクトをアップロードし、Elastic Beanstalk にバージョンをリリースします。

  • COMMAND: 'deploy-only': 指定したバージョンを対象の環境にデプロイします。

Upload-only 用の変数

  • AWS_ACCESS_KEY_ID (*): ご使用の AWS アクセス キー。

  • AWS_SECRET_ACCESS_KEY (*): ご使用の AWS 秘密アクセス キー。 

  • AWS_DEFAULT_REGION (*): AWS リソースを含むリージョンの AWS リージョン コード (us-east-1、us-west-2 など)。詳細については「リージョンとエンドポイント」を確認してください。

  • APPLICATION_NAME (*): Elastic Beanstalk アプリケーションの名前。

  • COMMAND (*): デプロイ中に実行されるコマンド。有効な値は allupload-onlydeploy-only です。初期設定: all

  • ZIP_FILE (*): デプロイするアプリケーション ソース バンドル (zip、jar、war)。

  • S3_BUCKET: アーティファクトを格納するために Elastic Beanstalk で使用されるバケット名。初期設定では次のとおりです。${APPLICATION_NAME}-elasticbeanstalk-deployment}

  • VERSION_LABEL: 新しいアプリケーション リビジョンのバージョン ラべル。既定では次のとおりです。${ENVIRONMENT_NAME}_${BITBUCKET_COMMIT:0:8}_YYYY-mm-dd_HHMMSS)

  • DESCRIPTION: 新しいアプリケーション リビジョンの説明。既定: パイプラインの結果ページを示す URL。

  • DEBUG: 追加のデバッグ情報を有効化します。既定: false

    (*) = required variable.

アーティファクト application.zip, をアップロードし、Elastic Beanstalk でバージョン deploy-$BITBUCKET_BUILD_NUMBER-multiple を作成します。

1 2 3 4 5 6 7 8 9 10 pipe: atlassian/aws-elasticbeanstalk-deploy:0.5.0 variables: AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY: $AWS_SECRET_ACCESS_KEY AWS_DEFAULT_REGION: $AWS_DEFAULT_REGION APPLICATION_NAME: 'application-test' COMMAND: 'upload-only' ZIP_FILE: 'application.zip' S3_BUCKET: 'application-test-bucket' VERSION_LABEL: 'deploy-$BITBUCKET_BUILD_NUMBER-multiple'


Deploy-only 用の変数

  • AWS_ACCESS_KEY_ID (*): ご使用の AWS アクセス キー。

  • AWS_SECRET_ACCESS_KEY (*): ご使用の AWS 秘密アクセス キー。 

  • AWS_DEFAULT_REGION (*): AWS リソースを含むリージョンの AWS リージョン コード (us-east-1、us-west-2 など)。詳細については「リージョンとエンドポイント」を確認してください。

  • APPLICATION_NAME (*): Elastic Beanstalk アプリケーションの名前。

  • COMMAND (*): デプロイ中に実行されるコマンド。有効な値は allupload-onlydeploy-only です。初期設定: all

  • ENVIRONMENT_NAME (*): 環境名。

  • ZIP_FILE (*): デプロイするアプリケーション ソース バンドル (zip、jar、war)。

  • S3_BUCKET: アーティファクトを格納するために Elastic Beanstalk で使用されるバケット名。初期設定では次のとおりです。${APPLICATION_NAME}-elasticbeanstalk-deployment}

  • VERSION_LABEL: 新しいアプリケーション リビジョンのバージョン ラべル。既定では次のとおりです。${ENVIRONMENT_NAME}_${BITBUCKET_COMMIT:0:8}_YYYY-mm-dd_HHMMSS)

  • WAIT: デプロイメントの完了を待機するかどうか。既定: false

  • WAIT_INTERVAL: デプロイメントの完了までの間のポーリング間の待機時間 (秒単位)。既定: 10

  • DEBUG: 追加のデバッグ情報を有効化します。既定: false

    (*) = required variable.

バージョン deploy-$BITBUCKET_BUILD_NUMBER-multiple を環境 production にデプロイし、デプロイが完了するまで待ちます。

1 2 3 4 5 6 7 8 9 10 - pipe: atlassian/aws-elasticbeanstalk-deploy:0.5.0 variables: AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY: $AWS_SECRET_ACCESS_KEY AWS_DEFAULT_REGION: $AWS_DEFAULT_REGION APPLICATION_NAME: 'application-test' COMMAND: 'deploy-only' VERSION_LABEL: 'deploy-$BITBUCKET_BUILD_NUMBER-multiple' ENVIRONMENT_NAME: 'production' WAIT: 'true'

その他のヘルプ