AWS CodeDeployからEC2 Auto Scalingにデプロイするチュートリアル
公式チュートリアルチュートリアル: アプリケーションを CodeDeployグループにデプロイするために使用します。Amazon EC2 Auto Scalingをベースにやってみます。
目次
IAMロールを作成
CodeDeploy向け
AWS管理ポリシーAWSCodeDeployRoleをアタッチしました。
関連のAWS管理ポリシーの名前を見てるとCodeDeployができることが見えてきますね。
###EC2インスタンス向け
|
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 26 27 28 29 30 31 32 |
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::replace-with-your-s3-bucket-name/*", "arn:aws:s3:::aws-codedeploy-us-east-2/*", "arn:aws:s3:::aws-codedeploy-us-east-1/*", "arn:aws:s3:::aws-codedeploy-us-west-1/*", "arn:aws:s3:::aws-codedeploy-us-west-2/*", "arn:aws:s3:::aws-codedeploy-ca-central-1/*", "arn:aws:s3:::aws-codedeploy-eu-west-1/*", "arn:aws:s3:::aws-codedeploy-eu-west-2/*", "arn:aws:s3:::aws-codedeploy-eu-west-3/*", "arn:aws:s3:::aws-codedeploy-eu-central-1/*", "arn:aws:s3:::aws-codedeploy-ap-east-1/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-1/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-2/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-1/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-2/*", "arn:aws:s3:::aws-codedeploy-ap-south-1/*", "arn:aws:s3:::aws-codedeploy-sa-east-1/*" ] } ] } |
チュートリアル向けのこちらと、エージェントをインストールするためのAmazonSSMManagedInstanceCoreをアタッチしました。
起動テンプレート作成
AMIはAmazon Linux 2 にしました。
インスタンスタイプはt3.microにしました。
キーペアは事前に作成していたものを使いました。
セキュリティグループはHTTP 0.0.0.0/0のものを使いました。
IAMロールには、
オートスケーリンググループ作成
起動テンプレートを選択して、
グループサイズを1にして、
タグにCodeDeployDemoを設定したぐらいです。
CodeDeployエージェントのインストール
オートスケーリングで起動したインスタンスにCodeDeployエージェントをインストールしました。
インストールは、Systems Manager RunCommandで、AWS-ConfigureAWSPackageで、AWSCodeDeployAgentをNameに指定して行いました。
デプロイの作成
CodeDeployのメニューから[アプリケーションの作成]ボタンを押下しました。
コンピューティングタイプは、EC2/オンプレミスを選択しました。
[デプロイグループの作成]ボタンを押下しました。
作成済みのIAMロールARNを入力して、
デプロイタイプはインプレース、
環境設定はAmazon EC2 Auto Scalingグループを選択しました。
デプロイ設定はCodeDeployDefault.OneAtATimeで、ALBのチェックを外しました。
[デプロイグループの作成]ボタンを押下しました。
デプロイグループが作成できました。
次に、[デプロイの作成]ボタンを押下しました。
チュートリアルのサンプルアプリケーションのS3のzipファイルのパスを入力しました。
他にはGitHubも選択できます。
[デプロイの作成]ボタンを押下しました。
成功しました!
EC2インスタンスのWebサーバーにも無事、アクセスできました。
appspec.yml
サンプルアプリのzipの中身を見てみますと、appspec.ymlがありました。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
version: 0.0 os: linux files: - source: /index.html destination: /var/www/html/ hooks: BeforeInstall: - location: scripts/install_dependencies timeout: 300 runas: root - location: scripts/start_server timeout: 300 runas: root ApplicationStop: - location: scripts/stop_server timeout: 300 runas: root |
それぞれのスクリプトファイルも見てみます。
install_dependencies
|
1 2 3 |
#!/bin/bash yum install -y httpd |
start_server
|
1 2 3 |
#!/bin/bash service httpd start |
stop_server
|
1 2 3 4 5 6 |
#!/bin/bash isExistApp = `pgrep httpd` if [[ -n $isExistApp ]]; then service httpd stop fi |
なるほど、ですね。
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。
「AWS認定資格試験テキスト AWS認定AIプラクティショナー」という本を書きました。
「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
関連記事
-
-
NGINXで500と502のエラーが実は頻発していたらしい
先日Mackerelで当ブログの外形監視を始めたのですが、500と502のエラー …
-
-
「JAWS-UG DE&I AWS re:Invent 2024 recap サーバーレス ハンズオン」でサポーターしてきました
JAWS-UG DE&I開催の「AWS re:Invent 2024 r …
-
-
IAMセッションポリシーの利用(GetFederationToken)
GetFederationTokenでのセッションポリシーは、呼び出し元のIAM …
-
-
AWS LambdaをVPC設定したときに「The provided execution role does not have permissions to call CreateNetworkInterface on EC2」
The provided execution role does not hav …
-
-
ヤマムギ vol.7 AWSアカウント作成 & 最初の設定ハンズオン 手順
ヤマムギとは from Mitsuhiro Yamashita 「AWSではじめ …
-
-
CUSTOMINEを使ってkintoneからAWS Lambdaを実行する(Cognito認証付き)
先日の記事「kintoneのカスタマイズ開発を超速にするCUSTOMINE」で書 …
-
-
AWS Lambdaで「Process exited before completing request」
AWS lambdaで「Process exited before comple …
-
-
CloudFrontのVPCオリジンを使用してApplication Load Balancerをプライベートサブネットで起動する
このブログのApplication Load Balancerはパブリックサブネ …
-
-
Feedlyのフィードを自動でSlackへ投稿する(AWS Lambda , Amazon DynamoDB)
やりたいこと Feedlyで共有したいフィードに特定のタグを付けます。 特定のタ …
-
-
サービスディスカバリを使用してECSサービスの作成
ECSデベロッパーガイドのチュートリアル:サービスディスカバリを使用して、サービ …







