先に進む前に、AWSのEC2サービスを知っていて、その基本コンポーネントを知っていることを前提としています。 AWSコンソールを使用してEC2インスタンスを作成し、EC2インスタンスの基本を理解するには、私の記事にアクセスすることをお勧めします。ここをクリックして記事に移動してください。 この記事では、Cloudformationを使用して最新のLinux AMIでEC2インスタンスを作成するため、クラウド形成の基本を理解する必要があります。 Cloudformationに気づいておらず、Cloudformationを使用してインスタンスを作成したい場合でも、心配する必要はありません。記事を続行してください。
この記事では、Cloudformation forEC2で利用できるすべてのオプションについて説明するわけではありません。 Cloudformation for EC2サービスで利用できるすべてのオプションを知りたい場合は、AWSの公式ドキュメントにアクセスしてください ここに。
前提条件
- AWSアカウント(作成する お持ちでない場合)。
- Cloudformationテンプレートの基本的な理解。
- EC2インスタンスの基本的な理解。
何する?
- AWSにログインします。
- テンプレートを作成します。
- Cloudformationスタックを作成する
- Cloudformationスタックを削除します
AWSにログインします
クリック ここに AWSログインページに移動します。 ユーザーの認証情報を入力して、AWSアカウントにログインします。
AWSアカウントに正常にログインすると、次のようなメインのAWS管理コンソールが表示されます。
テンプレートを作成する
次のコンテンツを使用して、ローカルマシンにテンプレートcreate-ec2-instance.templateを作成します。
テンプレートをGithubリポジトリからダウンロードすることもできます。テンプレートへのリンクは以下に記載されています。
AWSTemplateFormatVersion: '2010-09-09' Metadata: License: Apache-2.0 Description: 'Create an AWS EC2 instance running the AWS Linux AMI.' Parameters: KeyName: Description: Name of an existing EC2 KeyPair Type: AWS::EC2::KeyPair::KeyName ConstraintDescription: must be the name of an existing EC2 KeyPair. InstanceType: Description: AWS EC2 instance type Type: String Default: t3.small AllowedValues: [t2.nano, t2.micro, t2.small, t2.medium, t2.large, t2.xlarge, t2.2xlarge, t3.nano, t3.micro, t3.small, t3.medium, t3.large, t3.xlarge, t3.2xlarge, m4.large, m4.xlarge, m4.2xlarge, m4.4xlarge, m4.10xlarge, m5.large, m5.xlarge, m5.2xlarge, m5.4xlarge, c5.large, c5.xlarge, c5.2xlarge, c5.4xlarge, c5.9xlarge, g3.8xlarge, r5.large, r5.xlarge, r5.2xlarge, r5.4xlarge, r3.12xlarge, i3.xlarge, i3.2xlarge, i3.4xlarge, i3.8xlarge, d2.xlarge, d2.2xlarge, d2.4xlarge, d2.8xlarge] ConstraintDescription: must be a valid EC2 instance type. SSHLocation: Description: The IP address range allowed to SSH to the EC2 instances Type: String MinLength: 9 MaxLength: 18 Default: 0.0.0.0/0 AllowedPattern: (d{1,3}).(d{1,3}).(d{1,3}).(d{1,3})/(d{1,2}) ConstraintDescription: must be a valid IP CIDR range of the form x.x.x.x/x. LatestAmiId: Type: 'AWS::SSM::Parameter::Value<:ec2::image::id>' Default: '/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2' Resources: EC2Instance: Type: AWS::EC2::Instance Properties: InstanceType: !Ref 'InstanceType' SecurityGroups: [!Ref 'InstanceSecurityGroup'] KeyName: !Ref 'KeyName' ImageId: !Ref 'LatestAmiId' InstanceSecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: Enable SSH access on port 22 SecurityGroupIngress: - IpProtocol: tcp FromPort: 22 ToPort: 22 CidrIp: !Ref 'SSHLocation' Outputs: InstanceId: Description: Id of the newly created AWS EC2 instance Value: !Ref 'EC2Instance' AZ: Description: AZ of the newly created AWS EC2 instance Value: !GetAtt [EC2Instance, AvailabilityZone] PublicDNS: Description: Public DNS Name of the newly created AWS EC2 instance Value: !GetAtt [EC2Instance, PublicDnsName] PublicIP: Description: Public IP address of the newly created AWS EC2 instance Value: !GetAtt [EC2Instance, PublicIp]</:ec2::image::id>
Cloudformationスタックを作成する
Cloudformationダッシュボードに移動するには、画面の左上にあるサービスをクリックして、Cloudformationを検索します。
これがCloudformationのメインダッシュボードです。 選択したリージョンのアカウントに、すでに1つのスタックが作成されています。
新しいスタックを作成するには、[スタックの作成]->[新しいリソースを使用(標準)]をクリックします。
ここで、[テンプレートファイルのアップロード]を選択し、前の手順でローカルマシンに作成したテンプレートを選択します。 続行するには、[次へ]ボタンをクリックしてください。
スタックに名前を指定し、インスタンスタイプを選択し、アカウントから既存のキーを選択します。 サーバーへのSHを許可する特定のIPを指定できます。それ以外の場合は、0.0.0.0 / 0を維持して、ポート22での着信トラフィックを許可します。[次へ]ボタンをクリックして続行します。
タグはオプションです。このステップでタグを追加する場合と追加しない場合があります。 「次へ」ボタンをクリックしてください。
ページの最後をスクロールして、[スタックの作成]ボタンをクリックします。
作成には数分かかります。作成が完了すると、ステータスが「CREATE_COMPLETE」として表示されます。
インスタンスが作成されているかどうかを確認するには、EC2ダッシュボードに移動します。 EC2ダッシュボードに移動するには、画面の左上にあるサービスをクリックしてEC2を検索します。
EC2ダッシュボードで、左側のパネルの[インスタンス]をクリックします。
ここで、新しいインスタンスが作成されたことがわかります。 詳細を確認できます。
Cloudformationスタックを削除します
インスタンスが不要になったら、Cloudformationスタックを削除してインスタンスを削除できます。 Cloudformationスタックを削除すると、作成したリソースが削除されます。 スタックを削除するには、「削除」ボタンをクリックしてください。
表示されたポップアップで削除アクションを確認します。
削除が成功すると、ステータスが「DELETE_COMPLETE」と表示されます。
削除が成功したかどうかを確認するには、EC2ダッシュボードに移動してインスタンスの状態を確認します。 次のスクリーンショットでは、インスタンスの状態が終了していることがわかります。同じステータスが表示されます。
結論
この記事では、Cloudformationスタックを使用してEC2インスタンスを作成するのがいかに簡単であるかを見ました。 同じテンプレートを使用して、複数のスタックを作成できます。 また、Cloudformationスタックを使用して作成されたリソースは、スタック自体を削除することで削除できることもわかりました。
Hope this helps!