- 1. AWS SAA(Solution Architect associate)に合格したので学習方法についてまとめてみた。
- 2. AWS WAF は使い込みすぎては行けない(2024/03現在)
- 3. OauthとSAMLの違いについての備忘録
- 4. S3 バケットポリシーについてメモ
- 5. Cloud9にCloudWatch Agentを入れて、メモリ使用率を監視してみた
- 6. AWS RDSのデータベースを使用したPHPの掲示板で時刻表示が直らなかった原因
- 7. 【2024年春Ver.】AWS Lambda Layerの作成方法をわかりやすく解説【Python3.12】
- 8. AWS勉強備忘録13 – Amazon S3
- 9. 【AWS EC2】Zabbix6.0インストール(AlmaLinux9.3, MySQL8.0.36, PHP-fpm8.1)
- 10. マネジメントコンソールで作成したリソースをTerraformに取り込み
- 11. AWSでWeb3層アーキテクチャを立てるときのハマリポイント(インフラ部分)
- 12. [Terraform] AWSサービスでREST APIを構築する
- 13. 【AWS】 リザーブドインスタンスの対象サービスを全部言えますか?
- 14. 署名付きURLの制限方法を検証してみた(S3バケットポリシー利用)
- 15. AWS勉強備忘録12 – スナップショット、AutoScaling
- 16. AWS Security Hubの新機能 ~セキュリティコントロールのカスタマイズ~
- 17. AWS勉強備忘録11 – Elastic Load Balancing (ELB) について
- 18. AWS勉強備忘録10 – SSH接続、キーペア、およびElastic IPアドレス
- 19. AWS勉強備忘録まとめ
- 20. AWS勉強備忘録9 – インスタンスタイプとストレージサービス
AWS SAA(Solution Architect associate)に合格したので学習方法についてまとめてみた。
# はじめに
AWS学習者にとって最初の目標となるSAA。
「試験を受けようと思っているけど同勉強したらいいかわからない」「色々覚えることがあってどれから手を付ければいいかわからない」。
これから受検する人はそんな不安を持つことでしょう。
そんな人達のためにSAA合格後1.5か月かけてSAPを取った筆者の学習方法、試験を受ける際の注意店を描いていこうと思います。## SAAとは?
SAA試験とはAWS(amazon web service)の設計者向けの中級レベルの資格です。
試験の内容としては。ベストプラクティス(どうしたら安全性とコスパと耐久性が最大になるか)と言うことが多く問われます。
受験料は16,500円となっています。受験料が高いと感じる人もいると思いますが、先にクラウドプラクティショナーなどのAWSにおける他資格を受験した方は半額になるバウチャー(クーポン)がもらえるのでそれを使うことをお勧めします。試験時間は130分と若干長くなっていますが、しっかり対策していれば30分ほどの余裕をもって問題を解き終わることが出来ます。
合格するのに必要な点数は試験ガイドを
AWS WAF は使い込みすぎては行けない(2024/03現在)
# 背景
2024に入って、botから急激なHTTPアクセスがあり、サービスが3分間程度死んでしまった。
ネットにあまり情報がなかったので残す。サービスを設計する上での注意点をシェアすることが目的です。
細かいことを調べるのちょっとめんどくさくなったのでざっくり概算で記載します。
# 想定読者
AWS使っている
WAFを使っている
そこそこのリクエストがあるサービス# 起こった事象
DDosAttackによる急激なアクセスがあり、サービスが3分間程度リクエストが5xx系になって、リクエストが捌けなくなった。
LBのログにはerror理由がWAFConnectionTimeoutとなっていた。
LBのログでロストしているものもある模様(WAFの処理ログとLBのアクセスログが一致しない)# 対象のサービス特徴
どのようなサービスで事象が発生したかを共有したいので、サービスの主要なメトリクスを例示します。
当該の時刻の平均的なTotalReqCountは10M req/minくらいです。
事象が発生した時は、40M req/min くらいまでスパイクしました(10m
OauthとSAMLの違いについての備忘録
## 明確な違いと思ったこと
OAuthは、ユーザーが別々のサービスやアプリケーションにアクセスする際に、毎回そのアクセスに対する許可を与える必要があります。ユーザーは各アプリケーションに対して個別に認可を行う必要があります。
SAMLは、ユーザーが1つのサービスにログインすると、その認証情報が他の関連するサービスに自動的に伝播され、再認証なしで他のサービスにアクセスできるようになります。これにより、ユーザーは1回のログインで複数のサービスにアクセスでき、スムーズな体験が可能となります。
OAuth = 毎回許可必要
SAML = 一度の設定でスムーズにアクセス可### プロトコルの違い
OAuthは、異なるアプリケーションやサービス間でのアクセス制御に使用されます。例えば、ソーシャルメディアのアプリがユーザーのプロフィール情報にアクセスする際にOAuthが使われます。また、主に使用されているOAuth 2.0の仕様では、データ形式としてJSONが標準的に使用されています。
SAMLは、企業内の複数のサービスやアプリケーション間でのシングルサインオンを実現するため
S3 バケットポリシーについてメモ
S3のバケットポリシーについて理解を深めるためにメモ
# バケットポリシーとは
S3のバケットにアップロードしたオブジェクトのアクセス制御を行う。こういうやつ
“`json-doc
{
“Version”: “2012-10-17”,
“Statement”: [
{
“Sid”: “Statement1”,
“Effect”: “Allow”,
“Principal”: “*”,
“Action”: “s3:GetObject”,
“Resource”: “arn:aws:s3:::vue-todo-list-pwe/*”
}
]
}
“`バケットの「アクセス許可」タブから設定可能
#### 初期設定
バケット作成時は、バケットポリシーは何も設定されていない。
自分で作成する時は、1からJSONを書く必要はなく、編集から項目を選択することで自動挿入してくれる。#### 新しいステートメントを
Cloud9にCloudWatch Agentを入れて、メモリ使用率を監視してみた
# はじめに
Cloud9で複数のシミュレータを稼働させていますが、ときどきメモリ不足により停止していることがありました。いちいちCloud9にログインしてメモリや起動状況を確認するのも面倒だし、後からいつシミュレータが停止したのかを追跡できるように、Cloud9に**CloudWatch Agent**を導入して簡単に監視できる仕組みを作りました。
今回はCloud9にCloudWatch Agentを導入する方法をご紹介します。
# Cloud9とは?
Cloud9はAWSが提供する統合開発環境(IDE)であり、AWSワークショップなどでもよく使われています。デフォルトでAWS CLIやpythonが利用できるので、開発環境の構築が面倒な場合はCloud9を使って開発するのも手かと思います。
また、EC2を立ててsshで通信するなどの経験があまりない方にとっても、Cloud9の場合は複雑な設定がなくAWSコンソールから起動できるため、非常に取り組みやすいサービスだと思います。
# CloudWatch Agentとは?
前段で説明したCloud9もベースはEC2
AWS RDSのデータベースを使用したPHPの掲示板で時刻表示が直らなかった原因
## 初心者がPHPで掲示板を作成しました
– HTMLやCSSは使っていたことがありますが、初めてPHPを触り掲示板を作成することになりました。
– フォームから投稿した時刻がどうしてもずれてしまい、php.iniを変更してみたり色々と調べてみても修正出来ず、原因に辿り付くまでに時間が掛かりました。
– もし同じようなことで躓く方がいた場合の参考になればと思ったのと、自身のアウトプットのために今回投稿してみました。
– というか少し考えればすぐに分かるかもですが…初心者のため温かい目で見て下さると幸いです。## 動作環境
– AWS EC2上にLAMP構成としています。
– Linux2
– Apache
– MariaDB
– PHP8.1## 時刻がズレていた原因
– 結論から書きますと、原因はRDSの設定でした。
– 「PHPで掲示板を作成しフォームから投稿する」というものから「原因はPHPの設定だ」と信じて疑っていなかった為、PHP上の設定をどうにか修正しようとあれこれ試してみたものの直らず、どれだけ検索しても答えが見付からず頭を抱えていました…。
– よくよく考
【2024年春Ver.】AWS Lambda Layerの作成方法をわかりやすく解説【Python3.12】
1年ぶりにAWS Lambdaでやってみたいことができて、新しいライブラリを入れるためにLayerを作ろうと[自分の過去記事](https://qiita.com/__DASHi__/items/268062f0dba0e93170f2)見ながらAWS Cloud9を久しぶりに開いてみたら、ちょいちょい変わっているところがあって「まあAWSだもんね、そうだよね」と勝手に納得していました。
この記事は、そんなAWS Lambdaを久しぶりに触った私が将来読んでも引っかからずに作業できるよう、AWS Lambda Layerを簡単に作成する方法を解説する備忘録です。
## 1. Lambda Layerとは
まずは、Lambda Layer(”Lambda”はラムダ、”Layer”はレイヤーと読みます)とは何?という話から。
**AWS公式サイトより**
> Lambda レイヤーは、補助的なコードやデータを含む .zip ファイルアーカイブです。レイヤーには通常、ライブラリの依存関係、カスタムランタイム、または設定ファイルが含まれています。(出典:[https://docs.a
AWS勉強備忘録13 – Amazon S3
Amazon S3は、AWSが提供するオブジェクトストレージサービスです。これは、インターネット上で大量のデータを保存、取得するための耐久性に優れたプラットフォームを提供します。S3は「Simple Storage Service」の略で、その名の通りシンプルで強力なデータストレージソリューションを提供します。
## オブジェクトストレージサービスとは
オブジェクトストレージサービスは、データをファイルとしてではなく、オブジェクトとして管理します。各オブジェクトにはデータ本体、メタデータ、グローバルにユニークなIDが含まれます。この設計により、スケーラビリティと管理のしやすさが大幅に向上します。
## S3の特徴と主な機能
### WEBサーバー機能
S3は静的コンテンツのホスティングに利用でき、HTML、CSS、JavaScriptファイルなどを直接S3バケットに保存して、ウェブサイトとして公開することができます。EC2インスタンスをWebサーバーとして利用することも可能ですが、S3を使用することで、サーバーの管理やスケーリングの手間を省くことができます。
### クエリ
【AWS EC2】Zabbix6.0インストール(AlmaLinux9.3, MySQL8.0.36, PHP-fpm8.1)
# 前口上
AlmaLinux9系かつPHP8.1で、Zabbix6.0の記事がなさげだったので作成。
コンセプト的には、黙ってコマンドを打ちまくれば構築完成する手順にした。# 1 環境
・AWS EC2
・Alma Linux/9.3
・Zabbix/6.0.27
・MySQL/8.0.36
・PHP-fpm/8.1.27
・Apache/2.4.57# 2 構築
“`:基礎情報確認
uname -a ; id -un
cat /etc/redhat-release
“`
“`:アップデート
dnf update -y
“`“`:ホスト名変更
hostnamectl set-hostname XXXXXXXX※ XXXXXXXX は好きなホスト名を記述。
“`
“`:タイムゾーン設定
timedatectl set-timezone Asia/Tokyo
timedatectl
“`“`PHP8.1導入
dnf module list php
dnf -y module enable php:8.1
dnf module list php
d
マネジメントコンソールで作成したリソースをTerraformに取り込み
マネジメントコンソールで手作成したAWSリソースがある場合、
Terraformの管理リソースとして取り込むことができます。
作成済リソースを後からIaC化したいときに便利です。以下、EC2を例とした追加手順になります。
# 1.インスタンスIDを調べる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3690862/96dd6cb5-7171-ebcc-a4f2-a827a1aae237.png)# 2.tfファイルにresourceブロックを追加
“`
resource “aws_instance” “test” {}
“`
・aws_instanceのresourceブロックを追加する
・中身は空でOK
# 3.terraform importコマンドで取り込み実行
“`
terraform import aws_instance.test i-0305acd49344816e2
“`
・terraform import <リソース名> <リソースID>
AWSでWeb3層アーキテクチャを立てるときのハマリポイント(インフラ部分)
## はじめに
Web3層アーキテクチャを構築したときにハマってガチャガチャやったり調べたりしたポイントをメモりました。本記事ではインフラ構築部分を対象にします。(Webサーバ自体の設定だったり監視周りは割愛します)ベーシックなALB+EC2+RDS(MySQL+Memcached)構成です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3458266/4dc94999-352e-47d8-2d4c-e4215f650c96.png)## ネットワークまわり
### VPC作成
2AZでそれぞれパブリックサブネットとプライベートサブネットを1つずつ作成する、といったベーシックな構成であれば「VPCなど」を選択してサブネット、ルートテーブル、NAT Gatewayも含めて一気に作ることができます。
VPC作ってサブネット作って…とそれぞれやると何だかんだいって時間かかるのでできるだけVPC作成時にまとめて設定してしまう方が楽ですね。VPCなど
![image.png](h
[Terraform] AWSサービスでREST APIを構築する
## はじめに
この記事では、AWSサービスを使ってREST APIをTerraformで構築する手順について解説します。
具体的には以下の構成を構築します。ブラウザからエンドポイントにアクセスし、DynamoDBにあるデータが取得されて、ブラウザにJson形式で返される。といった構成になっています。
![Frame 1 (1)](https://github.com/dai-gi/terraform-aws-api-crud/assets/59759668/4338a40f-c88f-453b-87d8-ae184558f70d)## 前提条件
– MacOS環境
– Terraformがインストール済み
– AWS CLIのProfileがセットアップ済み## ディレクトリ構成
“`sh
.
├── .gitignore
├── .terraform.lock.hcl
├── README.md
├── main.tf
├── terraform.tfstate
├── src
│ └── lambda_function.py
└── upload
【AWS】 リザーブドインスタンスの対象サービスを全部言えますか?
[公式ドキュメント](https://docs.aws.amazon.com/ja_jp/awsaccountbilling/latest/aboutv2/consolidatedbilling-other.html)を読んでいて、他にもあるんじゃないか?と思い、調査およびリスト化をしました。[1]
以下の AWS サービスを長期間にわたって安定して使用する場合は、コスト最適化を図るために購入を検討しましょう!## いきなりまとめ
AWS でリザーブドインスタンスを提供しているサービスは 11 個ありました。(私調べ)
漏れや間違いがあったら教えてください。訂正します。| リザーブドの種類 | AWS サービス |
| ———————- | ——————————————————— |
| リザーブドインスタンス | EC2, RDS, OpenSearch Servic
署名付きURLの制限方法を検証してみた(S3バケットポリシー利用)
# はじめに
S3の署名付きURL機能はAWS認証情報を持たないユーザーに対してファイルの配布やアップロードを許可することができる非常に便利な機能です。
反面、使い方を誤ると想定外のユーザーからのアクセスを許可してしまったり、S3上のファイルをダウンロードされてしまったりします。本記事では署名付きURLを制限するための設定について検証してみました。
# 前提
この記事にたどり着いた方であれば既に見ているかもしれませんが、IAMポリシーを利用した署名付きURLの制限方法やhttps://dev.classmethod.jp/articles/presigned-url-iam-policy-control/
IPアドレスを使用したURLへのアクセスユーザーの制限方法は既にまとめられてる方がいらっしゃるので、こちらを見ていただくと早いかと思います。
https://dev.classmethod.jp/articles/s3-pre-signed-url-ip-restriction/
ただ、バケットポリシーで署名付きURLを制限した記事は見当たらなかったので、以下のドキュ
AWS勉強備忘録12 – スナップショット、AutoScaling
## スナップショットについて
AWSにおけるスナップショットは、EBSボリューム(Elastic Block Store)のデータを特定時点で保存するための完全なコピーです。### 用途
データバックアップ、災害復旧、ボリュームの複製作成、アプリケーションのクローン作成など。### 差分バックアップについて
初めてスナップショットを取る際はボリュームの全データが保存されます。2度目以降のスナップショットでは、前回のスナップショット以降に変更された部分(差分)のみが保存されます。もし最初のスナップショットを削除しても、2度目以降のスナップショットが利用不可能になることはありません。AWSは差分データの連鎖を管理し、任意のスナップショットから完全なデータを復元できるようにしています。これにより、ストレージの効率が良くなります。### スナップショットの使い方
AWSマネジメントコンソールから、対象のEBSボリュームを選択しスナップショットを作成します。このスナップショットから新しいEBSボリュームを作成すると、新しいボリュームはスナップショット時点のデータのコピーになります。
AWS Security Hubの新機能 ~セキュリティコントロールのカスタマイズ~
[AWS re:Invent 2023](https://aws.amazon.com/jp/events/reinvent-2023/)で発表されたAWS Security Hubの新機能の中から、個人的に気になった「セキュリティコントロールのカスタマイズが可能になった」というアップデートを確認してみたので、まとめてみます。
https://aws.amazon.com/jp/about-aws/whats-new/2023/11/customize-security-controls-aws-security-hub/
# AWS Security Hubとは
AWS Security Hubは、AWS環境全体のリソースに対してセキュリティのベストプラクティスをチェックしてくれるクラウドセキュリティ体制管理サービスです。
AWS ConfigやAmazon GuardDuty、Amazon Inspectorなど、様々なセキュリティサービスと連携しており、セキュリティアラートを集約して簡単に修復を加えることも可能となります。https://aws.amazon.com/jp
AWS勉強備忘録11 – Elastic Load Balancing (ELB) について
**Elastic Load Balancing (ELB)** は、AWSが提供するロードバランサーサービスです。ロードバランサーとは、複数のサーバー(例えば、EC2インスタンス)へのネットワークトラフィックを自動的に分散させる仕組みのことを指します。これにより、アプリケーションの可用性を高め、単一のサーバーへの負荷が集中することを防ぎます。
## 負荷分散について
– 負荷分散を行う際、ELBは単一のアクセスポイント(Elastic IPアドレス使用可)を提供し、その後ろで複数のEC2インスタンスにトラフィックを分散します。つまり、ELBを使用することで、ユーザーは複数のElastic IPアドレスを管理する必要がなく、ELBが自動的に負荷分散を行います。
– ロードバランシングを効果的に行うためには、複数のEC2インスタンスが必要です。ロードバランサーの主な目的は、入ってくるトラフィックを複数のサーバー(この場合はEC2インスタンス)間で分散させることにより、どの一つのサーバーにも過剰な負荷がかからないようにすることです。これにより、システム全体の可用性と耐障害性が向上しま
AWS勉強備忘録10 – SSH接続、キーペア、およびElastic IPアドレス
AWS (Amazon Web Services) の運用において、SSH接続、キーペア、Elastic IPアドレスは、サーバー管理とネットワーク設定の基本を形成します。これらの概念の理解は、AWS上でのアプリケーションとサービスの安全かつ効率的な運用に不可欠です。
## SSHでの接続について
SSH(Secure Shell)は、ネットワークを介してサーバーや他のネットワーク機器に対する安全なリモート操作を可能にするプロトコルです。AWSのインスタンスに対するソフトウェア操作や設定変更などは、SSHを介して行われます。このためには、サーバー側でSSHデーモン(背後で常に実行されるプログラム)が稼働している必要があり、クライアント側(操作するユーザーのPC等)にはSSHクライアントソフトウェアがインストールされている必要があります。WindowsではPuTTYやTera TermなどのソフトウェアがSSHクライアントとして一般的に使用されます。これらは基本的に同じ目的で使用されますが、ユーザーインターフェイスや追加機能などに差異があります。
## キーペアについて
AWSで
AWS勉強備忘録まとめ
備忘録https://qiita.com/KM9973/items/dca0f673a9a24c300ffc
https://qiita.com/KM9973/items/2368f61070a8040532ff
https://qiita.com/KM9973/items/2da06364bfd5e00d860e
https://qiita.com/KM9973/items/6a7b97299b0ab84ab197
https://qiita.com/KM9973/items/28a9c6088cc988be8147
https://qiita.com/KM9973/items/ba9795ea17b7417cbd28
https://qiita.com/KM9973/items/0a730fffcd94003b0e1b
https://qiita.com/KM9973/items/fc9ff658a73bdeff5c31
https://qiita.com/KM9973/items/0252aa99eaf683b5cf50
https://qiita.com/KM
AWS勉強備忘録9 – インスタンスタイプとストレージサービス
## インスタンスタイプとは?
AWSでは、**インスタンスタイプ**はマシンの用途を指します。インスタンスタイプによって、CPU、メモリ、ストレージ、ネットワーキングの性能が特化されており、用途に応じて最適なタイプを選択できます。
### 主なインスタンスタイプ
– **汎用 (General purpose)**: バランスの取れたCPUとメモリ。様々なワークロードに適しています。
– **コンピューティング最適化 (Compute optimized)**: 高性能コンピューティングやバッチ処理など、CPUが要求されるワークロードに最適です。
– **メモリ最適化 (Memory optimized)**: 大量のデータをメモリ内で処理するデータベースやメモリキャッシュに適しています。
– **ストレージ最適化 (Storage optimized)**: I/Oが非常に多いワークロードや、大量のデータセットを扱うアプリケーションに適しています。## ストレージサービス
AWSでは主に、Amazon EBS (Elastic Block Store) と Amazon