25日目!最終日!
本日は、これまでの1日目~24日目までの内容を振り返っていきます。
1日目~4日目(Amazon S3 Web Hosting)
Amazon S3 の静的サイトホスティングの設定をご紹介しました。
S3 に関するコマンドは、オブジェクト操作周りが行える s3 コマンド、API を操作する s3api とユースケースを分けて構成されています。また cp や ls といった馴染み深いコマンドが設定されているので、単にオブジェクトを格納したり、取得したりする際に悩むことが少なくなっています。
5日目~12日目(Amazon CloudFront、AWS WAF など)
CDN のサービスである、Amazon CloudFront とWeb Application Firewall のサービスである AWS WAF をご紹介しました。
あわせて、独自ドメインの設定を通じて、Amazon Route53 や 証明書のサービスである AWS Certificate Manager(ACM) もご紹介しました。
今回は、ドメインの取得は別サービスで行いましたが、route53domains register-domain
コマンドで行うことができます。
13日目(Amazon CloudWatch メトリクス)
Web サイトのアクセス数(リクエスト数)を取得するために、Amazon CloudWatch メトリクスをご紹介しました。ちなみに、 cloudwatch put-metric-data
コマンドを使うことでメトリクスを登録することもできます。
14日目~18日目(ネットワーク、EC2、AutoScaling)
後半戦に入ってからは、馴染みのある Amazon EC2 や Amazon Virtual Private Cloud(VPC)、AutoScalingをご紹介しました。
マネージメントコンソールでウィザードに従えばポチポチっと数クリックで数分で EC2 インスタンスを起動させられますが、 AWS CLI であれば、ワンライナーで起動させることができます。
19日目(セッションマネージャー)
運用で必要になるサーバーへの接続を可能にするためにセッションマネージャーをご紹介しました。この環境では、 AutoScaling で起動してくる EC2 インスタンスはプライベートサブネットで稼働するため、VPC エンドポイントを用意しました。
20日目(Amazon CloudWatch Logs)
OS のログやアプリのログを CloudWatch Log で確認できるように、CloudWatch エージェントの設定を行いました。ログ監視サーバーや統合ログサーバーなどを CloudWatch Logs に集約できるものです。
ちなみに、 CloudWatch エージェントはログだけでなくメトリクス収集も行ってくれます。
21日目~22日目(AWS CodeCommit, AWS CodePipeline)
Web サイトなのでコンテンツのバージョン管理などをするために、リポジトリサービスの CodeCommit のご紹介や環境構築、登録したコンテンツをエンドユーザーに配信できるように自動処理してくれる CodePipeline のパイプラインを作成しました。
23日目~24日目(AWS Lambda, Amazon API Gateway)
そしてアドカレ最後として、サーバレス周りのキモになる API Gateway と Lambda 関数のご紹介と設定、構築を実施しました。
おまけに、Lambda の環境情報やストレージ情報など HTML で出力するコードを設定しました。
この期間に実行したコマンド
全 80 種類のコマンドを実行、ご紹介しました。
普段の構築作業では、マネージメントコンソールやCloudFormationなどを使うことが多いですが、個々の API を見ていくことで、例えば、IAM ポリシーにどんなアクション許可が必要なのかが見えてくると思います。ということは、AWS CLIが動かないとか、Lambda関数が動かないといった際、「あ、このアクション許可が足りてないんだね」ってことがすぐにわかり、トラブルシューティングの迅速化にもつなげられると思います。
- acm describe-certificate
- acm request-certificate
- apigateway create-deployment
- apigateway create-rest-api
- apigateway get-resources
- apigateway put-integration
- apigateway put-integration-response
- apigateway put-method
- apigateway put-method-response
- apigateway test-invoke-method
- autoscaling create-auto-scaling-group
- autoscaling create-launch-configuration
- autoscaling update-auto-scaling-group
- cloudfront create-cloud-front-origin-access-identity
- cloudfront create-distribution
- cloudfront get-distribution-config
- cloudfront update-distribution
- cloudwatch get-metric-statistics
- codecommit create-repository
- codepipeline create-pipeline
- codepipeline get-pipeline-state
- ec2 associate-route-table
- ec2 attach-internet-gateway
- ec2 authorize-security-group
- ec2 authorize-security-group-egress
- ec2 authorize-security-group-ingress
- ec2 create-image
- ec2 create-internet-gateway
- ec2 create-route
- ec2 create-route-table
- ec2 create-security-group
- ec2 create-subnet
- ec2 create-vpc
- ec2 create-vpc-endpoint
- ec2 describe-instances
- ec2 modify-subnet-attribute
- ec2 revoke-security-group-egress
- ec2 run-instances
- ec2 terminate-instances
- elbv2 create-listener
- elbv2 create-load-balancer
- elbv2 create-target-group
- events put-rule
- events put-targets
- iam add-role-to-instance-profile
- iam attach-role-policy
- iam create-instance-profile
- iam create-policy
- iam create-role
- lambda add-permission
- lambda create-function
- lambda get-function
- lambda invoke
- logs describe-log-groups
- logs describe-log-streams
- route53 change-resource-record-sets
- route53 create-hosted-zone
- s3 cp
- s3 ls
- s3 website
- s3api create-bucket
- s3api delete-bucket-website
- s3api get-bucket-lifecycle-configuration
- s3api get-bucket-logging
- s3api get-bucket-policy
- s3api get-bucket-website
- s3api head-object
- s3api put-bucket-acl
- s3api put-bucket-lifecycle-configuration
- s3api put-bucket-logging
- s3api put-bucket-policy
- s3api put-object-acl
- s3api put-public-access-block
- ssm get-parameter
- ssm start-session
- ssm terminate-session
- wafv2 create-rule-group
- wafv2 create-web-acl
- wafv2 get-web-acl
- wafv2 update-web-acl
最後に
この一連のアドカレのように、一から AWS CLI で構築していくことは少ないかもしれません。
しかし、運用作業などで用いられる「運用手順書」や「作業手順書」といったものを作る際に、AWS CLI を使うことで、マネージメントコンソールのスクリーンショットべたべた手順書から脱却できるということです。
スクリーンショットべたべた手順書を作成したはよいが、ユーザーインターフェースの更新により作り直すといった経験ありませんか?わたしは何度もあります。
ぱっと見敷居は高いかもしれませんが、全体的な運用工数低減にもつなげられるので、AWS CLI と仲良くできるとよいと思いますよ。