#はじめに
EC2の構築作業を省力化のため、CloudFormationにおいてEC2のユーザーデータ(EC2起動時に実行されるシェルスクリプト)を使って、Webサーバーをインストールする方法を学習した。その方法を備忘録として残したい。
#手順
CloudFormation>スタック>スタックの作成で、ステップ1では下記のように設定する。
yamlのテンプレートは以下を指定する。
設定し終えたら、次へ進む。
テンプレート↓
ImageId: ami-〇〇については、〇〇の部分をEC2でAMI IDにあるものに直して入力する。
---
Parameters:
SSHKey:
Type: AWS::EC2::KeyPair::KeyName
Description: Name of an existing EC2 key pair for SSH access to the EC2 instance
Resources:
MyInstance:
Type: AWS::EC2::Instance
Properties:
AvailabilityZone: ap-northeast-1a
ImageId: ami-〇〇
InstanceType: t2.micro
KeyName: !Ref SSHKey
SecurityGroups:
- !Ref SSHSecurityGroup
# ユーザーデータからWebサーバーをインストールする
UserData:
Fn::Base64: |
#!/bin/bash -xe
yum update -y
yum install -y httpd
systemctl start httpd
systemctl enable httpd
echo "Hello World from user data" > /var/www/html/index.html
# EC2セキュリティグループ
SSHSecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: SSH and HTTP
SecurityGroupIngress:
- CidrIp: 0.0.0.0/0
FromPort: 22
IpProtocol: tcp
ToPort: 22
- CidrIp: 0.0.0.0/0
FromPort: 80
IpProtocol: tcp
ToPort: 80
ステップ2でスタックの名前とSSHKeyを指定する。今回は「user-data-example」とした。SSHKeyではすでに作成されたSSHKeyを適宜指定する。
次へ進む。
ステップ3では特に何も入力せず、デフォルトのままで次へ進む。
ステップ4で内容に誤りがない確認し、スタックの作成を押す。
該当スタックが正しく作成されているか、ステータスで確認する。
EC2>インスタンスに行き、作成されたインスタンスの詳細を確認する。
問題がなければパブリックIPv4アドレスをURLに入力すると、「Hello World from user data」が画面に表示される。
参考
Ultimate AWS Certified SysOps Administrator Associate 2020
https://dev.classmethod.jp/articles/using-variables-in-ec2-user-data-in-cloudformation/