1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ひろ亭Advent Calendar 2021

Day 25

AWS CLIで Web サイトを構築、管理、運用する(最終日)

Last updated at Posted at 2021-12-24

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 と仲良くできるとよいと思いますよ。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?