目次
ごあいさつ
こんにちは、129です。
今回は、AWS CLIでEC2を起動させる(前編)の続きをやっていきます。
ここまで
前編ではサブネットとインターネットゲートウェイを関連付けるところまでしました。
後編はセキュリティグループの作成からやってきたいと思います。
何をやってたんや?と気になる方は前編をご確認ください。
AWS CLIでEC2を起動させる(前編)
セキュリティグループの作成
セキュリティグループは仮想ファイアウォールです。
セキュリティグループには--group-nameという名前をつけるコマンドがあります。
タグとは別物ですが同じ感覚で名前を付けましょう。
--descriptionはこのセキュリティグループの説明を書いておくところです。
日本語だとエラーが出るので英語や日付など、自分がわかるように書いておけばOKです。
aws ec2 create-security-group --group-name "129blog-sg" --description "This is test security group" --vpc-id vpc-0f39501a0a89139e5
{
"GroupId": "sg-0edb3a7456d030e1d"
}
セキュリティグループのルールを作成
今回はSSH接続が目的なので22番ポートを0.0.0.0/0で許可します。
実際に使う際はセキュアな設定にしてください。
aws ec2 authorize-security-group-ingress --group-id sg-0edb3a7456d030e1d --protocol tcp --port 22 --cidr 0.0.0.0/0
{
"Return": true,
"SecurityGroupRules": [
{
"SecurityGroupRuleId": "sgr-0c5560638485f0b4d",
"GroupId": "sg-0edb3a7456d030e1d",
"GroupOwnerId": "366496186996",
"IsEgress": false,
"IpProtocol": "tcp",
"FromPort": 22,
"ToPort": 22,
"CidrIpv4": "0.0.0.0/0"
}
]
}
EC2にアクセスするためのキーペアの作成
EC2にログインするための秘密鍵を作成します。
aws ec2 create-key-pair --key-name examplekey --query 'KeyMaterial' --output text > examlpekey.pem
コマンド入力後にカレントディレクトリに鍵が作成されていたらOK
ls -laなどで確認
-rw-rw-r-- 1 cloudshell-user cloudshell-user 1675 Jan 8 21:11 examplekey.pem
こんな感じでできてたらOKです。chmodコマンドでrootだけに実行権限を付与しておきましょう。
chmod 400 examplekey.pem
EC2インスタンス起動
ついにEC2インスタンス起動です。
コンソールで起動する際はAMIをOS名で検索すれば出てくるのですが
AWS CLIの場合AMIIDで指定しないといけません。今回はCentOS7を指定します。
AMIIDはCLIで探すか調べないとでてきません。
今回起動するEC2はCentOS7、EC2×1台、t2.microです
起動に最低限必要な情報を入れていきます。
aws ec2 run-instances --image-id ami-0ddea5e0f69c193a4 --count 1 --instance-type t2.micro --key-name examplekey --security-group-ids sg-0edb3a7456d030e1d --subnet-id subnet-0a13302276d0536a8
するとすぐにレスポンスが返ってきます。
{
"Groups": [],
"Instances": [
{
"AmiLaunchIndex": 0,
"ImageId": "ami-0ddea5e0f69c193a4",
"InstanceId": "i-05082b87b95e7dfaa",
"InstanceType": "t2.micro",
"KeyName": "examplekey",
"LaunchTime": "2023-01-08T21:14:04+00:00",
"Monitoring": {
"State": "disabled"
},
"Placement": {
"AvailabilityZone": "ap-northeast-1a",
"GroupName": "",
"Tenancy": "default"
},
"PrivateDnsName": "ip-10-0-0-34.ap-northeast-1.compute.internal",
"PrivateIpAddress": "10.0.0.34",
"ProductCodes": [],
"PublicDnsName": "",
"State": {
"Code": 0,
"Name": "pending"
},
"StateTransitionReason": "",
"SubnetId": "subnet-0a13302276d0536a8",
"VpcId": "vpc-0f39501a0a89139e5",
"Architecture": "x86_64",
"BlockDeviceMappings": [],
"ClientToken": "ab6e9e27-7e60-461a-a0ac-daee5674ee95",
"EbsOptimized": false,
"EnaSupport": true,
"Hypervisor": "xen",
"NetworkInterfaces": [
長いので以下略
Enterを長押しするとENDが見えてくるのでqで抜けます。
EC2に名前を付けます
aws ec2 create-tags --resource i-05082b87b95e7dfaa --tags Key=Name,Value=129blog
パブリックIPを確認
aws ec2 describe-instances --instance-id i-05082b87b95e7dfaa
{
"Reservations": [
{
"Groups": [],
"Instances": [
{
"AmiLaunchIndex": 0,
"ImageId": "ami-0ddea5e0f69c193a4",
"InstanceId": "i-05082b87b95e7dfaa",
"InstanceType": "t2.micro",
"KeyName": "examplekey",
"LaunchTime": "2023-01-08T21:14:04+00:00",
"Monitoring": {
"State": "disabled"
},
"Placement": {
"AvailabilityZone": "ap-northeast-1a",
"GroupName": "",
"Tenancy": "default"
},
"PrivateDnsName": "ip-10-0-0-34.ap-northeast-1.compute.internal",
"PrivateIpAddress": "10.0.0.34",
"ProductCodes": [],
"PublicDnsName": "",
"PublicIpAddress": "IPアドレス",
EC2インスタンスの情報からパブリックIPアドレスが分かります。
SSHでEC2インスタンスにログイン
ログインできるか試します。今回CentOSを選んだのでユーザー名はcentosです。
AmazonLinuxだとec2-userになります。
ssh -i examplekey.pem centos@IPアドレス
===========================================
[centos@ip-10-0-0-34 ~]$
ログイン成功しました。ちゃんと起動させることができました。
立つ鳥跡を濁さず
今回は削除までCLIでやっていきます。
作ったものすべて削除していきます。
EC2インスタンスの削除
aws ec2 terminate-instances --instance-id i-05082b87b95e7dfaa
{
"TerminatingInstances": [
{
"CurrentState": {
"Code": 48,
"Name": "terminated"
},
"InstanceId": "i-05082b87b95e7dfaa",
"PreviousState": {
"Code": 80,
"Name": "stopped"
}
}
]
}
コマンドが実行されるとレスポンスが返ってきます。
セキュリティグループの削除
aws ec2 delete-security-group --group-id sg-0edb3a7456d030e1d
EC2の時は返ってきましたが何もレスポンスが返ってきません。
念のために確認
aws ec2 describe-security-groups --group-id sg-0edb3a7456d030e1d
An error occurred (InvalidGroup.NotFound) when calling the DescribeSecurityGroups operation: The security group 'sg-0edb3a7456d030e1d' does not exist
存在しないよとエラーが返ってきていれば削除できています。
サブネットの削除
サブネットも何も返ってこないのでセキュリティグループの時みたいに削除できているか確認してください。
aws ec2 delete-subnet --subnet-id subnet-0a13302276d0536a8
ルートテーブルの削除
ルートテーブルも同様です確認してください。
aws ec2 delete-route-table --route-table-id rtb-068feb97822906517
インターネットゲートウェイの削除
VPCからインターネットゲートウェイをデタッチする
インターネットゲートウェイを削除するときはまずVPCからデタッチしないといけません。
でなければエラーがでて削除ができません。
aws ec2 detach-internet-gateway --internet-gateway-id igw-0992104cd3a6357fa --vpc-id vpc-0f39501a0a89139e5
インターネットゲートウェイを削除
aws ec2 delete-internet-gateway --internet-gateway-id igw-0992104cd3a6357fa
VPCを削除
aws ec2 delete-vpc --vpc-id vpc-0f39501a0a89139e5
キーペアの削除
aws ec2 describe-key-pairs --key-name examplekey
カレントディレクトリに残っているのでそちらも削除
rm examlekey.pem
これで後片付けは終了です。お疲れ様でした。
おわり
今回は簡単にEC2を起動させましたが、より本番環境に近い形で起動させる際は
利用するサービスが増えて複雑な設定をする必要があります。それはまたやっていきましょう。
2022年新卒入社、現在テクニカルサポートで修行中。