ハンズオン: CloudWatch、X-Ray ~AWS認定デベロッパーアソシエイト(DVA-C02)~
このブログは2026年6月29日翔泳社さんより発売される「AWS教科書 AWS認定デベロッパーアソシエイト テキスト&問題集」で扱う内容を体験していただくためのハンズオンガイドです。
このハンズオンガイドでは、CloudWatch、X-Rayを使って、アプリケーションのモニタリング、トレース、トラブルシューティングを体験します。Lambda関数にX-Rayトレースを有効化し、CloudWatch Logsでメトリクスフィルターやアラームを設定し、Logs Insightsでログ分析を行います。
目次
全体構成
東京リージョンで構築してください。
完成する構成は以下のとおりです。
(1) Lambda関数を作成してX-Rayアクティブトレースを有効化する
(2) API Gatewayを作成してLambda関数と統合する
(3) CloudWatch Logsでメトリクスフィルターとアラームを設定する
(4) CloudWatch Logs Insightsでログを分析する
(5) X-Rayサービスマップとトレースを確認する
(6) エクスポネンシャルバックオフによる再試行を実装する
一連のフロー:API Gateway → Lambda(X-Rayトレース有効) → DynamoDB → CloudWatch Logs → メトリクスフィルター → アラーム → 通知
準備:IAMポリシーの作成とアタッチ
ハンズオンで使用するIAMユーザーまたはIAMロールに、以下のポリシーをアタッチしてください。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
{ "Version": "2012-10-17", "Statement": [ { "Sid": "LambdaAccess", "Effect": "Allow", "Action": [ "lambda:*" ], "Resource": "*" }, { "Sid": "APIGatewayAccess", "Effect": "Allow", "Action": [ "apigateway:*" ], "Resource": "*" }, { "Sid": "DynamoDBAccess", "Effect": "Allow", "Action": [ "dynamodb:CreateTable", "dynamodb:DeleteTable", "dynamodb:PutItem", "dynamodb:GetItem", "dynamodb:Scan", "dynamodb:DescribeTable" ], "Resource": "*" }, { "Sid": "CloudWatchAccess", "Effect": "Allow", "Action": [ "cloudwatch:*", "logs:*" ], "Resource": "*" }, { "Sid": "XRayAccess", "Effect": "Allow", "Action": [ "xray:*" ], "Resource": "*" }, { "Sid": "SNSAccess", "Effect": "Allow", "Action": [ "sns:CreateTopic", "sns:DeleteTopic", "sns:Subscribe", "sns:Publish" ], "Resource": "*" }, { "Sid": "IAMAccess", "Effect": "Allow", "Action": [ "iam:CreateRole", "iam:DeleteRole", "iam:AttachRolePolicy", "iam:DetachRolePolicy", "iam:PutRolePolicy", "iam:DeleteRolePolicy", "iam:PassRole", "iam:Get*", "iam:List*" ], "Resource": "*" }, { "Sid": "CloudShellAccess", "Effect": "Allow", "Action": [ "cloudshell:*" ], "Resource": "*" } ] } |
タスク 1:Lambda関数を作成してX-Rayトレースを有効化する
目的
DynamoDBに書き込みを行うLambda関数を作成し、X-Rayアクティブトレースを有効にして分散トレースの収集を開始しましょう。
手順
(1) まずDynamoDBテーブルを作成します。CloudShellで以下を実行します:
|
1 2 3 4 5 6 7 |
aws dynamodb create-table \ --table-name HandsonMonitorLog \ --attribute-definitions AttributeName=logId,AttributeType=S \ --key-schema AttributeName=logId,KeyType=HASH \ --billing-mode PAY_PER_REQUEST \ --region ap-northeast-1 |
(2) Lambdaコンソールにアクセスし、[関数の作成]をクリック。
(3) 以下の設定を行います:
| 項目 | 設定値 |
|---|---|
| 作成方法 | 一から作成 |
| 関数名 | HandsonMonitorFunction |
| ランタイム | Python 3.14 |
| アーキテクチャ | x86_64 |
(4) [関数の作成]をクリック。
(5) [設定]タブ-[アクセス権限]をクリックし、ロール名のリンクをクリックしてIAMコンソールを開きます。
(6) [許可を追加]-[インラインポリシーを作成]をクリックし、以下のポリシーを貼り付けます:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:PutItem", "dynamodb:GetItem" ], "Resource": "arn:aws:dynamodb:ap-northeast-1:*:table/HandsonMonitorLog" }, { "Effect": "Allow", "Action": [ "xray:PutTraceSegments", "xray:PutTelemetryRecords" ], "Resource": "*" } ] } |
(7) ポリシー名をHandsonMonitorPolicyとして保存します。
(8) Lambdaコンソールに戻り、[設定]タブ-[モニタリングおよび運用ツール]-[編集]をクリック。
(9) [CloudWatch アプリケーションシグナルと AWS X-Ray]-[Lambda サービストレース]を有効にして[保存]をクリック。
(10) ADOT Lambda Layerを追加してトレースを詳細化します。[コード]タブの下部の[レイヤー]セクションで[レイヤーの追加]をクリック。
(11) [ARNを指定]を選択し、以下のARNを入力して[検証]をクリック。レイヤーが表示されたら[追加]をクリック。
|
1 2 |
arn:aws:lambda:ap-northeast-1:615299751070:layer:AWSOpenTelemetryDistroPython:21 |
ADOT Lambda Layer ARNsで最新のARNを確認できます。
(12) [設定]タブ-[環境変数]-[編集]をクリックし、以下の環境変数を追加して[保存]をクリック。
| キー | 値 |
|---|---|
| AWS_LAMBDA_EXEC_WRAPPER | /opt/otel-instrument |
(13) 続けて[設定]タブ-[モニタリングおよび運用ツール]-[編集]で[ロギング設定]を以下のように設定して[保存]をクリック。
| 項目 | 設定値 |
|---|---|
| ログフォーマット | JSON |
| アプリケーションログレベル | INFO |
| システムログレベル | INFO |
(14) [コード]タブで以下のコードを貼り付けます:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
import json import boto3 import uuid import logging import time import random from datetime import datetime, timezone, timedelta # ------------------------------------------------------- # ログ設定 # ------------------------------------------------------- logger = logging.getLogger() dynamodb = boto3.client('dynamodb', region_name='ap-northeast-1') def lambda_handler(event, context): jst = timezone(timedelta(hours=9)) log_id = str(uuid.uuid4()) timestamp = datetime.now(jst).isoformat() # リクエストパラメータを取得 params = event.get('queryStringParameters') or {} action = params.get('action', 'normal') logger.info(f"リクエスト受信: action={action}, logId={log_id}") # エラーを意図的に発生させるシミュレーション if action == 'error': logger.error(f"エラー発生: action=error, logId={log_id}") return response(500, {'message': 'Internal Server Error', 'logId': log_id}) # 遅延をシミュレーション if action == 'slow': delay = random.uniform(2, 4) logger.warning(f"遅延発生: {delay:.2f}秒, logId={log_id}") time.sleep(delay) # DynamoDBに書き込み dynamodb.put_item( TableName='HandsonMonitorLog', Item={ 'logId': {'S': log_id}, 'timestamp': {'S': timestamp}, 'action': {'S': action}, 'status': {'S': 'success'} } ) logger.info(f"処理完了: action={action}, logId={log_id}, duration=normal") return response(200, { 'message': 'OK', 'logId': log_id, 'action': action, 'timestamp': timestamp }) def response(status_code, body): return { 'statusCode': status_code, 'headers': {'Content-Type': 'application/json'}, 'body': json.dumps(body, ensure_ascii=False) } |
(15) [Deploy]をクリック。
ポイント
- X-Rayアクティブトレースを有効にすると、Lambda関数の実行が自動的にトレースされます。
- ADOT Lambda Layerを追加して環境変数AWS_LAMBDA_EXEC_WRAPPERを設定すると、コードを変更せずに関数内のAWSサービス呼び出し(DynamoDBなど)も自動的にトレースされます。
- loggingモジュールを使うことで、ログレベル(INFO、WARNING、ERROR)に応じた構造化ログを出力できます。
タスク 2:API Gatewayを作成する
目的
Lambda関数を呼び出すAPI Gatewayを作成して、外部からリクエストを送信できるようにしましょう。
手順
(1) API Gatewayコンソールにアクセスし、[APIの作成]をクリック。
(2) HTTP APIの[構築]をクリック。
(3) 以下の設定を行います:
| 項目 | 設定値 |
|---|---|
| 統合 | Lambda |
| Lambda関数 | HandsonMonitorFunction |
| API名 | HandsonMonitorAPI |
(4) [次へ]をクリック。ルートの設定でメソッドGET、リソースパス/monitorを確認して[次へ]をクリック。
(5) ステージ名はデフォルト($default)のまま[次へ]をクリック。
(6) [作成]をクリック。
(7) 表示されるURLの呼び出しをメモします。
例:https://xxxxxxxxxx.execute-api.ap-northeast-1.amazonaws.com
(8) CloudShellからAPIをテストします:
|
1 2 3 4 5 6 7 8 9 10 11 |
API_URL="https://xxxxxxxxxx.execute-api.ap-northeast-1.amazonaws.com" # 正常リクエスト curl -s "$API_URL/monitor?action=normal" # エラーリクエスト curl -s "$API_URL/monitor?action=error" # 遅延リクエスト curl -s "$API_URL/monitor?action=slow" |
(9) ログ分析用にリクエストを複数回実行しておきます:
|
1 2 3 4 5 |
for i in $(seq 1 10); do curl -s "$API_URL/monitor?action=normal" > /dev/null; done for i in $(seq 1 5); do curl -s "$API_URL/monitor?action=error" > /dev/null; done for i in $(seq 1 3); do curl -s "$API_URL/monitor?action=slow" > /dev/null; done echo "リクエスト完了" |
ポイント
- HTTP API(V2)はREST APIより低コストでシンプルな構成です。
- 複数パターンのリクエストを送信することで、あとのタスクでログ分析やトレース確認のデータが蓄積されます。
タスク 3:CloudWatch Logsメトリクスフィルターとアラームを設定する
目的
CloudWatch Logsのログからエラーを検知するメトリクスフィルターを作成し、アラームで通知する仕組みを構築しましょう。
手順
(1) CloudWatchコンソールにアクセスし、左メニューから[ロググループ]をクリック。
(2) /aws/lambda/HandsonMonitorFunctionロググループを選択します。
(3) [メトリクスフィルター]タブをクリックし、[メトリクスフィルターを作成]をクリック。
(4) 以下の設定を行います:
| 項目 | 設定値 |
|---|---|
| フィルターパターン | ERROR |
| フィルター名 | HandsonErrorFilter |
| メトリクス名前空間 | HandsonMonitor |
| メトリクス名 | ErrorCount |
| メトリクス値 | 1 |
| デフォルト値 | 0 |
(5) [メトリクスフィルターを作成]をクリック。
(6) 次にアラームを作成します。CloudWatchコンソールの左メニューから[アラーム]-[アラームの作成]をクリック。
(7) [メトリクスの選択]をクリックし、カスタム名前空間のHandsonMonitor → メトリクス → ErrorCountを選択して[メトリクスの選択]をクリック。
(8) 以下の設定を行います:
| 項目 | 設定値 |
|---|---|
| 統計 | 合計 |
| 期間 | 1分 |
| しきい値の種類 | 静的 |
| 条件 | 以上 |
| しきい値 | 3 |
(9) [次へ]をクリック。
(10) 通知先としてSNSトピックを新規作成します:
| 項目 | 設定値 |
|---|---|
| SNSトピック | 新しいトピックの作成 |
| トピック名 | HandsonMonitorAlarm |
| Eメールエンドポイント | 自分のメールアドレス |
(11) [トピックの作成]をクリックして[次へ]をクリック。
(12) アラーム名にHandsonErrorAlarmと入力して[次へ]をクリック。
(13) [アラームの作成]をクリック。
(14) メールアドレスに届いた確認メールのリンクをクリックしてサブスクリプションを確認します。
(15) アラームをテストします。CloudShellでエラーリクエストを複数回送信します:
|
1 2 3 |
for i in $(seq 1 5); do curl -s "$API_URL/monitor?action=error" > /dev/null; done echo "エラーリクエスト5回送信完了" |
1分後にアラームがALARM状態になり、メール通知が届くことを確認します。
ポイント
- メトリクスフィルターはログ内の特定パターンを検知してメトリクスとして集計します。
- CloudWatchアラームはメトリクスのしきい値を超えたときにアクション(SNS通知)を実行します。
- 「1分間にERRORが3回以上」のような条件で、アプリケーションの異常を自動検知できます。
- 本番環境では、Slackや PagerDutyなどと連携した通知も構成できます。
タスク 4:CloudWatch Logs Insightsでログを分析する
目的
CloudWatch Logs Insightsを使って、Lambda関数のログをインタラクティブに分析してみましょう。
手順
(1) CloudWatchコンソールの左メニューから[ログのインサイト]をクリック。
(2) ロググループに/aws/lambda/HandsonMonitorFunctionを選択します。
(3) 以下のクエリを入力して[クエリの実行]をクリック。actionごとのリクエスト数を集計します:
|
1 2 3 4 5 6 |
fields @timestamp, @message | filter @message like /リクエスト受信/ | parse @message "action=*, logId=*" as action, logId | stats count(*) as count by action | sort count desc |
normal、error、slowの各リクエスト数が集計されます。
(4) 次に、エラーログだけを抽出するクエリを実行します:
|
1 2 3 4 5 |
fields @timestamp, @message | filter @message like /エラー発生/ | sort @timestamp desc | limit 20 |
(5) Lambda関数の実行時間を分析するクエリを実行します:
|
1 2 3 4 5 6 7 |
filter @type = "REPORT" | stats avg(@duration) as avgDuration, max(@duration) as maxDuration, min(@duration) as minDuration by bin(5m) | sort bin desc |
5分間隔での平均・最大・最小実行時間が表示されます。slowリクエストがあった時間帯で最大実行時間が大きくなっていることが確認できます。
(6) メモリ使用率を確認するクエリを実行します:
|
1 2 3 4 |
filter @type = "REPORT" | stats max(@memorySize / 1000 / 1000) as memoryAllocatedMB, max(@maxMemoryUsed / 1000 / 1000) as maxMemoryUsedMB |
ポイント
- Logs Insightsは専用のクエリ言語で、ログデータをリアルタイムに検索・集計・可視化できます。
filterでログを絞り込み、parseでフィールドを抽出し、statsで集計します。- @typeがREPORTの行にはLambda関数の実行時間やメモリ使用量が含まれています。
- 定期的な監視にはメトリクスフィルターを使い、対話形式での分析にはLogs Insightsを使います。
タスク 5:X-Rayサービスマップとトレースを確認する
目的
X-Rayコンソールでサービスマップとトレースを確認して、リクエストの処理フローとパフォーマンスを可視化しましょう。
手順
(1) X-Rayコンソール(CloudWatchコンソールの左メニュー[Application Signals(APM)]-[サービスマップ])にアクセスします。
(2) サービスマップに、クライアント → API Gateway → Lambda → DynamoDBのフローが表示されていることを確認します。
(3) 各ノード(丸いアイコン)をクリックすると、レイテンシー、リクエスト数、エラー率などの情報が表示されます。
(4) エラーが発生しているノードは色付き(赤やオレンジ)で表示されます。Lambda関数のノードを確認しましょう。
(5) 左メニューから[トレース]をクリックして、個別のトレースを確認します。
(6) 正常なリクエストのトレースを選択して、各セグメントの実行時間を確認します。DynamoDBへのPutItemにどのぐらい時間がかかっているかが見えます。
(7) action=slowのリクエストのトレースを選択して、遅延が発生している箇所を確認します。
(8) action=errorのリクエストのトレースを選択して、エラーが記録されているセグメントを確認します。
ポイント
- X-Rayはリクエスト全体の処理フローを可視化するサービスで、マイクロサービスのパフォーマンスボトルネックやエラー箇所を特定するのに役立ちます。
- サービスマップではリクエストのフロー全体と各サービスのレイテンシー・エラー率を俯瞰できます。
- 個別トレースでは、各セグメント(Lambda初期化、関数実行、DynamoDB呼び出し等)の実行時間を詳細に確認できます。
- X-RayはLambda、API Gateway、DynamoDB、S3、SQS、SNSなど多数のAWSサービスと統合されています。
タスク 6:エクスポネンシャルバックオフによる再試行を実装する
目的
スロットリングエラーや5xxエラーが発生した際の再試行ロジックとして、エクスポネンシャルバックオフ(指数バックオフ)を実装してみましょう。
手順
(1) CloudShellで以下のPythonスクリプトを実行します。意図的にスロットリングを発生させて、エクスポネンシャルバックオフで再試行する動作を確認します:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
python3 << 'EOF' import time import random import urllib.request import urllib.error API_URL = "https://xxxxxxxxxx.execute-api.ap-northeast-1.amazonaws.com/monitor" def request_with_backoff(url, max_retries=5): """エクスポネンシャルバックオフ + ジッターによる再試行""" for attempt in range(max_retries): try: req = urllib.request.Request(url) with urllib.request.urlopen(req) as resp: status = resp.status print(f" 試行 {attempt + 1}: 成功 (ステータス {status})") return resp.read().decode() except urllib.error.HTTPError as e: if e.code in [429, 500, 502, 503]: # エクスポネンシャルバックオフ + ジッター wait = (2 ** attempt) + random.uniform(0, 1) print(f" 試行 {attempt + 1}: エラー {e.code} - {wait:.2f}秒待機して再試行...") time.sleep(wait) else: print(f" 試行 {attempt + 1}: エラー {e.code} - 再試行対象外") raise print(f" 最大再試行回数({max_retries})に達しました") return None print("=== エクスポネンシャルバックオフのデモ ===\n") print("1. 正常なリクエスト:") result = request_with_backoff(f"{API_URL}?action=normal") print("\n2. エラーリクエスト(500エラー → 再試行):") result = request_with_backoff(f"{API_URL}?action=error") print("\n=== 再試行間隔の例 ===") print("試行1: 即時実行") for i in range(5): wait = (2 ** i) + random.uniform(0, 1) print(f"試行{i+2}: {wait:.2f}秒後 (2^{i} + ジッター)") EOF |
URLのxxxxxxxxxx部分はタスク2でメモしたAPIのIDに置き換えてください。
ポイント
- エクスポネンシャルバックオフは再試行のたびに待機時間を指数的に増やすアルゴリズムです(1秒→2秒→4秒→8秒…)。
- ジッター(ランダムな遅延)を加えることで、複数クライアントの再試行タイミングが重なることを防ぎます。
- AWS SDKにはエクスポネンシャルバックオフが組み込まれているため、通常は開発者が実装する必要はありません。
- SDKを使わない場合(直接HTTP API呼び出し等)では、自前でエクスポネンシャルバックオフを実装します。
- 再試行対象は5xx(サーバーエラー)と429(スロットリング)です。4xx(クライアントエラー)は再試行しても解決しないため対象外です。
クリーンアップ
ハンズオンで作成したリソースをすべて削除します。以下の順番で削除してください。
(1) CloudWatchアラームの削除
CloudWatchコンソールの[アラーム]でHandsonErrorAlarmを削除します。
(2) SNSトピックの削除
SNSコンソールでHandsonMonitorAlarmトピックを削除します。
(3) API Gatewayの削除
API GatewayコンソールでHandsonMonitorAPIを削除します。
(4) Lambda関数の削除
LambdaコンソールでHandsonMonitorFunctionを削除します。
(5) DynamoDBテーブルの削除
DynamoDBコンソールでHandsonMonitorLogテーブルを削除します。
(6) CloudWatch Logsロググループの削除
CloudWatchコンソールの[ロググループ]で/aws/lambda/HandsonMonitorFunctionを削除します。
(7) IAMロールの削除
IAMコンソールでLambda関数作成時に自動生成されたロールを削除します。
(8) ハンズオン用ポリシーの削除
ハンズオン用に作成したIAMポリシーがあれば削除します。
まとめ
| タスク | サービス | 役割 |
|---|---|---|
| タスク 1 | Lambda + X-Ray + ADOT | トレース有効化とログレベル設定 |
| タスク 2 | API Gateway | HTTPエンドポイントの提供 |
| タスク 3 | CloudWatch Logs | メトリクスフィルターとアラームによる異常検知 |
| タスク 4 | CloudWatch Logs Insights | ログのインタラクティブ分析 |
| タスク 5 | X-Ray | サービスマップとトレースによるパフォーマンス可視化 |
| タスク 6 | エクスポネンシャルバックオフ | 再試行ロジックの実装 |
このハンズオンで体験したモニタリングとトラブルシューティングの特徴をまとめます。
- X-Rayアクティブトレースを有効にすることで、Lambda関数の実行フローが自動的にトレースされます。
- ADOTレイヤーを追加することで、コードを変更せずに関数内のAWSサービス呼び出しも詳細にトレースできます。
- CloudWatch Logsのメトリクスフィルターで特定パターン(ERRORなど)を検知し、アラームで通知を自動化できます。
- CloudWatch Logs Insightsで、大量のログをリアルタイムに検索・集計・可視化できます。
- X-Rayのサービスマップでリクエスト全体のフローを俯瞰し、ボトルネックやエラー箇所を特定できます。
- エクスポネンシャルバックオフ+ジッターにより、スロットリングやサーバーエラーに対して効率的に再試行できます。
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。
「AWS認定資格試験テキスト AWS認定AIプラクティショナー」という本を書きました。
「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
関連記事
-
-
Amazon BedrockがGAしたので触りました(boto3からも)
Amazon Bedrock Is Now Generally Availabl …
-
-
S3バケットポリシーで特定のVPCエンドポイント以外からのリクエストを拒否しつつメンテナンスはしたい
特定のVPCで実行されているEC2のアプリケーションからのリクエストだけを許可し …
-
-
CloudFrontディストリビューションを別アカウントへ移動する
すでにCNAMEを設定しているCloudFrontディストリビューションを、別ア …
-
-
PyCharmにAWS Tool kitをインストールしてサンプルのLambda関数をデプロイして実行しました
この記事はJetBrainsIDE Advent Calendar 2018に参 …
-
-
AWS Service CatalogポートフォリオをOrganizations組織で共有する
AWS Service Catalogチュートリアルで作成したポートフォリオのO …
-
-
Amazon Route 53プライベートホストゾーン設定
Amazon Route 53プライベートホストゾーンを作成してみました。 Ro …
-
-
AWS CodeStarのプロジェクトテンプレートLambda+Pythonによって生成されるもの
勉強会のデモで、AWS CodeStarのプロジェクトテンプレートLambda+ …
-
-
AWS複数アカウントのリソースをLambda(Python)から一括操作したくて
AWSの複数アカウント(30ちょい)のリソースをまとめて自動処理したくて。 とり …
-
-
Amazon CloudWatch Syntheticsでハートビートモニタリングを実行
このブログに対してハートビートモニタリングのCanaryを実行してみました。 C …
-
-
EC2 プレイスメントグループを試してみました
やったことないのでやってみたやつです。 プレイスメントグループの作成 まず、EC …
