AWS EC2 初めてのインスタンス作成からSSH接続まで | アントレプログラマー

AWS EC2 初めてのインスタンス作成からSSH接続まで

AWS

こんにちは、ニキです。

この記事では以下のような疑問を解消します。

  • AMIとアーキテクチャの選び方は?
  • インスタンスタイプの選び方は?
  • キーペアは指定した方がいい?
  • ネットワーク設定の方法は?
  • SSH接続の方法は?

インスタンスを作成した後に、SSH接続する流れで解説していきます。

Takaharu Niki

・Webエンジニア6年目。
・バックエンドを中心に、フロントエンドやDevOps業務も経験。
・現在は、自社サービス企業のテックリードとして従事。

Takaharu Nikiをフォローする

AWS EC2 インスタンス作成

EC2コンソールへ移動し、インスタンスを起動 を選択します。

アプリケーションおよび OS イメージ (Amazon マシンイメージ)

以下のように設定します。

  • Amazon マシンイメージ (AMI): Amazon Linux 2023 AMI

AWSサービスとの連携がスムーズなので、Amazon Linux の最新バージョンを選択します。

  • アーキテクチャ: 64ビット(Arm)

Armの方が安いインスタンスタイプを選択できます。また、パフォーマンスが高いとの報告もあります。余談ですが、MacのM1チップにも採用されたことで注目がさらに高まっているアーキテクチャです。

インスタンスタイプ

誤解を恐れずに言うと、個人用途ならt系、商用ならm系を選択するでいいです。

t系の方が多少安いですが、バースト機能によって運用が少し難しくなります。今回は個人用途の想定で作成します。 世代は最新、サイズを最小にすると最安になるのでt4g.nanoにするつもりでしたが、無料トライアルが利用できたのでt4g.smallにします。

無料トライアルについては、以下リンク先の Q: T4g の無料トライアルを利用するにはどうすればよいですか? 以降のQAが参考になります

よくある質問 - Amazon EC2 | AWS
AmazonEC2に関するよくある質問への回答をご覧ください。

料金表は以下リンク先に記載があり、一般用途向けのインスタンスタイプとしてt系とm系が提供されていることがわかります。

インスタンスタイプ - Amazon EC2 | AWS
AmazonEC2では、異なるユースケースに合わせて最適化されたさまざまなインスタンスタイプが用意されています。インスタンスタイプはさまざまなCPU、メモリ、ストレージ、ネットワークキャパシティーの組み合わせによって構成されているため、アプリケーションのリソースとして適切な組み合わせを柔軟に選択できます。

キーペア (ログイン)

今回は簡単のためにキーペアを使用してSSH接続可能にします。

キーペアの作成方法は以下で解説しています。

ちなみに、SSHを使わずにコンソールからセッションマネージャーを使って接続するなら、 キーペアなしで続行(推奨されません) を選択します。 推奨されないない理由は、セッションマネージャーを使わないとインスタンスへの接続ができなくなるからだと思います。 ただ、セキュリティの面では不要にポートを許可しない分、むしろ推奨な設定です。

ネットワーク設定

今回は個人用を想定して、以下のように設定します。

  • VPC: デフォルト
  • サブネット:指定なし
  • パブリック IP の自動割り当て: 有効化 ALBを介さずに直接通信する想定です。
  • ファイアウォール (セキュリティグループ): セキュリティグループを作成する
    • セキュリティグループルール1
      • タイプ:ssh
      • ソースタイプ:自分のIP
    • セキュリティグループルール2
      • タイプ:HTTP
      • ソースタイプ:任意の場所
    • セキュリティグループルール3
      • タイプ:HTTPS
      • ソースタイプ:任意の場所

個人用なのでデフォルトのパブリックサブネットを使用し、ALBを介さずに直接通信する想定です。SSHで接続できるように許可を入れています。 商用ならプライベートサブネットを使用し、ALB経由で通信したほうがいいです。

ストレージを設定

デフォルトのままにします。

概要

設定内容に問題なければ、インスタンスを起動 を選択します。

AWS EC2 インスタンスへSSH接続

成功画面に遷移するので、インスタンスに接続 を選択します。

SSHクライアント タブを選択すると、SSH接続の方法が解説されています。

この通りに実施すれば接続できます。

SSHクライアントを開いた後、プライベートキーのパーミッションを変更し、SSH接続します。

成功すると以下のような感じになります。

% chmod 400 key-pair.pem
% ssh -i "key-pair.pem" ec2-user@ec2-**-**-**-**.ap-northeast-1.compute.amazonaws.com
   ,     #_
   ~\\_  ####_        Amazon Linux 2023
  ~~  \\_#####\\
  ~~     \\###|
  ~~       \\#/ ___   <https://aws.amazon.com/linux/amazon-linux-2023>
   ~~       V~' '->
    ~~~         /
      ~~._.   _/
         _/ _/
       _/m/'

ちなみに、パーミッションに問題があると以下のようなエラーになります。

% ssh -i "key-pair.pem" ec2-user@ec2-**-**-**-**.ap-northeast-1.compute.amazonaws.com
The authenticity of host 'ec2-**-**-**-**.ap-northeast-1.compute.amazonaws.com (**.**.**.**)' can't be established.
ED25519 key fingerprint is SHA256:********************************
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'ec2-**-**-**-**.ap-northeast-1.compute.amazonaws.com' (ED25519) to the list of known hosts.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for 'key-pair.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "key-pair.pem": bad permissions
ec2-user@ec2-**-**-**-**.ap-northeast-1.compute.amazonaws.com: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

まとめ

この記事では以下のような疑問を解消できるように執筆しました。

  • AMIとアーキテクチャの選び方は?
  • インスタンスタイプの選び方は?
  • キーペアは指定した方がいい?
  • ネットワーク設定の方法は?
  • SSH接続の方法は?

次のステップとして、EC2インスタンスをWebサーバーとして使いたい場合は以下の記事がおすすめです。

Takaharu Niki

・Webエンジニア6年目。
・バックエンドを中心に、フロントエンドやDevOps業務も経験。
・現在は、自社サービス企業のテックリードとして従事。

Takaharu Nikiをフォローする
AWS
Takaharu Nikiをフォローする
アントレプログラマー
タイトルとURLをコピーしました