📝
AWS CLIハンズオンしてみた
AWSCLIとは
AWS のサービスを管理するための統合ツール。
簡単に言うとコードでAWSリソースの管理、作成ができる。
aws + コマンド + サブコマンド + パラメータの構成でできている。
事前準備
事前準備として何点かございますが、下記を参照ください
参照:CLI設定
アクセスキーシークレットキーの発行および、紐づけ終了しております。
構成図として下記のリソースをCLIで作成していきます。
※注意点としてALBはマルチAZの構成でないと紐づけができないので注意です
vpc作成
$ aws ec2 create-tags \
> --resources vpc-0a861ea14ec1a57a7 \
> --tags Key=Name,Value=test-vpc
tag付け
$ aws ec2 create-subnet \
> --vpc-id vpc-0a861ea14ec1a57a7 \
> --cidr-block 10.0.11.0/24 \
> --availability-zone ap-northeast-1a
サブネットA
$ aws ec2 create-subnet \
> --vpc-id vpc-0a861ea14ec1a57a7 \
> --cidr-block 10.0.11.0/24 \
> --availability-zone ap-northeast-1a
サブネットB※サブネットBは違うAZを指定してください
$ aws ec2 create-tags \
> --resources vpc-0a861ea14ec1a57a7 \
> --tags Key=Name,Value=test-vpc
サブネットAタグ付け
$ aws ec2 create-tags \
> --resources subnet-034bafd550d3bfc03 \
> --tags Key=Name,Value=subnetA
サブネットBタグ付け
$ aws ec2 create-tags \
> --resources subnet-0bb7c38f1dbf9358b \
> --tags Key=Name,Value=subnetB
自動でパブリックIPが割り当てられるように設定
サブネットA
$ aws ec2 modify-subnet-attribute \
> --subnet-id subnet-034bafd550d3bfc03 \
> --map-public-ip-on-launch
IGW作成
$ aws ec2 create-internet-gateway
vpcにアタッチ
※作成したvpcidなどは控えておくと作成しやすい
$ aws ec2 attach-internet-gateway \
> --internet-gateway-id igw-07b60753d17f91d2c \
> --vpc-id vpc-0a861ea14ec1a57a7
ルートテーブル作成&IGW紐づけ
$ aws ec2 create-route \
> --route-table-id rtb-03ad3801482963a0b \
> --destination-cidr-block 0.0.0.0/0 \
> --gateway-id igw-07b60753d17f91d2c
SG作成
$ aws ec2 create-route \
> --route-table-id rtb-03ad3801482963a0b \
> --destination-cidr-block 0.0.0.0/0 \
> --gateway-id igw-07b60753d17f91d2c
SGタグ付け
$ aws ec2 create-tags \
> --resources sg-0e610aecaa4a7456a \
> --tags Key=Name,Value=test-sg
インバウンドルール作成
※今回は接続とかは考えてないのでport22だけ解放
$ aws ec2 authorize-security-group-ingress \
> --group-id sg-0e610aecaa4a7456a \
> --protocol tcp \
> --port 22 \
> --cidr 0.0.0.0/0
ec2作成
$ aws ec2 run-instances \
> --image-id ami-0f9816f78187c68fb \
> --security-group-ids sg-0e610aecaa4a7456a \
> --subnet-id subnet-034bafd550d3bfc03 \
> --count 1 \
> --instance-type t2.micro \
> --key-name test-key \
> --query 'Instances[0].InstanceId' \
> --associate-public-ip-address
※料金がかからないように一旦停止
$ aws ec2 stop-instances \
> --instance-ids i-09e7630f66b8b094a
ALB作成
$ aws elbv2 create-load-balancer \
> --name test-load-balancer \
> --subnets subnet-034bafd550d3bfc03 subnet-0bb7c38f1dbf9358b \
> --security-groups sg-0e610aecaa4a7456a
ターゲットグループ作成
aws elbv2 create-target-group \
--name test-targets \
--protocol HTTP \
--port 80 \
--vpc-id vpc-0a861ea14ec1a57a7 \
--ip-address-type ipv4
インスタンスをターゲットグループに紐づけ
※インスタンスを停止したままだと紐づけできない
aws elbv2 register-targets \
--target-group-arn arn:aws:elasticloadbalancing:ap-northeast-1:668491570827:targetgroup/test-targets/b3964474663b5333 \
--targets Id=i-09e7630f66b8b094a
ALBとターゲットグループを紐づけ
aws elbv2 register-targets \
--target-group-arn arn:aws:elasticloadbalancing:ap-northeast-1:668491570827:targetgroup/test-targets/b3964474663b5333 \
--targets Id=i-09e7630f66b8b094a
S3作成
$ aws s3 mb s3://test-ob-bukett
バケットポリシーは下記のように設定
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::582318560864:root"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::test-ob-bukett/alblog/AWSLogs/668491570827/*"
}
]
}
アクセスログONに変更
$ aws elbv2 modify-load-balancer-attributes \
> --load-balancer-arn arn:aws:elasticloadbalancing:ap-northeast-1:668491570827:loadbalancer/app/test-load-balancer/dec13a869b3e6b2a \
> --attributes Key=access_logs.s3.enabled,Value=true Key=access_logs.s3.bucket,Value=test-ob-bukett
感想
作成自体のコマンドは問題なくできましたが、詳細的な設定変更が意外と手間をとりました。
ハンズオンでマーネージドコンソールから作成する手順など最低限の知識が必要かなと感じましたが、missがなくなるログとして残る検索など楽な点が多く今後は
CLIでリソースなど作成していこうと思います。
Discussion