AWSCodeCommitとCodeDeployを使用したコードデプロイメントの自動化
公開: 2022-03-25Web開発者としての作業には、本番サーバーへのコード展開の自動化などのいくつかの複雑なタスクが含まれる場合があります。または、グループで作業して、ライブWebサイトにコードをアップロードするときに問題に直面した場合、このブログ投稿はそのようなすべてを克服するソリューションです。問題。
FTPを使用するときは、共同開発者のコードを上書きしておく必要があります。これは非常に一般的な問題であり、私たちのほとんどで発生します。 このガイドでは、AWS CodeCommit、CodeDeploy、およびPipelineサービスを使用したコードデプロイメントの自動化について説明します。
技術概要:
- AWS CodeCommit :CodeCommitを使用して、すべてのプロジェクトファイルとコミットログを保持するリポジトリ(Webコンテンツ/コードファイル)を維持します。
- EC2サーバー:EC2を本番サーバーとして使用します。EC2には、ライブサイトとWebサイト訪問者用のコードが含まれます。
- AWS CodeDeploy :コードをEC2サーバーに公開するためのアプリケーションを保持します。 また、コードを公開するターゲットEC2インスタンスの名前/タグを保持するデプロイグループを作成します。
- パイプライン:ソースとしてCodeCommitを選択し、デプロイ段階としてCodeDeployを選択します。 したがって、CodeCommitでコードの変更が検出されると、パイプラインが実行され、それらのコードの変更がCodeDeploy(EC2インスタンス)にプッシュされます。
コード展開の自動化:詳細に説明:
コードデプロイメント自動化のためのIAMおよびGitユーザーの作成
まず、コードを変更してデプロイサーバーに公開するIAMユーザーとGitユーザーを作成する必要があります。
- IAMユーザーを作成する
- アクセスを許可する:AWSCodeCommitFullAccess、AWSCodeDeployFullAccess、AWSCodeCommitPowerUser。 このオプションは、[既存のポリシーを直接添付する]タブにあります。
- 次に、このIAMユーザーでログインします。
- 右上隅から[セキュリティクレデンシャル]をクリックします。
- AWSCodeCommitクレデンシャルタブをクリックします。
- 「AWSCodeCommitのHTTPSGitクレデンシャル」セクションで、「クレデンシャルの生成」ボタンをクリックします。
- 次に、そのユーザー名とパスワードを安全な場所にコピーします。 これは、コードの変更をプッシュ/プルするためのGitのメインのユーザー名とパスワードになります。
CodeCommitでリポジトリを作成する
それでは、正確なコードを保持するリポジトリを作成しましょう。
- IAMユーザーからCodeCommitダッシュボードに移動します。
- 右上隅で、リポジトリを作成するリージョンを選択します。
- [リポジトリの作成]をクリックし、名前と説明を付けて、[作成]をクリックします。
- 「リポジトリのクローンを作成する」セクションの下に、リポジトリのURLが表示されます。 安全な場所に保管してください。 次のようになります: https ://git-codecommit.ap-south-1.amazonaws.com/v1/repos/HarryTest
プロジェクトファイルを初めてアップロードする
- 元のコードが存在するローカルシステムのコマンドプロンプトを開きます。
- コマンドプロンプトで、コードが存在するパスに移動します。
- 次に、次のコマンドを実行して、コードをAWSリポジトリに初めてプッシュします。
git init
git config –local init.defaultBranch main
git config –global init.defaultBranch main
gitadd。 ##これにより、プロジェクトのすべてのファイルがコミットされます
git commit –m「初期コミット」
git push https://git-codecommit.ap-south-1.amazonaws.com/v1/repos/HarryTest –all
- EC2インスタンスを作成し、CodeDeployAgentをインストールします
- インスタンスロールを作成する
- AWSIAMコンソールを開きます。
- [役割]タブ>>[役割の作成]に移動します。
- [信頼できるエンティティの種類の選択]で、[ AWSサービス]を選択します。 [ユースケースの選択]で、 EC2を選択します。 [ユースケースを選択]で、[EC2]を選択します。 [次へ:権限]を選択します。
- AmazonEC2RoleforAWSCodeDeployという名前のポリシーを検索して選択し、[次へ:タグ]を選択します。
- 次を選択:レビュー。 ロールの名前(たとえば、 EC2InstanceRole )を入力し、[作成]をクリックします。
- EC2インスタンスを作成する
- EC2コンソールに移動します。 インスタンスの起動をクリックします。
- Amazonマシンイメージ(AMI)を選択し、 Amazon Linux 2 AMI(HVM)、SSDボリュームタイプを見つけて、[選択]を選択します。 (このAMIには「無料利用枠の対象」というラベルが付いており、リストの一番上にあります。)
- [インスタンスタイプ]ページを選択し、インスタンスのハードウェア構成として無料利用枠に適格なt2.microタイプを選択してから、 [次へ:インスタンスの詳細の構成]を選択します。
- [インスタンスの詳細の構成]ページで、次の手順を実行します。
- [インスタンス数]に1と入力します。
- [パブリックIPの自動割り当て]で、 [有効にする]を選択します。
- IAMロールで、前の手順で作成したIAMロール(たとえば、 EC2InstanceRole )を選択します。
- [詳細の詳細]を展開し、[ユーザーデータ]フィールドに次のように入力します。
#!/ bin / bash
yum-yアップデート
yum install -y ruby
yum install -y aws-cli
cd / home / ec2-user
wget https://aws-codedeploy-us-east-2.s3.us-east-2.amazonaws.com/latest/install
chmod + x ./install
./自動インストール
- 手順3:[インスタンスの詳細の構成]ページの残りの項目は変更しないでください。 [次へ:ストレージの追加]を選択します。
- 手順4:[ストレージの追加]ページを変更せずに、[次へ:タグの追加]を選択します。
- [タグの追加]を選択します。 「キー」に「名前」と入力し、「値」に「MyCodePipelineDemo 」と入力します。 [次へ:セキュリティグループの構成]を選択します。 後で、サンプルアプリケーションをこのインスタンスにデプロイするCodeDeployアプリケーションを作成します。 CodeDeployは、インスタンスにアタッチされているタグに基づいて、デプロイするインスタンスを選択します。
- [セキュリティグループの構成]ページで、次の手順を実行します。
- [セキュリティグループの割り当て]で、[新しいセキュリティグループの作成]を選択します。
- SSHの行で、[ソース]の下の[マイIP ]を選択します。
- [ルールの追加]を選択し、[ HTTP ]を選択してから、 [ソース]で[マイIP ]を選択します
- レビューと起動を選択します。
- [インスタンスの起動の確認]ページで、[起動]を選択します。 キーペアの入力を求められたら、[キーペアなしで続行]を選択します。
- [インスタンスの表示]を選択して確認ページを閉じ、コンソールに戻ります。
- 起動のステータスは、[インスタンス]ページで確認できます。 インスタンスを起動すると、その初期状態は「保留中」になります。 インスタンスが起動すると、その状態は「running」に変わり、パブリックDNS名を受け取ります。 ([パブリックDNS ]列が表示されていない場合は、[表示/非表示]アイコンを選択してから、[パブリックDNS ]を選択します。)
- インスタンスが接続できるようになるまで、数分かかる場合があります。 [ステータスチェック]列の情報を表示して、インスタンスがステータスチェックに合格したかどうかを確認します。
CodeDeployでアプリケーションを作成します
- CodeDeployサービスロールを作成する
- https://console.aws.amazon.com/iam/でIAMコンソールを開きます
- コンソールダッシュボードから、[役割]を選択します。
- ロールの作成を選択します。
- [信頼できるエンティティの種類の選択]で、[ AWSサービス]を選択します。 [ユースケースの選択]で、[ CodeDeploy]を選択します。 [ユースケースの選択]で、[CodeDeploy]を選択します。 [次へ:権限]を選択します。 AWSCodeDeployRole管理ポリシーはすでにロールにアタッチされています。
- [次へ:タグ]、[次へ:レビュー]を選択します。
- ロールの名前(たとえば、CodeDeployRole)を入力し、[ロールの作成]を選択します。
- CodeDeployでアプリケーションを作成します
- https://console.aws.amazon.com/codedeployでCodeDeployコンソールを開きます
- [アプリケーション]ページが表示されない場合は、メニューで[アプリケーション]を選択します。
- アプリケーションの作成を選択します。
- アプリケーション名に「MyDemoApplication 」と入力します。
- Compute Platformで、 EC2/オンプレミスを選択します。
- アプリケーションの作成を選択します。
- CodeDeployでデプロイメントグループを作成します
- アプリケーションを表示するページで、[デプロイメントグループの作成]を選択します。
- 展開グループ名に、 MyDemoDeploymentGroupと入力します。
- インサービスロールで、前に作成したサービスロールを選択します(たとえば、 CodeDeployRole )。
- [展開の種類]で、[インプレース]を選択します。
- [ Environment configuration ]で、 [AmazonEC2インスタンス]を選択します。 「キー」フィールドに「名前」と入力します。 [値]フィールドに、インスタンスのタグ付けに使用した名前を入力します(たとえば、 MyCodePipelineDemo )。
- 「デプロイメント構成」で、 「CodeDeployDefault.OneAtaTime 」を選択します。
- [ロードバランサー]で、 [負荷分散を有効にする]が選択されていないことを確認します。 この例では、ロードバランサーを設定したり、ターゲットグループを選択したりする必要はありません。
- [詳細]セクションを展開します。 [アラーム]で、アラームが一覧表示されている場合は、[アラーム設定を無視する]を選択します。
- 展開グループの作成を選択します。
パイプラインを作成する
- パイプラインを作成する
- AWSマネジメントコンソールにサインインし、http://console.aws.amazon.com/codesuite/codepipeline/homeでCodePipelineコンソールを開きます
- https://console.aws.amazon.com/codepipeline/でCodePipelineコンソールを開きます
- [パイプラインの作成]を選択します。
- ステップ1 :パイプライン設定を選択し、パイプライン名にMyFirstPipelineと入力します。
- [サービスロール]で、[新しいサービスロール]を選択して、CodePipelineがIAMでサービスロールを作成できるようにします。
- [詳細設定]の設定をデフォルトのままにして、[次へ]を選択します。
- ステップ2 :ソースステージの追加で、ソースプロバイダーでCodeCommitを選択します。
[リポジトリ名]で、手順1:CodeCommitリポジトリを作成するで作成したCodeCommitリポジトリの名前を選択します。 [ブランチ名]で[メイン]を選択し、[次のステップ]を選択します。 - リポジトリー名とブランチを選択すると、このパイプライン用に作成されるAmazonCloudWatchイベントルールがメッセージに表示されます。
- [変更検出]オプションで、デフォルトのままにします。 これにより、CodePipelineはAmazon CloudWatchイベントを使用して、ソースリポジトリの変更を検出できます。
- [次へ]を選択します。
- 手順3 :ビルドステージの追加で、[ビルドステージのスキップ]を選択し、[もう一度スキップ]を選択して警告メッセージを受け入れます。 [次へ]を選択します。
注:このチュートリアルでは、ビルドなしのサービスを必要とするコードをデプロイしているため、この手順をスキップできます。 ただし、インスタンスにデプロイする前にソースコードをビルドする必要がある場合は、この手順でCodeBuildを構成できます。
- ステップ4 :デプロイステージの追加で、デプロイプロバイダーでCodeDeployを選択します。
[アプリケーション名]で、[ MyDemoApplication]を選択します。 [展開]グループで、[ MyDemoDeploymentGroup]を選択し、[次のステップ]を選択します。 - 手順5 :情報を確認し、[パイプラインの作成]を選択します。
- パイプラインは、作成後に実行を開始します。 CodeCommitリポジトリからコードをダウンロードし、EC2インスタンスへのCodeDeployデプロイを作成します。 CodePipelineサンプルがCodeDeployデプロイでAmazonEC2インスタンスにウェブページをデプロイすると、進行状況、「成功」、「失敗」のメッセージを表示できます。
これですべての設定が完了しました。 [展開] ⇒ [展開]に移動します。 成功したすべての展開と失敗した展開のログが表示されます。
サイトでの変更を確認するには、EC2インスタンスを開き、パブリックDNSを検索します。パブリックDNSは、http: //ec2-3-108-40-48.ap-south-1.compute.amazonaws.comと表示されます。
閲覧すると、ライブページが表示されます。
これで、コード展開の自動化が正常に完了しました。 これで、新しいコードの変更をリポジトリにプッシュして、サイトに自動的に公開できます。 それでも問題が解決しない場合は、ここにコメントしてください。