あめがえるのITブログ

頑張りすぎない。ほどほどに頑張るブログ。

docker-composeのvolumesでファイル/ディレクトリをマウントしてみた

docker-composeはやれることが多いので少しずつ実践していきたいと思います!

やること

docker-composeのvolumesを使ってホスト上のファイルやディレクトリをマウントする。

ホストのディレクトリ構成

./docker-sample
  ├ docker-compose.yaml
  └ volume_sample
       └ test.txt

実践!

1.ホスト上のディレクトリをマウント
 1-1.docker-compose.yamlファイル作成

# vi docker-compose.yaml
version: '3'
services:
  web1:
    image: tomcat
    ports:
      - "8080:8080"
    volumes:
      - ./volume_sample:/volume

 1-2.コンテナ起動

# docker compose up -d
[+] Building 0.0s (0/0)
[+] Running 1/0
 ✔ Network docker-sample_default   Created                                                                                                                            0.1s
 ✔ Container docker-sample-web1-1  Started                                                                                                                            0.3s

# docker ps
CONTAINER ID   IMAGE                  COMMAND                  CREATED         STATUS         PORTS                                       NAMES
73d092c6e7f8   tomcat                 "catalina.sh run"        4 seconds ago   Up 3 seconds   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   docker-sample-web1-1

 1-3.動作確認

(web1_container)# ls /volume
test.txt


2.ホスト上に新規ディレクトリを作成してマウント
 2-1.docker-compose.yamlファイル作成

# vi docker-compose.yaml
version: '3'
services:
  web1:
    image: tomcat
    ports:
      - "8080:8080"
    volumes:
      - volume:/volume
volumes:
  volume:

 2-2.コンテナ起動

# docker compose up -d
[+] Building 0.0s (0/0)
[+] Running 1/0                                                                                                                         0.0s
 ✔ Container docker-sample-web1-1  Running
 
# docker ps
CONTAINER ID   IMAGE                  COMMAND                  CREATED         STATUS         PORTS                                       NAMES
5e32e8f2862b   tomcat                 "catalina.sh run"        8 seconds ago   Up 6 seconds   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   docker-sample-web1-1

 2-3.動作確認

# docker exec -it 5e32e8f2862b /bin/bash
(container)# ls /
bin  boot  dev  etc  home  lib  lib32  lib64  libx32  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var  volume
(container)# touch /volume/container_create_file.txt
(container)# ls /volume
container_create_file.txt
(container)# exit
# find / -name container_create_file.txt
/var/lib/docker/volumes/docker-sample_volume/_data/container_create_file.txt

※ホストの/var/lib/docker/volumes内にディレクトリが切られ、ファイルが保存された模様


感想

これでconfファイルなどもマウントできますね!(*´ω`*)

Prometheusで取得している全メトリクス名を取得する方法

Prometheusで取得している全メトリクスの項目名を一覧で取得する必要があったので調べてみた。

やること

Prometheusサーバから全メトリクスの項目名をブラウザとCLIで取得する。

環境

# prometheus --version
prometheus, version 2.42.0 (branch: HEAD, revision: xxxxxx)

実践!

1.ブラウザから取得する。
 1-1.ブラウザで下記にアクセスする。
  http://[PrometheusサーバのIP]:[待ち受けポート]/api/v1/label/__name__/values
  例)
   http://192.168.10.163:9090/api/v1/label/__name__/values

  下記のように出力される。

{"status": "success", "data":
[":node_memory_MemAvailable_bytes:sum", "ALERT", "ALERTS_FOR_STATE", ・・・・・


  1行で出力されて見づらいので成形する。
  ※Google先生で[JSON成形]で検索するとよさげなサイトがでてきます。

  成形するとこんな感じ

{
    "status": "success",
    "data": [
        ":node_memory_MemAvailable_bytes:sum",
        "ALERTS",
        "ALERTS_FOR_STATE",
        "action_cable_active_connections",
        ・・・・
    ]
}



2.CLIで出力する
 2-1.Prometheusサーバに接続できる適当なサーバから下記コマンドを実行。
  ※Prometheusサーバから実行でも可

# curl http://192.168.10.163:9090/api/v1/label/__name__/values | jq '.data[]'
":node_memory_MemAvailable_bytes:sum"
"ALERTS"
"LERTS_FOR_STATE"
"action_cable_active_connections"
・・・



感想

前は見つからなかったが今回は簡単に見つかってよかった。。。( ̄д ̄)フー

docker-composeのportsとexposeについて調べてみた

ドキュメントを読む限りportsもexposeもホスト上にコンテナへの接続ポートを公開するという役割を持っており、両者区別がよくわからなかったので調べてみた。

docker-compose portsとは

Dockerコンテナ内のサービスがホストマシンに公開するポートを定義するための設定です。

docker-compose exposeとは

EXPOSE 命令だけは、実際にはポートを 公開publish しません。これは、どのポートを公開する意図なのかという、イメージの作者とコンテナ実行者の両者に対し、ある種のドキュメントとして機能します。コンテナの実行時に実際にポートを公開するには、 docker run で -p フラグを使い、公開用のポートと割り当てる( マップmap する)ポートを指定します


exposeは実際は公開せず、[ここを公開して使ってね]と言いたいだけってことかな。
とりあえずいろいろ触ってどのようになるか見てみます。( ̄д ̄;)

やること

docker composeのportsとexposeでそれぞれ構築し、curlで接続を行い、挙動の違いを調べる。

環境

Dockerホスト(192.168.10.163)
 ・コンテナ(Web1)
 ・コンテナ(Web2)

実践!

1.検証用コンテナ構築
※まずはtomcatサーバを2台構築し、ホストに8080と8081ポートを公開する。
 1-1.docker-compose.yaml作成

# docker version |  grep Version
  Version:          23.0.1

# vi docker-compse.yaml
version: '3'
services:
  web1:
    image: tomcat
    ports:
      - "8080:8080"
  web2:
    image: tomcat
    ports:
      - "8081:8080"

 1-2.コンテナ起動

# docker compose up -d
[+] Building 0.0s (0/0)
[+] Running 1/0
[+] Running 1/3cat-sample_default   Created                                                                              0.0s
[+] Running 2/3cat-sample_default   Created                                                                              0.0s
 ✔ Network tomcat-sample_default   Created                                                                              0.0s[+] Running 3/3mcat-sample-web2-1  Starting                                                                             0.2s
 ✔ Network tomcat-sample_default   Created                                                                              0.0s ✔ Container tomcat-sample-web1-1  Started                                                                              0.2s
 ✔ Container tomcat-sample-web2-1  Started                                                                              0.3s
 ✔ Container tomcat-sample-web1-1  Started                                                                              0.2

 1-3.起動確認

# docker ps
CONTAINER ID   IMAGE                  COMMAND                  CREATED         STATUS         PORTS                                       NAMES
c9521e00a1c9   tomcat                 "catalina.sh run"        4 seconds ago   Up 2 seconds   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   tomcat-sample-web1-1
ca3649dfdfc4   tomcat                 "catalina.sh run"        4 seconds ago   Up 2 seconds   0.0.0.0:8081->8080/tcp, :::8081->8080/tcp   tomcat-sample-web2-1


2.ports動作確認
 2-1.ホストからweb1、web2のページが取得できることを確認

# curl http://192.168.10.163:8080
<!doctype html><html lang="en"><head><title>HTTP Status 404 – Not Found</title><style type="text/css">body {font-family:Tahoma,Arial,sans-serif;} h1, h2, h3, b {color:white;background-color:#525D76;} h1 {font-size:22px;} h2 {font-size:16px;} h3 {font-size:14px;} p {font-size:12px;} a {color:black;} .line {height:1px;background-color:#525D76;border:none;}</style></head><body><h1>HTTP Status 404 – Not Found</h1><hr class="line" /><p><b>Type</b> Status Report</p><p><b>Description</b> The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.</p><hr class="line" /><h3>Apache Tomcat/10.1.9</h3></body></html>
※TOPページを何も指定していないので404のエラーが返ってくる。

# curl http://192.168.10.163:8081
<!doctype html><html lang="en"><head><title>HTTP Status 404 – Not Found</title><style type="text/css">body {font-family:Tahoma,Arial,sans-serif;} h1, h2, h3, b {color:white;background-color:#525D76;} h1 {font-size:22px;} h2 {font-size:16px;} h3 {font-size:14px;} p {font-size:12px;} a {color:black;} .line {height:1px;background-color:#525D76;border:none;}</style></head><body><h1>HTTP Status 404 – Not Found</h1><hr class="line" /><p><b>Type</b> Status Report</p><p><b>Description</b> The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.</p><hr class="line" /><h3>Apache Tomcat/10.1.9</h3></body></html

# curl http://192.168.10.163:8082
curl: (7) Failed to connect to 192.168.10.163 port 8082 after 0 ms: Connection refused
※設定していないポートへの接続は404ではなく[Connection refused]となる。


 2-2.web1へログインしweb2のページが取得できることを確認

# docker exec -it c9521e00a1c9 /bin/bash

root@c9521e00a1c9:/usr/local/tomcat# curl http://192.168.10.163:8081
<!doctype html><html lang="en"><head><title>HTTP Status 404 – Not Found</title>
・・・
※端折ってますが取得できてますね。

root@c9521e00a1c9:/usr/local/tomcat# exit
#


 2-3.web2へログインしweb1のページが取得できることを確認

# docker exec -it ca3649dfdfc4 /bin/bash

root@ca3649dfdfc4:/usr/local/tomcat# curl http://192.168.10.163:8080
<!doctype html><html lang="en"><head><title>HTTP Status 404 – Not Found</title><style type="text/css">body {font-family:Tahoma,Arial,sans-serif;} h1, h2, h3, b {color:white;background-
※こちらも同様に取得できている。

root@ca3649dfdfc4:/usr/local/tomcat# exit
#


3.検証用コンテナ再構築
※まずはtomcatサーバを2台構築し、1台をexposeで8080を公開し、もう1台をportsで8081ポートを公開する。
 3-1.コンテナを削除

# docker compose down
[+] Running 1/2
[+] Running 2/2omcat-sample-web1-1  Removed                                                                              0.3s
 ✔ Container tomcat-sample-web1-1  Removed                                                                              0.3s[+] Running 2/3mcat-sample-web2-1  Stopping                                                                             0.3s
 ✔ Container tomcat-sample-web1-1  Removed                                                                              0.3s[+] Running 2/3
 ✔ Container tomcat-sample-web1-1  Removed                                                                              0.3s[+] Running 2/3
 ✔ Container tomcat-sample-web1-1  Removed                                                                              0.3s[+] Running 2/3
 ✔ Container tomcat-sample-web1-1  Removed                                                                              0.3s[+] Running 3/3
 ✔ Container tomcat-sample-web1-1  Removed                                                                              0.3s
 ✔ Container tomcat-sample-web2-1  Removed                                                                              0.4s
 ✔ Network tomcat-sample_default   Removed                                                                              0.4s


 3-2.docker-compose.yaml修正

# vi docker-compose.yaml
version: '3'
services:
  web1:
    image: tomcat
    expose:
      - "8080"
  web2:
    image: tomcat
    ports:
      - "8081:8080"


 3-3.コンテナ起動

# docker compose up -d
[+] Building 0.0s (0/0)
[+] Running 1/0
[+] Running 1/3cat-sample_default   Created                                                                              0.1s
[+] Running 1/3cat-sample_default   Created                                                                              0.1s
[+] Running 1/3cat-sample_default   Created                                                                              0.1s
[+] Running 3/3cat-sample_default   Created                                                                              0.1s
 ✔ Network tomcat-sample_default   Created                                                                              0.1s ⠿ Container tomcat-sample-web1-1  Starting                                                                             0.3s
 ✔ Container tomcat-sample-web1-1  Started                                                                              0.3s
 ✔ Container tomcat-sample-web2-1  Started                                                                              0.3s


4.expose動作確認

# docker ps
CONTAINER ID   IMAGE                  COMMAND                  CREATED         STATUS         PORTS                                       NAMES
dd8bc24569e1   tomcat                 "catalina.sh run"        2 minutes ago   Up 2 minutes   8080/tcp                                    tomcat-sample-web1-1
51dd32d87712   tomcat                 "catalina.sh run"        2 minutes ago   Up 2 minutes   0.0.0.0:8081->8080/tcp, :::8081->8080/tcp   tomcat-sample-web2-1

# curl http://192.168.10.163:8080
curl: (7) Failed to connect to 192.168.10.163 port 8080 after 0 ms: Connection refused

# curl http://192.168.10.163:8081
<!doctype html><html lang="en"><head><title>HTTP Status 404 – Not Found</title><style type="text/css">body {font-family:Tahoma,Arial,sans-serif;} h1, h2, h3, b {color:white;background-color:#525D76;} h1 {font-size:22px;} h2 {font-size:16px;} h3 {font-size:14px;} p {font-size:12px;} a {color:black;} .line {height:1px;background-color:#525D76;border:none;}</style></head><body><h1>HTTP Status 404 – Not Found</h1><hr class="line" /><p><b>Type</b> Status Report</p><p><b>Description</b> The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.</p><hr class="line" /><h3>Apache Tomcat/10.1.9</h3></body></html>8080だけ接続できなくなった。



感想

expose設定しなくても同じ挙動になると思うのであまり意味のない検証になってしまった。。。
まぁこんなのあるかぐらいでいいっか。。(´Д`)

docker-composeで複数のコンテナを起動してみた

雨ばっかでいやになる。。( ;∀;)

docker-composeとは

複数のコンテナを効率的に管理するためのツール。
Dockerイメージのビルドや各コンテナの起動・停止などをより簡単に行える。

docker-composeの使い方

docker-compose.yamlファイルに各コンテナに対する定義を記載し、コンテナ起動時にdocker-compose.yamlファイルをもとにコンテナの設定を行う。

docker-composeパラメータ

  • service:アプリケーションの単位を指す
  • image:Dockerイメージを設定
  • build:Dockerfileファイルのディレクトリを指定しDockerfileからコンテナを作成
  • container_name:コンテナ名を指定
  • ports:待ち受けポート、コンテナ転送ポートを指定
  • command:コマンドを実行
  • expose:Docker内の同一ネットワークに対してポートを公開する
  • publish:コンテナのポートをホストマシンに公開する
  • volumes: パスをボリュームとしてマウント
  • environment:環境変数を設定
  • depends_on:依存関係を作成

やること

ubuntu22.04サーバにdocker-composeのインストールおよび、docker-composeからコンテナを作成する。

環境

Ubuntu22.04[
  dokcer 23.0.1
]

実践!

1.docker-composeインストール
 1-1.dockerサーバへログインし、下記を入力

# docker version | grep version
 Version:           23.0.1

# apt-get update
Failed to allocate directory watch: Too many open files
Hit:1 https://download.docker.com/linux/ubuntu jammy InRelease
Hit:2 https://packages.cloud.google.com/apt kubernetes-xenial InRelease
・・・

# apt-get install docker-compose-plugin
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
・・・

# docker compose version
Docker Compose version v2.18.1

2.compose.yamlファイル作成

# vi compose.yaml
version: '3'
services:
  db:
    image: postgres
  web:
    image: tomcat
    ports:
      - "8080:8081"
    depends_on:
      - db

3.コンテナ起動

# docker compose up -d
[+] Building 0.0s (0/0)
WARN[0000] Found orphan containers ([tomcat1]) for this project. If you removed or renamed this service in your compose file, you can run this command with the --remove-orphans flag to clean it up.
[+] Running 1/0
[+] Running 1/2ot-db-1   Starting                                          0.1s
[+] Running 1/2ot-db-1   Starting                                          0.2s
・・・

# docker ps
CONTAINER ID   IMAGE                  COMMAND                  CREATED         STATUS         PORTS                                                 NAMES
fa826cb3d1d2   tomcat                 "catalina.sh run"        5 seconds ago   Up 4 seconds   8080/tcp, 0.0.0.0:8080->8081/tcp, :::8080->8081/tcp   root-web-1
42291505050e   tomcat                 "catalina.sh run"        3 minutes ago   Up 3 minutes   0.0.0.0:8081->8080/tcp, :::8081->8080/tcp             tomcat1

4.コンテナ停止

# docker compose down
[+] Running 3/1
 ✔ Container root-web-1  Removed                                           0.2s
 ✔ Container root-db-1   Removed                                           0.0s



感想

docker-composeはいろいろできそうなので、試していく(*´ω`*)」

DockerFileからカスタムイメージを作成してみた

コンテナビルドのパイプラインと作ろうと思ったけどその前にいろいろ覚えなければいけないことがあったので、まずはDockerfileの作り方を勉強(*´ω`*)

DockerFileとは

DockerイメージがらカスタムDockerイメージを作成するための設計書ファイル。

使い方

dockerfileという名前のファイルを作成し、docker buildコマンドを実行する。

DockerFileのパラメータ

  • FROM:ベースとなるイメージを選択する。
  • RUN:Imageを作成するときにコマンドが実行される。インストール系のコマンドが使用される。
  • CMD:Imageからコンテナを作成するときに実行される。コンテナの実行などに使用される。
  • MAINTAINER(非推奨):イメージの作者を指定する。Docker 1.13以降はLABELを使用することが推奨されている。
  • LABEL:イメージに作者、バージョン情報などのメタデータを設定する。
  • ENTRYPOINT:CMDと同様の使われ方をするが、CMDとの違いは上書きができなくなる。
  • COPY:Dockerfileがあるディレクトリ内のファイルをImageにコピーする。
  • ADD:COPY同様ファイルをコピーできるが、ADDはファイルが圧縮ファイルであった場合解凍+コピーを行う。
  • ENV:環境変数を設定する。
  • WORKDIR:作業用ディレクトリを変更する。
  • EXPOSE:指定したポート番号でコンテナを公開する。
  • VOLUME:ホスト側の/var/lib/docker/volumesなどにボリュームが作成され、コンテナに永続ボリュームを割り当てる。
  • SHELL:RUN、CMD、ENTRYPOINTで使用されるシェルを指定する。デフォルトではLinuxは["/bin/sh","-c"]、Windowsでは["cmd","/S","/C"]。
  • USER:RUN、CMD、ENTRYPOINTで実行されるコマンドの実行ユーザを指定する。
Dockerfile記載例)

FROM ubuntu:23.10
SHELL ["/bin/sh","-c"]
LABEL version="1.0"
RUN mkdir /tmp/sample_dir
CMD ["/bin/bash"]
CMD nginx -g 'daemon off;'
ENTRYPOINT ["ls","-la"]
CMD [">> /tmp/test.txt"]
COPY sample.txt /tmp/sample_dir
ADD sample.zip /tmp/sample_dir
ENV key1 value
WORKDIR /tmp/sample_dir
EXPOSE 80
VOLUME /var/disk1


実践!

1.Dockerfile作成

# docker version | grep Version
 Version:           23.0.1
 
# vi dockerfile
FROM ubuntu:23.10
SHELL ["/bin/sh","-c"]
RUN mkdir /sample
RUN touch /sample/test.txt
ENTRYPOINT ["ls","-la"]
CMD ["/sample"]
ENV key1 value
ENTERPOINT []
CMD ["bash"]

2.Dockerイメージ作成

# pwd
/root

### docker build -t <イメージ名> <dockerfile保存先>
# docker build -t test .
[+] Building 6.9s (6/6) FINISHED
 => [internal] load build definition from dockerfile                       0.0s
 => => transferring dockerfile: 181B                                       0.0s
 => [internal] load .dockerignore                                          0.0s
 => => transferring context: 2B                                            0.0s
 => [internal] load metadata for docker.io/library/ubuntu:latest           2.0s
 => [1/2] FROM docker.io/library/ubuntu:latest@sha256:dfd64a3b4296d8c9b62  4.6s
 => => resolve docker.io/library/ubuntu:latest@sha256:dfd64a3b4296d8c9b62  0.0s
 => => sha256:dfd64a3b4296d8c9b62aa3309984f8620b98d87e474 1.13kB / 1.13kB  0.0s
 => => sha256:ca5534a51dd04bbcebe9b23ba05f389466cf0c190f1f8f1 424B / 424B  0.0s
 => => sha256:3b418d7b466ac6275a6bfcb0c86fbe4422ff6ea0af4 2.30kB / 2.30kB  0.0s
 => => sha256:dbf6a9befcdeecbb8813406afbd62ce81394e3869 29.53MB / 29.53MB  4.1s
 => => extracting sha256:dbf6a9befcdeecbb8813406afbd62ce81394e3869d84599f  0.4s
 => [2/2] RUN mkdir /tmp/sample_dir                                        0.2s
 => exporting to image                                                     0.0s
 => => exporting layers                                                    0.0s
 => => writing image sha256:5299165384649f26938119f9e21ef6a06fd5c3889193c  0.0s
 => => naming to docker.io/library/test                                    0.0s
 
# docker image ls
REPOSITORY     TAG       IMAGE ID       CREATED         SIZE
test           latest    529916538464   9 seconds ago   77.8MB

3.Dockerコンテナ起動

# docker run test
total 8
drwxr-xr-x 1 root root 4096 May 22 22:07 .
drwxr-xr-x 1 root root 4096 May 22 22:07 ..
-rw-r--r-- 1 root root    0 May 22 22:07 test.txt

# docker run -it test /bin/bash
containerid:/# 
containerid:/# printenv | grep key1
key1=value



感想

これで自由にコンテナImageが作れるのでいろいろ遊んでみますー

Amazon CloudWatch Syntheticsで外形監視をしてみた

ふとWebアプリケーションの外形監視をやりたくなり、調べたところAWSではCloudWatchにその機能があったので試してみた。(´Д`)

Amazon CloudWatch Syntheticsとは

CloudWatchの仲間でWebサイトやURL、REST APIに対してのURL監視などを行えるネージドサービス。Canaryというリソースを作成して監視を行う。CanaryはNode.jsまたはPythonランタイムのLambda関数を作成してスクリプトを実行できる。

やること

Elastic BeanstalkのPHPで簡単にウェブサーバを構築し、CloudWatch SyntheticsでエンドポイントをURL監視する。

環境


実践!

1.ウェブサーバ構築
 1-1.Elastic Beanstalk-[アプリケーションを作成]

 1-2.環境を設定が表示されたら下記を入力
  ・環境枠:ウェブサーバー環境
  ・アプリケーション名:sample-app
  ・環境名:sample-env
  ・プラットフォームタイプ:マネージドプラットフォーム
  ・プラットフォーム:PHP
  ・プラットフォームブランチ:PHP 8.1 runnning on 64bit Amazon Linux 2
  ・プラットフォームのバージョン:3.5.7(Recommended)
  ・アプリケーションコード:サンプルアプリケーション
  ・設定プリセット:単一インスタンス(無料利用枠の対象)


 1-3.[次へ]

 1-4.サービスアクセスの設定が表示されたら下記を入力
  ・サービスロール:既存のサービスロールを使用
  ・既存のサービスロール:aws-elasticbeanstalk-service-role
  ・EC2 キーペア:適当に作成
  ・EC2インスタンスプロファイル:aws-elasticebeanstalk-ec2-role

 1-5.[レビューまでスキップ]
 1-6.レビューが表示されたら内容を確認して[送信]





 1-7.構築完了後、[ドメイン]のURLを控える


2.CloudWatch Synthetics監視設定
 2-1.CloudWatch-[Synthetics Canaries]-[Canaryを作成]
 2-2.Canaryを作成が表示されたら下記を選択
  ・Canaryを作成:設計図を使用する
  ・設計図:ハートビートのモニタリング
  ・名前:sample-canary
  ・アプリケーションまたはエンドポイントURL:[Elastic Beanstalkで払い出されたドメイン]
  ・スクリプトエディタ:デフォルト
  ・スケジュール:継続的に実行
  ・Canaryを実行:間隔
  ・頻度:1分
  ・作成後すぐに開始:✅
  ・障害データの保持:31日(~1か月)
  ・成功データの保持:31日(~1か月)
  ・データストレージ:デフォルト




 2-3.[Canaryを作成]

3.動作確認
 3-1.CloudWatch Canary-[sample-canary]でステータスが[成功]と表示されること
  ・前回の実行ステータス:成功
  ・成功%:100%


4.異常確認
 4-1.適当なZipファイルをファイル名php_ng.zipで作成
  ※空だと作成できない場合は適当に空のメモ帳を作成してZip圧縮する。
 4-2.Elastic Beanstalk-[sample-env]-[アップロードとデプロイ]
 4-3.アップロードとデプロイが表示されたら下記を入力
  ・ファイル名:php_ng.zip
  ・バージョンラベル:1.0
 4-4.[デプロイ]
 4-5.デプロイ完了後、Elastic Beanstalkのドメインをクリックし、サイトが表示されないことを確認

 4-6.CloudWatch Canaryのステータスが[失敗]に変化することを確認


感想

スクリプトをかませて複雑な処理もできるらしいので今度試してみよう(∩´∀`)∩

Amazon Linux 2023にTeraTermで接続できない件について

何気なくいつも通り検証でEC2にAmazon Linuxを選択しデプロイするもTeraTermで接続できない事象が発生。よく見るとAmazon Linux 2023という見慣れないOSで、これによる原因だったので調べてみた。(´・ω・`)

原因

Amazon Linuxで使用する暗号化アルゴリズムが2023からデフォルトssh-rsaがサポートされなくなり、代わりにrsa-sha2-256、rsa-sha2-512がサポートされようになった。以前のTeraTermではrsa-sha2-256、rsa-sha2-512がサポートされていなかったため発生していた。 ※TeraTerm以外のユーザでは事前にサポートされていたようで接続は問題ないようです。

解決策

TeraTerm 5.0 beta 1以降をインストールし使用する。
※5.0 beta 1はこんな感じで。あまり違いがない。アイコンにβのマークがついてる。

補足

※以下ChatGPT様より

暗号化プロトコル とは

暗号化プロトコルは、データを安全に伝送するためのルールセットです。これには、どのようにキーを交換するか、どの暗号化アルゴリズムを使用するか、データをどのようにパッケージ化するかなど、通信が行われる際の手順が含まれます。例としては、HTTPSSSHSSL/TLSなどがあります。


暗号化方式 とは

暗号化方式は、データが暗号化または復号化される具体的な方式を指します。主に、対称暗号化と非対称暗号化の2つに分けられます。対称暗号化では、暗号化と復号化に同じキーが使われます(例:AES)。一方、非対称暗号化では、公開キーで暗号化し、対応する秘密キーで復号化します(例:RSA)。


暗号化アルゴリズム とは

暗号化アルゴリズムは、具体的にデータをどのように暗号化・復号化するかの手順を指します。これは、特定の数学的手順に従ってデータを変換します。AES, DES, RSA, ECCなどが暗号化アルゴリズムの例です。


 概要:暗号化プロトコル
 詳細:暗号化方式
 手順:暗号化アルゴリズム
かな?( ̄д ̄;;)用語がよくわからない。



感想

TeraTermを使用してSSH接続する方は結構いると思うのでこの問題ははまると思った。。。