Bitbucket is getting a new navigation

We’re rolling out these changes, so the documentation may not match your experience in the Bitbucket Cloud app. Read about the new Bitbucket navigation

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

これらのオプションを使用すると、AWS クラウドへのデプロイを簡略化できます。このアプローチでは、ユーザーに代わってパイプラインが維持されるため、メンテナンスが少なく済みます。 

はじめる前に

To deploy your application with AWS CodeDeploy pipe you’ll need to have:

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

  • An EC2 instance configured for CodeDeploy : Working with Amazon EC2 Instances for CodeDeploy.

  • You have configured a CodeDeploy Application and Deployment Group. Here is a simple tutorial from AWS: Create an Application and Deployment Group.

  • デプロイメント アーティファクトがコピーされる AWS S3 バケットをセットアップしていること。既定では <application_name>-codedeploy-deployment という規則に従います。注: バケット名は DNS 準拠である必要があります (バケット名には大文字が含まれてはならず、小文字または数字から始まる必要があります)。

手順

  1. Clone the AWS CodeDeploy pipe example repository.

  2. AWS 認証情報を Bitbucket Pipelines に追加します。リポジトリで、左側のサイドバーの [リポジトリ設定] を選択します。

  3. [Pipelines] で [リポジトリ変数] を選択し、次の変数を追加します。

これらの変数は、デプロイ環境、リポジトリ、またはワークスペース レベルで定義できます。

共通の変数

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

  • AWS_SECRET_ACCESS_KEY (*): ご利用の AWS シークレット アクセス キー。保護された変数として保存する必要があります。

  • AWS_DEFAULT_REGION (*):  The AWS region code (us-east-1, us-west-2, etc.) of the region containing the AWS resources. For more information, see Regions and Endpoints in the Amazon Web Services General Reference.

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

  • COMMAND (*): 動作モード: upload または deploy。各モードの仕組みについては「詳細」セクションを参照してください。

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

(*) = 必須の変数

アップロード コマンド変数

COMMAND が upload に設定されている場合、次のものを利用できます。

  • ZIP_FILE (*): S3 にアップロードするアプリケーション アーティファクト。"update" に必要です。

  • S3_BUCKET: アプリケーション zip のアップロード先およびデプロイ元となる S3 バケットをオーバーライドします。既定では <application_name>-codedeploy-deployment という規則に従います。

  • VERSION_LABEL: S3 のアプリケーション リビジョンの名前をオーバーライドします。既定では <application_name>-<build_number>-<commit> という規則に従います。

(*) = 必須の変数

デプロイ コマンド変数

COMMAND が deploy に設定されている場合、次のものを利用できます。

  • DEPLOYMENT_GROUP (*): デプロイ グループの名前です。

  • S3_BUCKET: アプリケーション zip のアップロード先およびデプロイ元となる S3 バケットをオーバーライドします。既定では <application_name>-codedeploy-deployment という規則に従います。

  • VERSION_LABEL: S3 のアプリケーション リビジョンの名前をオーバーライドします。既定では <application_name>-<build_number>-<commit> という規則に従います。

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

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

  • FILE_EXISTS_BEHAVIOR: デプロイ ターゲットの場所 (AppSpec ファイルで定義) にファイルが既に存在する場合に実行するアクションです。許可されている値: OVERWRITE、DISALLOW、RETAIN、既定: DISALLOW。

  • IGNORE_APPLICATION_STOP_FAILURES: デプロイされたアプリケーションの以前のバージョンを停止しようとしたときにスローされる任意のエラーを無視します。既定: false。

  • EXTRA_ARGS: aws deploy create-deployment に渡す追加の引数です。

  • BUNDLE_TYPE: The file types of the application revision stored in S3: zip, tar, tgz, YAML or JSON. Default: zip. BUNDLE_TYPE should correspond to ZIP_FILE extension.

  • FOLDER: デプロイ可能なアーティファクトがバケット内のいずれかのフォルダにある場合、フォルダ名を指定します。

  •  

(*) = 必須の変数

詳細

パイプは Upload と Deploy の 2 つの動作モードを提供します。

アップロード

S3 バケットにアプリケーション (zip ファイル) をアップロードしたり、CodeDeploy で新しいアプリケーション リビジョンを登録したりします。既定では、zip ファイルは命名規則<application_name>-codedeploy-deploymentに従って S3 バケットにアップロードされます。これは S3_BUCKET パラメーターでオーバーライドできます。

アップロードされた zip アーティファクトの名前が <application_name>-<build_number>-<commit> になりVERSION_LABEL パラメーターでオーバーライドできます。

デプロイ

以前にアップロードしたアプリケーション リビジョンをデプロイ グループにデプロイします。既定では、リビジョンを含むリビジョン S3 バケットは命名規則<application_name>-codedeploy-deploymentに従い、S3_BUCKET パラメーターでオーバーライドできます。

パイプは<application_name>-<build_number>-<commit>に一致するアプリケーションリビジョンのデプロイを試みます。これはVERSION_LABEL パラメーターでオーバーライドできます。デプロイが成功するまで待機します。

注意事項

  • 既定の VERSION_LABEL でデプロイ モードを使用すると、パイプはビルド番号とコミット ハッシュに基づいて新しいバージョン ラベルを作成します。また、対応するバージョンが S3 であらかじめ設定されるように、同じパイプライン内でアップロード モードのパイプを実行する必要があります。パイプのアップロード部分を同じパイプラインで実行しない場合は、明示的なVERSION_LABELを使用する必要があります (たとえば、ビルド番号から切り離されたセマンティック バージョニングまたは別のバージョン管理スキームを使用します。

アップロード

アプリケーション myapp.zipmy-application-codedeploy-deployment という S3 バケットにアップロードします。アプリケーションは my-application-<build-number>-<commit> として S3 にアップロードされます。

script: - pipe: atlassian/aws-code-deploy:0.2.10 variables: AWS_DEFAULT_REGION: 'ap-southeast-2' AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY: $AWS_SECRET_ACCESS_KEY COMMAND: 'upload' APPLICATION_NAME: 'my-application' ZIP_FILE: 'myapp.zip'

アプリケーション myapp.zip を my-bucket というカスタム S3 バケットにアップロードします。アプリケーションは my-app-1.0.0 として S3 にアップロードされます。

script: - pipe: atlassian/aws-code-deploy:0.2.10 variables: AWS_DEFAULT_REGION: 'ap-southeast-2' AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY: $AWS_SECRET_ACCESS_KEY COMMAND: 'upload' APPLICATION_NAME: 'my-application' ZIP_FILE: 'myapp.zip' S3_BUCKET: 'my-bucket' VERSION_LABEL: 'my-app-1.0.0'


デプロイ

デプロイメントを開始し、完了するまで待ちます。S3 バケット my-application-codedeploy-deploymentからのアプリケーション リビジョン my-application-<build-number>-<commit>がデプロイされます。

script: - pipe: atlassian/aws-code-deploy:0.2.10 variables: AWS_DEFAULT_REGION: 'ap-southeast-2' AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY: $AWS_SECRET_ACCESS_KEY COMMAND: 'deploy' APPLICATION_NAME: 'my-application' DEPLOYMENT_GROUP: 'my-deployment-group' WAIT: 'true'

S3 のカスタムの場所にアップロードされたアプリケーション リビジョンを参照して、デプロイメントを開始します。S3 バケット my-bucketからのアプリケーション リビジョン my-app-1.0.0がデプロイされます。

script: - pipe: atlassian/aws-code-deploy:0.2.10 variables: AWS_DEFAULT_REGION: 'ap-southeast-2' AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY: $AWS_SECRET_ACCESS_KEY COMMAND: 'deploy' APPLICATION_NAME: 'my-application' DEPLOYMENT_GROUP: 'my-deployment-group' WAIT: 'true' S3_BUCKET: 'my-bucket' VERSION_LABEL: 'my-app-1.0.0'

デプロイメントを開始し、アプリケーション停止による任意の失敗を無視して、以前のデプロイメント ファイルを強制的に上書きします。

script: - pipe: atlassian/aws-code-deploy:0.2.10 variables: AWS_DEFAULT_REGION: 'ap-southeast-2' AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY: $AWS_SECRET_ACCESS_KEY COMMAND: 'deploy' APPLICATION_NAME: 'my-application' DEPLOYMENT_GROUP: 'my-deployment-group' WAIT: 'true' IGNORE_APPLICATION_STOP_FAILURES: 'true' FILE_EXISTS_BEHAVIOR: 'OVERWRITE'

既定のVERSION_LABELでデプロイモードを使用すると、パイプはビルド番号とコミット ハッシュに基づいて新しいバージョンラベルを生成します。また、対応するバージョンが S3 であらかじめ設定されるように、同じパイプライン内でアップロード モードでパイプを実行する必要があります。パイプのアップロード部分を同じパイプラインで実行しない場合は、明示的なVERSION_LABELを使用する必要があります。たとえば、ビルド番号から切り離されたバージョン管理スキームを使用します。

さらにヘルプが必要ですか?

アトラシアン コミュニティをご利用ください。