tech

hugoのブログ記事をs3にアップしてCloudfrontのキャッシュ削除までを一気に行う

hugoのブログ記事をs3にアップしてCloudfrontのキャッシュ削除までを一気に行うシェルスクリプトです。 Github Actions作るまでのつなぎとして使用するために作成。 1. IAMユーザを作っておく s3の同期取るのとcloudfrontのキャッシュを削除するためのIAMユーザを作っておきましょう。 バケット名やアカウントID、CloudfrontのディストリビューションIDは環境に合わせて適宜調整してください。 (adminやpower権限を持つユーザですでにconfigureしていて、それを使うなら不要) 以下はIAMユーザにアタッチするIAMポリシーのjsonです。 { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket", "s3:DeleteObject", "cloudfront:CreateInvalidation" ], "Resource": [ "arn:aws:s3:::${bucket}/*", "arn:aws:s3:::${bucket}", "arn:aws:cloudfront::${account_id}:distribution/*" ] } ] } 2. configureする 上記ポリシーをアタッチしたユーザを作成し、アクセスキーを作成した上でconfigureしておく aws configure --profile hugo シェルスクリプト フォルダやバケットのディレクトリは環境に合わせて適宜調整してください # /bin/sh s3_bucket=s3://$1/ cloudfront_dist=$2 # ブログを生成 hugo # publicフォルダとs3の中身を同期 aws s3 sync public/ $s3_bucket --profile hugo # キャッシュを削除 aws cloudfront create-invalidation --distribution-id $cloudfront_dist --paths "/*" --profile hugo 実行方法例

AWS EC2 + LambdaでMinecraftサーバーを1ヶ月運用したので、掛かった費用を公開する

一晩で街の裏側が更地になった こんにちは!キヨナガです。 AWSのサービスを使ってマイクラサーバーを立ち上げて身内と遊んだので、そのときに掛かった諸費用について公開したいと思います。 はじめに マイクラサーバーの立て方とかはいくらでも記事があるのですが、以下のような記載がなかったため、備忘録として残そうと思います。 実際立てたらどれくらい費用が掛かったか スペック的にはどれくらいが必要か 費用を抑えるためにどのような取り組みをすべきか ※なお、本記事では具体的なコマンドやソースコードについては述べません。ご了承ください。 今回の構成・スペックについて 費用の前に、今回の使用した構成を説明します。 ざっくり、以下のような構成になっています。 仕組みとしては以下のようになっています。 Discordで特定のコマンドを打つことにより、EC2インスタンス①のbotが反応する EC2インスタンス①内のbotがLambdaにEC2インスタンス②を起動・停止する関数を実行させる Lambdaはそれを受け取り、EC2インスタンス②を起動・停止させる。 EC2インスタンス②の起動時、worldフォルダの中身をS3バケットにコピーし、バックアップを取る。 EC2インスタンス① 仮想サーバーサービスです。 Discordのbotが入っています。このbotがいるチャンネルで特定のコマンドを入力することで様々な機能が使えます。自作。 今回は後述するEC2②を起動・停止させるコマンドの受け付けに使用しています。 ほかにも、サイコロを振る機能、ゲーム『valorant』のマップピックを勝手にしてくれる機能、競馬の重賞が近くなると勝手にスレッドを建てる機能などが入っています。 スペックはt2.micro。リージョンは無料利用枠を考えus-east2(オハイオ)です。 Lambda サーバーレスなイベント駆動型のコンピューティングサービスです。 今回は、EC2②を起動や停止させるために使用します。 EC2インスタンス② 仮想サーバーサービスです。 この中にマインクラフト(バニラ) が入っています。 インスタンスが起動すると、自動でMinecraftのサーバーが立ち上がるように設定しています。 スペックはt3a.medium。リージョンは通信速度を考えap-northeast1(東京)です。 5~6人でプレイしながらチャンクを大量に読み込んだりするとちょっと重くなるみたいです。ゲームできないほどではないかな…というくらい。 一度t3a.smallに変更してみたのですが、起動段階でサーバーが落ちてしまったので、おそらくここが最低値なんじゃないかなと思います。 Elastic IP 固定IPアドレスを提供するサービスです。 マインクラフトはIP(orドメイン)を指定して接続します。EIPを使用することで固定ができます。 起動する度にIPを取得して通知すればよいので不要ではあるのですが、プレイヤーにいちいちIPを設定させるのが面倒だったため採用。 S3 bucket データを保存できる、いわゆるストレージサービスです。 アクセス頻度や重要性を考え、ストレージクラスはOneZone-IAを採用しました。 リージョンはap-northeast1(東京)ですが、別に安いリージョンでも良かったかも。 ほか、使用料金に応じてアラートを出してくれるBudgetや、Budgetや各Lambda関数などに権限を与えるIAMサービスロールなどを使用していますが、本題ではない&今回は料金が発生しなかったため割愛します。

もう受けられない!AWS-CLF(C01)の合格記

燦然と輝く合格の文字。 はじめに 9月9日にCertified Cloud Practitioner(CLF-C01)試験を受け、無事合格しました。 転職して第一の目標だったので、とりあえず受かってほっとしています。 今回は合格記としてどんなことをやったのか書こうと思います。 が、一点だけ注意点ですが、CLF-C01は2023年9月18日を以て廃止となっており、後継のCLF-C02となっています。 試験範囲も大幅に変更がなされており、この合格記通りにやっても役には立たない可能性がありますのでご注意ください。 AWS CLFって? AWS CLFはAWS認定試験のひとつです。 AWSの資格の中でも入門に位置する部分で、基本的なAWSサービスについて身につけることができる試験です。 詳しくは以下ページをご参照ください。 AWS 認定 事前情報 筆者のスペックです。 (一応)情報系の研究をしていたが、専門は自然言語処理だったのでクラウドやネットワークとは全く関係ない 基本情報程度なら復習すれば受かるかな程度のIT知識 AWSを本格的に触りだしたのは2023年6~7月から それまでは業務でS3(ストレージサービス)をちょっと触ったことがあった程度 勉強したこと 1. udemyでの対策講座・模擬試験 (おすすめ度:★★★★★) 神。 自分は以下の二つを活用しました。 当時は書いてなかったはずだが、今はC01&C02版って書いてあるのでC02にも対応してるっぽい 【C01&C02版】これだけでOK! AWS認定クラウドプラクティショナー試験突破講座(豊富な試験問題290問付き) 初学者の方に。 試験範囲の各サービスの前段階、「そもそもクラウドとは?」というところからやってくれます。 基本的に試験範囲の各サービスについて大まかにどのようなサービスか、どのような利用体系か、どのようなプランがあるかなどについて説明してくれます。 EC2などのサービスについては、実際にどのようにして使うかを実践しながらやってくれます。 自分はちょっとだけAWS触っていたのでここはスルーしました。 自分の場合は毎日1~3時間程度見て、ざっくり10日くらいで一周しました。 後述の模擬試験をやりながら、分からなかった部分や不安な部分があったら都度復習にいけます。 【C01&C02版】この問題だけで合格可能!AWS 認定クラウドプラクティショナー 模擬試験問題集(6回分390問) 上が終わった方や、すでに試験範囲のサービスをほとんど使ったことがあるという方に。 とにかく問題を解きたい方のための問題集です。 基本レベルが2つと、本番レベルが4つあります。 自分の場合、試験前日時点で基本レベルは85%、本番レベルは60%程度の正答率でした。 自分の感覚だと本番は『基本レベル』くらいの難易度の問題が6.5割、『本番レベル』くらいの難易度の問題が3.5割な印象。 なお、Udemyはしょっちゅうセールをしているのでよほど急ぎではない限り定価で買う必要は無いかと思います。個人的には1800円くらいが普通、1200円だと買い。