1. y4u0t2a1r0

    No comment

    y4u0t2a1r0
Changes in body
Source | HTML | Preview
@@ -1,94 +1,96 @@
-
# 前提
- gitがインストールされている
- dockerがインストールされている
- aws-cliがインストールされている
# クッキング開始
まず、以下のリポジトリをクローンしてください。
https://github.com/yutaro1204/ecs-autoscaling-demo
そして、付属の`ecrRepository.yaml`を利用してAWSにスタックを作成します。
parameterに指定するRepositoryNameは以降で作成するイメージと合わせる必要があります。
```shell
$ aws cloudformation create-stack --stack-name sampleECRRepository --template-body file://ecrRepository.yaml --no-disable-rollback --parameters ParameterKey=RepositoryName,ParameterValue=php_demo_image
```
このスタックにはECRのリポジトリが含まれ、ここに自作したイメージをプッシュします。
自分でイメージを作るのがめんどくさい方は、
```shell
git clone https://github.com/aws-samples/ecs-demo-php-simple-app.git
cd ecs-demo-php-simple-app
```
でPHPのデモアプリをクローンして中に入り、
`src`内に以下の内容のhealthcheck.phpを配置して(`src/healthcheck.php`をヘルスチェックの対象としてます)、
```php
<?php echo "HealthCheck TEST";
```
```shell
$ docker build -t php_demo_image .
```
でこのイメージを作成します。
最初にECRリポジトリを作成した時に指定したRepositoryNameと同じ名前でbuildしています。
次にこの作成したイメージをECRのリポジトリにプッシュします。
```shell
$ aws ecr get-login --no-include-email --region ${AWS.Region}
```
でログインコマンドを取得し、これをそのまま実行します(以下は例)。
```shell
$ docker login -u AWS -p XXXXXX.......
```
で、先ほど作ったイメージにタグづけをして、
```shell
$ docker tag php_demo_image:latest ${AWS.AccountId}.dkr.ecr.${AWS.Region}.amazonaws.com/php_demo_image:latest
```
タグづけされたイメージをECRへプッシュします。
```shell
$ docker push ${AWS.AccountId}.dkr.ecr.${AWS.Region}.amazonaws.com/php_demo_image:latest
```
AWSコンソールなどでイメージがちゃんとプッシュされているか確認してみて下さい。
あとは`microservices.yaml`の`ECSTaskDefinition`の`ContainerDefinitions`を以下のように修正して、
```yaml
ECSTaskDefinition:
Type: AWS::ECS::TaskDefinition
Properties:
ContainerDefinitions:
- Image: '${さっきイメージをプッシュしたECRのARN}:latest'
```
以下のコマンドでCloudFormationのスタックを作成します。
```
$ aws cloudformation create-stack --stack-name sampleECSClusterWithAutoScaling --template-body file://microservices.yaml --no-disable-rollback --capabilities CAPABILITY_NAMED_IAM
```
数分でロードバランサーのDNSNameからPHPのデモページへと飛ぶことができるようになっているかと思います!
+![Screenshot 0002-06-14 at 22.46.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245704/763dbb96-6cd4-ca41-1256-e2c10c7c936d.png)
+
+
# クッキング終了
リソースの設定値を色々といじってみて自分にあった構成を試してみてください。
たとえば、タスクやAutoScalingGroupに含まれるEC2インスタンスを意図的に削除してみたりとか。
タスクはECSのServiceが自動復旧してくれるし、EC2インスタンスもALBが認識してAutoScalingが立て直してくれると思います。