0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AWSハンズオン実践】Amazon CloudFrontおよびAWS WAFを用いて エッジサービスの活用方法を学ぼう

Last updated at Posted at 2025-08-25

1. ハンズオン内容

image.png

  • ハンズオンでは各リソースを段階的に作成していきます

※Cloud9はVSCodeとPowerShellで代用
※画像はAWS公式ページより引用

前提条件&注意事項

  • このブログだけでは進められません。AWS公式ハンズオン動画をまず見てください。
  • Lambdaの画面は今とかなり変わってます。
  • これらの導入が必要になると思われます。
  • 一部課金が発生します(数十円程度)。終了後は必ず削除しましょう。
  • 親ページ見てない人は見てね

2. Step1、S3、CloudFrontを作成

image.png

S3、CloudFrontを作成します
※画像はハンズオンより引用

2.1. (Step1)S3

2.1.1. (Step1)バケット作成

リージョンはus-east-1です

  • Amazon S3 > バケット > バケットを作成

バケットを作成

大項目 中項目 選択肢 備考
一般的な設定 AWS リージョン us-east-1 理由不明
バケットタイプ ✅ 汎用
⬜ ディレクトリ
🔴バケット名 handson-lab.click 任意です。他の名前にしてね
オブジェクト所有者 - ✅ ACL 無効 (推奨)
⬜ ACL 有効
オブジェクト所有者 ✅ 希望するバケット所有者
⬜ オブジェクトライター
このバケットのブロックパブリックアクセス設定 パブリックアクセス ✅ パブリックアクセスをすべて ブロック
✅ 現在の設定により、このバケットとバケット内のオブジェクトが公開される可能性があることを承認します。
タグ - オプション -
デフォルトの暗号化 暗号化タイプ ✅ Amazon S3 マネージドキーを使用したサーバー側の暗号化 (SSE-S3)
⬜ AWS Key Management Service キーを使用したサーバー側の暗号化 (SSE-KMS)
⬜ AWS Key Management Service キーを使用したデュアルレイヤーサーバー側の暗号化 (DSSE-KMS)
バケットキー ✅ 無効にする
⬜ 有効にする
詳細設定 オブジェクトロック ✅ 無効にする
⬜ 有効にする

2.1.2. (Step1)バケットへファイルアップロード

  • Amazon S3 > バケット > バケットを作成 > オブジェクト

forS3フォルダのファイルをすべてアップロードします。設定はすべてデフォルトです。

2.2. (Step1)CloudFront

2.2.1. (Step1)ディストリビューション作成

ここはハンズオンとかなり画面が違います。ハンズオンは古いです。また入力画面は古い画面に切り替えてください。go to the previous Create Distribution page.のリンクをクリックすればOK

ディストリビューションを作成

大項目 中項目 選択肢 備考
ディストリビューションを作成 ✅ Single website or app
⬜ Multi-tenant architecture - New
オリジン 🔴Origin domain handson-lab.click.s3.ap-northeast-1.amazonaws.com
Origin path - optional
名前 handson-lab.click.s3.ap-northeast-1.amazonaws.com 自動で入力される
🔴オリジンアクセス ⬜ Public
✅ Origin access control settings (recommended)
⬜ Legacy access identities
動画と違います。今回は既存のOACを使います
カスタムヘッダーを追加 - オプション
Enable Origin Shield ✅ いいえ
⬜ はい
Connection attempts 3 追加設定(▼)をクリックして開くと、この項目が表示されます。
Connection timeout 10 追加設定(▼)をクリックして開くと、この項目が表示されます。
Response timeout 30 追加設定(▼)をクリックして開くと、この項目が表示されます。
Response completion timeout ⬜ Enable 追加設定(▼)をクリックして開くと、この項目が表示されます。
デフォルトのキャッシュビヘイビア パスパターン デフォルト (*) Default (*)
オブジェクトを自動的に圧縮 ⬜ No
✅ Yes
ビューワープロトコルポリシー ⬜ HTTP and HTTPS
✅ Redirect HTTP to HTTPS
⬜ HTTPS only
許可された HTTP メソッド ✅ GET, HEAD
⬜ GET, HEAD, OPTIONS
⬜ GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE
ビューワーのアクセスを制限する ✅ No
⬜ Yes
レスポンスヘッダーポリシー - オプション ✅ Cache policy and origin request policy (recommended)
⬜ Legacy cache settings
🔴キャッシュポリシー ⬜ CachingOptimized
✅ CachingDisabled
⬜ CachingOptimizedForUncompressedObjects
⬜ Elemental-MediaPackage
⬜ Amplify-DefaultNoCookies
⬜ Amplify-Default
⬜ Amplify-StaticContent
⬜ Amplify-ImageOptimization
⬜ UseOriginCacheControlHeaders
⬜ UseOriginCacheControlHeaders-QueryStrings
disableにする意図は不明
オリジンリクエストポリシー - オプション ✅ None
⬜ UserAgentRefererHeaders
⬜ AllViewer
⬜ CORS-S3Origin
⬜ CORS-CustomOrigin
⬜ Elemental-MediaTailor-PersonalizedManifests
⬜ AllViewerAndCloudFrontHeaders-2022-06
⬜ AllViewerExceptHostHeader
...
レスポンスヘッダーポリシー - オプション ✅ None
⬜ SimpleCORS
⬜ CORS-With-Preflight
⬜ CORS-with-preflight-and-SecurityHeadersPolicy
⬜ CORS-and-SecurityHeadersPolicy
⬜ SecurityHeadersPolicy
スムーズストリーミング ✅ No
⬜ Yes
追加設定(▼)をクリックして開くと、この項目が表示されます。
フィールドレベル暗号化 - 追加設定(▼)をクリックして開くと、この項目が表示されます。
リアルタイムログを有効にする ✅ No
⬜ Yes
追加設定(▼)をクリックして開くと、この項目が表示されます。
関数の関連付け - オプション ビューワーレスポンス / 関数タイプ ✅ 関連付けなし
⬜ Lambda@Edge
⬜ CloudFront function
関数 ARN/名前 -
本文を含める -
ビューワーレスポンス / 関数タイプ ✅ 関連付けなし
⬜ Lambda@Edge
⬜ CloudFront function
関数 ARN/名前 -
本文を含める -
オリジンリクエスト / 関数タイプ ✅ 関連付けなし
⬜ Lambda@Edge
関数 ARN/名前 -
本文を含める -
オリジンレスポンス / 関数タイプ ✅ 関連付けなし
⬜ Lambda@Edge
関数 ARN/名前 -
本文を含める -
🔴ウェブアプリケーションファイアウォール (WAF) ⬜ セキュリティ保護を有効にする
✅ セキュリティ保護を有効にしないでください
設定 Anycast static IP list - 作ってないので選択不可です
料金クラス ✅ すべてのエッジロケーションを使用する (最高のパフォーマンス)
⬜ 北米と欧州のみを使用
⬜ 北米、欧州、アジア、中東、アフリカを使用
代替ドメイン名 (CNAME) - オプション 今回はまだ使わない
Custom SSL certificate - optional 今回はまだ使わない
🔴デフォルトルートオブジェクト - オプション index.html 指定しないと動かないと思う。/にアクセスしたら自動でindex.htmlを読み込む機能はない
IPv6 ⬜ オフ
✅ オン
オンでもオフでも問題ないと思う
説明 - オプション
Standard logging ログ配信 ✅ オフ
⬜ オン

バケットポリシー更新忘れずに。EOF3DRBRIXTWUを作ったディストリビューションIDに変える。XXXXXXXXをアカウントIDに変える。ここは変数使えない

bucketpolicy
{
        "Version": "2008-10-17",
        "Id": "PolicyForCloudFrontPrivateContent",
        "Statement": [
            {
                "Sid": "AllowCloudFrontServicePrincipal",
                "Effect": "Allow",
                "Principal": {
                    "Service": "cloudfront.amazonaws.com"
                },
                "Action": "s3:GetObject",
                "Resource": "arn:aws:s3:::handson-lab.click/*",
                "Condition": {
                    "StringEquals": {
                      "AWS:SourceArn": "arn:aws:cloudfront::XXXXXXXX:distribution/EOF3DRBRIXTWU"
                    }
                }
            }
        ]
      }

動作確認

  • 作成したディストリビューションドメイン名 http://XXXX.cloudfront.net/ にアクセスできればOK。ボタン押下すると現時点ではエラー(Access Denied)になる。

  • レスポンス速度の向上は、比較データがなかったのでわからなかった。開発者ツールのレスポンスヘッダーに Hit from cloudfrontが出ていればOKとする。あと動画ではwaterfallという言葉が出てくるが、今の画面項目には存在しない。それっぽいグラフが出ているのでそれを見る

2.2.2. (Step1)CloudFrontのキャッシュポリシー作成

  • CloudFront > ポリシー > キャッシュ > キャッシュポリシーを作成
大項目 中項目 選択肢 備考
詳細 🔴名前 handson-cachepolicy
説明 - オプション
TTL 設定 最小 TTL 1
最大 TTL 31536000
デフォルト TTL 86400
キャッシュキー設定 ヘッダー なし
クエリ文字列 なし
cookie なし
圧縮サポート ✅ Gzip
✅ Brotli

2.2.3. (Step1)CloudFrontのビヘイビア作成

  • CloudFront > ディストリビューション > (作成したディストリビューション) > ビヘイビアを作成
大項目 中項目 選択肢 備考
Settings 🔴パスパターン /static/* 新規作成時には追加できない
🔴オリジンとオリジングループ handson-lab.click.s3.ap-northeast-1.amazonaws.com 先ほど作ったS3を選択してください
オブジェクトを自動的に圧縮 ⬜ No
✅ Yes
ビューワープロトコルポリシー ⬜ HTTP and HTTPS
✅ Redirect HTTP to HTTPS
⬜ HTTPS only
許可された HTTP メソッド ✅ GET, HEAD
⬜ GET, HEAD, OPTIONS
⬜ GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE
ビューワーのアクセスを制限する ✅ No
⬜ Yes
レスポンスヘッダーポリシー - オプション ✅ Cache policy and origin request policy (recommended)
⬜ Legacy cache settings
キャッシュポリシー ⬜ CachingOptimized
⬜ CachingDisabled
⬜ CachingOptimizedForUncompressedObjects
⬜ Elemental-MediaPackage
⬜ Amplify-DefaultNoCookies
⬜ Amplify-Default
⬜ Amplify-StaticContent
⬜ Amplify-ImageOptimization
⬜ UseOriginCacheControlHeaders
⬜ UseOriginCacheControlHeaders-QueryStrings
✅ handson-cachepolicy
オリジンリクエストポリシー - オプション ✅ None
⬜ UserAgentRefererHeaders
⬜ AllViewer
⬜ CORS-S3Origin
⬜ CORS-CustomOrigin
⬜ Elemental-MediaTailor-PersonalizedManifests
⬜ AllViewerAndCloudFrontHeaders-2022-06
⬜ AllViewerExceptHostHeader
...
レスポンスヘッダーポリシー - オプション ✅ None
⬜ SimpleCORS
⬜ CORS-With-Preflight
⬜ CORS-with-preflight-and-SecurityHeadersPolicy
⬜ CORS-and-SecurityHeadersPolicy
⬜ SecurityHeadersPolicy
追加設定 スムーズストリーミング ✅ No
⬜ Yes
追加設定(▼)をクリックして開くと、この項目が表示されます。
フィールドレベル暗号化 - 追加設定(▼)をクリックして開くと、この項目が表示されます。
リアルタイムログを有効にする ✅ No
⬜ Yes
追加設定(▼)をクリックして開くと、この項目が表示されます。
関数の関連付け - オプション ビューワーレスポンス / 関数タイプ ✅ 関連付けなし
⬜ Lambda@Edge
⬜ CloudFront function
関数 ARN/名前 -
本文を含める -
ビューワーレスポンス / 関数タイプ ✅ 関連付けなし
⬜ Lambda@Edge
⬜ CloudFront function
関数 ARN/名前 -
本文を含める -
オリジンリクエスト / 関数タイプ ✅ 関連付けなし
⬜ Lambda@Edge
関数 ARN/名前 -
本文を含める -
オリジンレスポンス / 関数タイプ ✅ 関連付けなし
⬜ Lambda@Edge
関数 ARN/名前 -
本文を含める -

4. Step2、LambdaとAPI Gatewayを作成

image.png

LambdaとAPI Gatewayを作成します
※画像はハンズオンより引用

4.1. (Step2)Lambda

  • Lambda > 関数 > 関数の作成

リージョンはus-east-1です

大項目 中項目 備考
一から作成
基本的な情報 🔴関数名 handson-lambda
🔴ランタイム ✅ Python 3.13
⬜ Node.js 22.x
⬜ Java 21
⬜ Ruby 3.4
最新のPythonを選択すればOK
アーキテクチャ ⬜ arm64
✅ x86_64
armはappleのCPUらしい
デフォルトの実行ロールの変更 実行ロール ✅ 基本的な Lambda アクセス権限で新しいロールを作成
⬜ 既存のロールを使用す
⬜ AWS ポリシーテンプレートから新しいロールを作成
ロールを自動作成します
その他の構成 関数 URL を有効化 ⬜Enable
VPC を有効化 ⬜Enable
コード署名を有効化 ⬜Enable
AWS KMS カスタマーマネージドキーによる暗号化を有効にする ⬜Enable
タグを有効化 ⬜Enable

4.1.2. (Step2)コード修正とデプロイ

  • Lambda > 関数 > handson-lambda > コード

image.png

テスト用Event JSON
{
  "queryStringParameters": {
    "input_text": "こんにちは"
  }
}

4.1.3. (Step2)translateポリシーのアタッチ

  • Lambda > 関数 > handson-lambda > 設定 > アクセス権限 > ロール名をクリック > ポリシーをアタッチ

image.png
これは自動生成されたロールです


image.png


image.png

TranslateReadOnlyポリシーをアタッチします。

4.2. (Step2)API Gateway

リージョンはus-east-1です

4.2.1. (Step2)API Gatewayの作成

  • API Gateway > API > API を作成
大項目 中項目 選択肢 備考
🔴API タイプを選択 ⬜HTTP API
⬜WebSocket API
✅REST API
⬜REST API プライベート
API の詳細 ✅新しい API
⬜既存の API のクローンを作成
⬜API をインポート
⬜サンプル API
🔴API 名 handson-api
説明 - オプション
API エンドポイントタイプ ✅リージョン
⬜エッジ最適化
⬜プライベート
IP アドレスのタイプ ✅IPv4
⬜デュアルスタック

4.2.2. (Step2)API Gateway-メソッドの作成

  • API Gateway > API > リソース - handson-api > メソッドを作成

image.png

大項目 中項目 選択肢 備考
メソッドの詳細 🔴メソッドタイプ ⬜ANY
⬜DELETE
✅GET
⬜HEAD
⬜OPTIONS
⬜PATCH
⬜POST
⬜PUT
統合タイプ ✅Lambda 関数
⬜HTTP
⬜Mock
⬜AWS のサービス
⬜VPC リンク
よくわからないね
🔴✅Lambda プロキシ統合 よくわからないね
🔴Lambda 関数 XXXX 作成したラムダを選択
統合のタイムアウト 29000
メソッドリクエストの設定 認可 なし
リクエストバリデーター なし
⬜API キーは必須です
オペレーション名 - オプション
URL クエリ文字列パラメータ 🔴名前 input_text URLに引数与える設定です。動画内ではメソッド作成後に追加設定してます。
必須
キャッシュ
HTTP リクエストヘッダー
リクエスト本文

4.2.3. (Step2)API Gateway-デプロイ

image.png

4.2.4. (Step2)API Gateway-動作確認

image.png

URLは各自のURLに読み替えてね
https://idmcqgysra.execute-api.us-east-1.amazonaws.com/api -> {"message": "Internal server error"}
https://idmcqgysra.execute-api.us-east-1.amazonaws.com/api?input_text=こんにちは世界 -> Hello World

5. Step3、CloudFrontとAPI Gatewayを紐づけ

image.png

CloudFrontとAPI Gatewayを紐づける
※画像はハンズオンより引用

5.1. (Step3)CloudFront

5.1.1. (Step3)オリジンリクエストポリシー作成

  • CloudFront > ポリシー > オリジンリクエスト > オリジンリクエストポリシー作成
大項目 中項目 選択肢 備考
詳細 名前
説明 - オプション
Origin request settings ヘッダー ✅なし
⬜すべてのビューワーヘッダー
⬜すべてのビューワーヘッダーと次の CloudFront ヘッダー
⬜All viewer headers except
⬜次のヘッダーを含める
クエリ文字列 ⬜なし
⬜すべて
⬜次以外のすべてのクエリ文字列を含める:
✅指定したクエリ文字列を含める
input_text
cookie ✅なし
⬜すべて
⬜次以外のすべての cookie を含める:
⬜指定された cookie を含める

5.1.2. (Step3)オリジンを作成

  • CloudFront > ディストリビューション > XXXXXXXX > オリジンを作成
大項目 中項目 選択肢 備考
設定 🔴Origin domain 作成したAPI Gatewayを選択
プロトコル ⬜ HTTP のみ
✅HTTPS のみ
⬜ マッチビューワー
HTTPS port 443
Minimum Origin SSL protocol TLSv1.2
Origin path - optional
名前 Origin domainを入力すると自動で設定されます
カスタムヘッダーを追加 - オプション
Enable Origin Shield ✅いいえ
⬜ はい
追加設定 Connection attempts 3 追加設定(▼)をクリックして開くと、この項目が表示されます。
Connection timeout 10 追加設定(▼)をクリックして開くと、この項目が表示されます。
Response timeout 30 追加設定(▼)をクリックして開くと、この項目が表示されます。
Response completion timeout ⬜ Enable 追加設定(▼)をクリックして開くと、この項目が表示されます。

5.1.3. (Step3)ビヘイビア作成

  • CloudFront > ディストリビューション > (作成したディストリビューション) > `ビヘイビアを作成
大項目 中項目 選択肢 備考
Settings 🔴パスパターン api API Gatewayのステージ。翻訳機能用のAPIの設定
🔴オリジンとオリジングループ 先ほど作ったS3を選択してください
オブジェクトを自動的に圧縮 ⬜ No
✅ Yes
ビューワープロトコルポリシー ⬜ HTTP and HTTPS
✅ Redirect HTTP to HTTPS
⬜ HTTPS only
🔴許可された HTTP メソッド ✅ GET, HEAD
⬜ GET, HEAD, OPTIONS
⬜ OPTIONS, PUT, POST, PATCH, DELETE
オリジンとオリジングループでAPI Gatewayを選択すると自動で切り替わります
HTTP メソッドをキャッシュ ⬜ オプション
HTTP/2 経由の gRPC リクエストを許可する ⬜ 有効
ビューワーのアクセスを制限する ✅ No
⬜ Yes
レスポンスヘッダーポリシー - オプション ✅ Cache policy and origin request policy (recommended)
⬜ Legacy cache settings
🔴キャッシュポリシー ⬜ CachingOptimized
✅ CachingDisabled
⬜ CachingOptimizedForUncompressedObjects
⬜ Elemental-MediaPackage
⬜ Amplify-DefaultNoCookies
⬜ Amplify-Default
⬜ Amplify-StaticContent
⬜ Amplify-ImageOptimization
⬜ UseOriginCacheControlHeaders
⬜ UseOriginCacheControlHeaders-QueryStrings
⬜ handson-cachepolicy
動的コンテンツなのでキャッシュをオフにする
🔴オリジンリクエストポリシー - オプション ⬜ None
⬜ UserAgentRefererHeaders
⬜ AllViewer
⬜ CORS-S3Origin
⬜ CORS-CustomOrigin
⬜ Elemental-MediaTailor-PersonalizedManifests
⬜ AllViewerAndCloudFrontHeaders-2022-06
⬜ AllViewerExceptHostHeader
✅ handson-originrequest-policy
...
作成したオリジンリクエストポリシーを選択
レスポンスヘッダーポリシー - オプション ✅ None
⬜ SimpleCORS
⬜ CORS-With-Preflight
⬜ CORS-with-preflight-and-SecurityHeadersPolicy
⬜ CORS-and-SecurityHeadersPolicy
⬜ SecurityHeadersPolicy
追加設定 スムーズストリーミング ✅ No
⬜ Yes
追加設定(▼)をクリックして開くと、この項目が表示されます。
フィールドレベル暗号化 - 追加設定(▼)をクリックして開くと、この項目が表示されます。
リアルタイムログを有効にする ✅ No
⬜ Yes
追加設定(▼)をクリックして開くと、この項目が表示されます。
関数の関連付け - オプション ビューワーレスポンス 関数タイプ ✅ 関連付けなし
⬜ Lambda@Edge
⬜ CloudFront function
関数 ARN/名前 -
本文を含める -
ビューワーレスポンス 関数タイプ ✅ 関連付けなし
⬜ Lambda@Edge
⬜ CloudFront function
関数 ARN/名前 -
本文を含める -
オリジンリクエスト 関数タイプ ✅ 関連付けなし
⬜ Lambda@Edge
関数 ARN/名前 -
本文を含める -
オリジンレスポンス 関数タイプ ✅ 関連付けなし
⬜ Lambda@Edge
関数 ARN/名前 -
本文を含める -

5.1.4. (Step3)動作確認

  1. ディストリビューションドメイン名 https://XXXX.cloudfront.net/ にアクセスし、画面が表示されることが確認できればOK。
  2. 日本語が英語に翻訳されることが確認できればOK。こんにちは世界 -> Hello world
  3. 開発者ツールでキャッシュが無効化が確認できればOK。x-cache: Miss from cloudfront

6. Step4、WAFを作成

image.png

WAFを作成する
※画像はハンズオンより引用

6.1. (Step4)WAF

6.1.1. (Step4)web ACL作成

  • AWS WAF > Web ACLs > Create web ACL

画面名: Describe web ACL and associate it to AWS resources

大項目 中項目 選択肢 備考
Web ACL details 🔴Resource type ✅ Global resources (CloudFront Distributions, CloudFront Distribution Tenants and AWS Amplify Applications)
⬜ Regional resources (Application Load Balancers, Amazon API Gateway REST APIs and AWS AppSync APIs)
🔴Name handson-waf
Description - optional
CloudWatch metric name Nameを入力すると自動で入力されます
Associated AWS resources - optional 🔴Resource type ✅ CloudFront Distributions
⬜ CloudFront Distribution Tenants
⬜ AWS Amplify
🔴Resources 作成したディストリビューションを選択する
Web request body inspection - optional ✅ Default
⬜ 16 KB
...

6.1.2. (Step4)my own rulesの適用

  • AWS WAF > Web ACLs > Create web ACL > Add Rules > Add my own rules and rule groups

画面名: Add rules and rule groups

大項目 中項目 選択肢 備考
🔴Rules Add Rules > Add my own rules and rule groupsの操作をする

大項目 中項目 選択肢 備考
Rule type 🔴Rule type ⬜ IP set
✅ Rule builder
⬜ Rule group
選択によって入力画面が切り替わります
Rule 🔴Name handson-rule
Type ✅ Regular rule
⬜ Rate-based rule
If a request ✅ matches the statement
⬜ matches all the statements (AND)
⬜ matches at least one of the statements (OR)
⬜ doesn't match the statement (NOT)
Statement 🔴Inspect ✅ Originates from a country in
⬜ Originates from an IP address in
⬜ Originates from an ASN in
⬜ Has a label
⬜ Request components
⬜ Single header
⬜ All headers
⬜ Cookies
⬜ Single query parameter
⬜ All query parameters
⬜ URI path
⬜ Query string
⬜ Body
⬜ HTTP method
⬜ JA3 fingerprint
⬜ JA4 fingerprint
⬜ Header order
⬜ URI fragment
Originates from a country in はどの国からリクエストが来たか判定する。今回のシナリオは日本からリクエストがきたらブロックします
🔴Country codes ✅ Japan - JP
...
IP address to use to determine the country of origin ✅ Source IP address
⬜ IP address in header
Action Action ⬜ Allow
✅ Block
⬜ Count
⬜ CAPTCHA customize
⬜ Challenge
Custom response - optional ⬜ Enable
Add label - optional

大項目 中項目 選択肢 備考
Web ACL capacity units (WCUs) used by your web ACL
Default web ACL action for requests that don't match any rules Default action ✅ Allow
⬜ Block
今回のシナリオでは日本以外のリクエストを許可するという意味になります
Custom request - optional
Token domain list - optional

画面名: Set rule priority

大項目 中項目 選択肢 備考
Rules

デフォルトのまま、「Next」をクリック

画面名: Configure metrics

大項目 中項目 選択肢 備考
Amazon CloudWatch metrics Rules ✅ handson-rule WAF の WebACL やルールごとに リクエスト数やブロック数などの統計情報 を CloudWatch に送るかどうかの設定
Request sampling options Options ✅ Enable sampled requests
⬜ Disable sampled requests
⬜ Enable sampled requests with exclusions
実際の Web リクエストを「サンプル」として保存するかどうかの設定。「サンプル」とは全リクエストの中から一部を抜き出して記録・表示する という意味です。

デフォルトのまま、「Next」をクリック

画面名: Review and create web ACL

ここは確認画面です。「Create web ACL」をクリック

6.1.3. (Step4)動作確認

  1. ディストリビューションにWAFが適用されていることを確認
    image.png

  2. ディストリビューションドメイン名 https://XXXX.cloudfront.net/ にアクセスし、画面でBlockのエラーが表示されることが確認できればOK。
    image.png

6.1.4. (Step4)managed rule groupsの適用

  • AWS WAF > Web ACLs > handson-waf > Rulesタブ > Add Rules > Add managed rule groups
    ※画面内にリージョンを選ぶBOXがあるので、Global(CloudFront)にしないと作成したルールは表示されません。画面右上のリージョンではありません。

画面名: Add managed rule groups

大項目 中項目 選択肢 備考
🔴Rules Add Rules > Add managed rule groupsの操作をする

大項目 中項目 選択肢 備考
🔴AWS managed rule groups Paid rule groups ✅ Core rule set
...
✅ Add to web ACL
Cloudbric Corp. managed rule groups
Cyber Security Cloud Inc. managed rule groups
F5 managed rule groups
Fortinet managed rule groups
GeoGuard managed rule groups
Imperva managed rule groups
ThreatSTOP managed rule groups

「Core rule set (CRS)」は、AWS WAF が提供する 一般的なセキュリティ攻撃対策ルールのセット です。他ルールが多すぎて、割愛します。

6.1.5.(Step4)動作確認

動画内では「Core rule set (CRS)」ルールの動作確認はありませんでした。実施するのは難しいと思います。

リソースの削除

  1. Amazon CloudFrontの削除
    1. ディストリビューション無効、削除
    2. キャッシュポリシーの削除handson-cachepolicy
    3. オリジンリクエストポリシーの削除handson-originrequest-policy
  2. AWS WAFの削除handson-waf
  3. Amazon API Gatewayの削除handson-api
  4. AWS Lambdaの削除handson-lambda
  5. Amazon S3の削除handson-lab.click

リージョンはus-east-1です

さいごに

感想です

  • WAFの設定が長すぎる
0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?