[AWS] EC2インスタンスを作成しSSH接続してみる(AWS Cloudformation)

投稿者: | 2025年7月19日

AWSのEC2インスタンス作成しSSH接続してみるという処理を、これまで「AWS Management Console」と「AWS CLI」2通りで実現してみました。

今回は AWS Cloudformation で同じことを実行してみます。

キーペアの作成

まず、AWS CLIを使って次のコマンドでキーペアを作成します。

aws ec2 create-key-pair --key-name CFKey --query "KeyMaterial" --output text > CFKey.pem

コマンド入力したカレントディレクトリに.pemファイルができていればOK。

CloudFormationテンプレートの作成と保存

以下の内容を、”ec2.yml”というテキスト形式で保存します。

AWSTemplateFormatVersion: '2010-09-09'
Description: Simple EC2 instance with SSH access

Parameters:
  KeyName:
    Description: EC2 KeyPair Name
    Type: AWS::EC2::KeyPair::KeyName

Resources:
  MySecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: Allow SSH access
      SecurityGroupIngress:
        - IpProtocol: tcp
          FromPort: 22
          ToPort: 22
          CidrIp: 0.0.0.0/0

  MyInstance:
    Type: AWS::EC2::Instance
    Properties:
      InstanceType: t2.micro
      KeyName: !Ref KeyName
      ImageId: ami-08350f5895bb9d2fe  # Amazon Linux 2023 kernel-6.1 AMI (使用するリージョン毎に異なるのでチェックが必要)
      SecurityGroupIds:
        - !Ref MySecurityGroup
      Tags:
        - Key: Name
          Value: CFInstance

“MySecurityGroup”というセキュリティグループを作成している個所、ここではどこからでもアクセス可能なように0.0.0.0/0を指定していますが、本来であれば絞り込みを行った方が安全。

スタックの作成

以下のコマンドでスタックを作成します。(Windowsコマンドプロンプト方式)

aws cloudformation create-stack ^
  --stack-name MyStack ^
  --template-body file://ec2.yml ^
  --parameters ParameterKey=KeyName,ParameterValue=CFKey

AWS management console上でもスタックが作成されていることが確認できます。

EC2インスタンスも作成されています。

SSH接続

パブリックIPアドレスを確認します。

マネジメントコンソール上でも見られますが、AWS CLIから以下のコマンドでも確認可能。

aws ec2 describe-instances ^
  --filters Name=tag:Name,Values=CFInstance ^
  --query "Reservations[*].Instances[*].PublicIpAddress" ^
  --output text

パブリックIPアドレスを確認できたら、次のコマンドを実行。

ssh -i CFKey.pem ec2-user@<確認したパブリックIPアドレス>

次の表示が出て接続完了です。

   ,     #_
   ~\_  ####_        Amazon Linux 2023
  ~~  \_#####\
  ~~     \###|
  ~~       \#/ ___   https://aws.amazon.com/linux/amazon-linux-2023
   ~~       V~' '->
    ~~~         /
      ~~._.   _/
         _/ _/
       _/m/'

リソースの削除

最後に余計な課金を防ぐためにも、リソースを全て削除しておきましょう。

aws cloudformation delete-stack --stack-name MyStack

マネジメントコンソール上で、スタックが削除されているのが確認できます。