memo.log

技術情報の雑なメモ

MemoCliper プライバシーポリシー

MemoClip プライバシーポリシー

MemoClipは、入力されたメモの内容をお使いのMac内にのみ保存するアプリです。

  • メモの内容は、外部のサーバーや第三者に送信されることは一切ありません。
  • インターネット通信を行いません。
  • 個人情報、利用状況、その他いかなるデータも収集しません。
  • メモの内容は、お使いのMac内の以下の場所にのみ保存されます: ~/Library/Application Support/com.kuredev.MemoClip/

ご不明な点がございましたら、下記の連絡先までお問い合わせください。

API Gateway の実行ログの動きメモ

まずAPI Gatewayのログにはアクセスログと実行ログがある。以下記事が分かりやすい。

dev.classmethod.jp

マネジメントコンソールでいえば以下に該当。

これを有効にするとCloudWatch Logsのロググループが勝手に作成されていた。ただし、このグループへのリンクがAPI Gatewayの画面には見当たらないので分かりづらいなと。これは命名規則が決まっているようだ。

以下がロググループ名であり、名前にステージ名が加えられているとおり、ステージごとに有効にする必要があるらしい。

API-Gateway-Execution-Logs_{APIのID}/{ステージ名}

これがAPIレベルではどう見えるか確認してみた。

ロググループ有効化前に get-stage APIでステージを取得すると以下のとおり

aws apigateway get-stage --rest-api-id xxxxxxx --stage-name Prod 
{
    "deploymentId": "xxxxx",
    "stageName": "Prod",
    "cacheClusterEnabled": false,
    "cacheClusterStatus": "NOT_AVAILABLE",
    "methodSettings": {},
    "tracingEnabled": false,
    "tags": {
        "aws:cloudformation:logical-id": "ServerlessRestApiProdStage",
        "aws:cloudformation:stack-id": "arn:aws:cloudformation:ap-northeast-1:1111111111111111:stack/sam-log/xxxxxxxxxxxxx",
        "aws:cloudformation:stack-name": "sam-log"
    },
    "createdDate": "2026-06-28T10:59:51+09:00",
    "lastUpdatedDate": "2026-06-28T10:59:51+09:00"
}

有効化後は以下のとおり。 methodSettings に実行ログに関する情報が追加されているのが分かる。

{
    "deploymentId": "gna1vm",
    "stageName": "Prod",
    "cacheClusterEnabled": false,
    "cacheClusterStatus": "NOT_AVAILABLE",
    "methodSettings": {
        "*/*": {
            "metricsEnabled": false,
            "loggingLevel": "ERROR",
            "dataTraceEnabled": false,
            "throttlingBurstLimit": 5000,
            "throttlingRateLimit": 10000.0,
            "cachingEnabled": false,
            "cacheTtlInSeconds": 300,
            "cacheDataEncrypted": false,
            "requireAuthorizationForCacheControl": true,
            "unauthorizedCacheControlHeaderStrategy": "SUCCEED_WITH_RESPONSE_HEADER"
        }
    },
    "tracingEnabled": false,
    "tags": {
        "aws:cloudformation:logical-id": "ServerlessRestApiProdStage",
        "aws:cloudformation:stack-id": "arn:aws:cloudformation:ap-northeast-1:1111111111111:stack/sam-log/22222-222222-11f1-aa35-211111",
        "aws:cloudformation:stack-name": "sam-log"
    },
    "createdDate": "2026-06-28T10:59:51+09:00",
    "lastUpdatedDate": "2026-06-28T16:32:53+09:00"
}

docs.aws.amazon.com

CFnテンプレートの更新で、S3バケットの削除が入っていたが、バケットが空では無かった場合

  • 他のリソースは削除されるが、S3バケットは削除に失敗し、スタックの更新がエラーになる
  • スタックのステータスは UPDATE_COMPLETE_CLEANUP_IN_PROGRESS となる
  • スタックが裏で削除を試行しており、バケットを削除すると、勝手にスタックの更新も完了する

CloudFormation のインポートのメモ

大まかな流れ

  • ① 実リソースをデプロイする(マネコンとかで)
    • リソースIDを控えておく
  • ② 「インポート後」のリソースが反映されたテンプレートファイルを準備する
    • このとき追加リソースには DeletionPolicy を指定すること
  • ③ マネコンからリソースのインポートをウィザードにしたがって進める

Tips

  • 元からテンプレートファイルで定義されていたリソースが、インポート時指定のテンプレートファイルから無くなっていると怒られるので、元からあったものに追加すること

Z80 の NOP テスターのタイミングチャートを描いたら理想通りで震えた

kure.hatenablog.jp

こちらの記事で紹介したNOPテスターの動作を WaveDrom というツールでチャートにした。

WaveDrom - Digital timing diagram everywhere

撮影した動画をスローで停止しつつ、各ピンの値を書き溜めていくと、以下の通りになった。

{signal: [
  {name: "clk",  wave: "10101010101010101010101010"},

  {name: "addr", wave: "x=......=.......=.......=", data: [
    "0","1","2","3"
  ]},

  {name: "/M1",  wave: "0...1...0...1...0...1...0."},
  {name: "/MREQ", wave: "10..10.1.0...10.1.0..10.1.0"},
  {name: "/IORQ", wave: "1........................."},
  {name: "/RD",   wave: "10..1....0..1....0..1....0"},
  {name: "/WR",   wave: "1........................."}
]}

詳細を確認すると本の内容が理想的な形でチャートになっていた。 また、細かい動きは別の記事か動画で解説したい。