[アップデート] Amazon DynamoDB でも Console-to-Code がサポートされました

[アップデート] Amazon DynamoDB でも Console-to-Code がサポートされました

2025.08.10

いわさです。

AWS には Console-to-Code では一部サービスで Console-to-Code というマネジメントコンソール上の機能を使うことができます。
この機能を使うとマネジメントコンソール上でリソースに対して行った操作を記録し、そこから書き込みアクションを Amazon Q Developer で分析させて CloudFormation や CDK のソースコードを生成することができます。

https://dev.classmethod.jp/articles/console-to-code-general-available/

この Console-to-Code、これまで EC2、VPC、RDS でのみサポートされていたのですが、先日のアップデートで DynamoDB も追加されました。

https://aws.amazon.com/about-aws/whats-new/2025/08/amazon-dynamodb-adds-console-to-code/

個人的には CloudTrail や IaC Generator でやりたいことは実現できていたかつもっと広い範囲にサービスがサポートされていたので Console-to-Code を使うことは少なかったのですが、DAX の作成もサポートされているのかなど少し気になる点があったので試してみましたので、様子を紹介します。

記録されるものの確認

まずは DynamoDB コンソールを確認してみます。
Console-to-Code がサポートされている機能の場合はヘルプパネルや Amazon Q を表示するアイコンエリアに次のように Console-to-Code 用のアイコンが追加されるのですが、DynamoDB コンソール上にも追加されていることを確認しました。

58B0451D-F5C6-4027-9B14-1A532964DDBC.png

こちらを押すと Console-to-Code 用のパネルが表示されます。
操作の記録はユーザーが明示的に開始したタイミングから記録されます。
次の「記録を開始」ボタンを押すことで記録できます。

03FD57C5-6166-40E6-9E11-C74FE189DF54.png

「記録を開始」ボタンを押すとと次のように「記録が進行中」と表示されます。この状態でマネジメントコンソール上で操作した内容が記録されます。
注意事項として、画面上にも記載されていますが「記録を開始」ボタンを押したこのタブでのみの操作が記録されますので注意しましょう。

DA920159-6336-4CB8-AD5E-9DA3E480CDB7.png

テーブルを作成を開始しようとしたところ、画面上で操作した内容っぽいものが Console-to-Code パネルの「記録されたアクション」一覧に追加されはじめました。
読み取り専用操作も記録されるんですね。

BA939032-1E1A-4BB8-B20C-65F1A216BD74.png

適当なテーブルを作成してみると、次のように CreateTable などの書き込みアクションが記録されていることを確認出来ました。なるほど。

3A9D06F6-F41C-4528-B117-05D2A8EC61A6.png

ポイントインタイムリカバリ機能など追加のオプション機能も有効化してみます。

7FD5E536-910E-4F86-A67A-29214EE9A101.png

次のように書き込みアクションとして UpdateContinuousBackups が実行されていることがわかりますね。CreateTable 以外も色々と考慮されていそうです。

2F1DAE27-CEC8-4244-BCFB-EFABF01F30E8.png

ちなみに追加で DAX クラスターも作成してみたのですが、こちらも問題なく記録されていそうでした。

image.png

記録されたものを出力する

操作の記録が出来たら、記録されたものの中からどれを選択してどういう形式で出力するのかを選択します。
注意点がいくつかありまして、まず選択できるオペレーションは最大 20 個までとなっています。

3DCC4DB2-1FCA-4CA2-A150-6D455D9D1CB1.png

また、読み取りアクションも選択はできるのですが、出力時には除外されるようになっています。
なので、次のように書き込みアクションのみを選択するようにし、その上で 20 個を超える場合は分割して操作しましょう。

DD1DC11B-0F72-4324-8335-C9721D0E19F5.png

出力形式は複数選択することが出来ます。
CDK であれば Java、Python、TypeScript から、CloudFormation の場合は JSON、YAML です。

3E8F4363-2025-4312-AB7B-CD588A1477DE_4_5005_c.jpeg

CloudFromation/CKD 出力の初回操作時は次のようにクロスリージョン呼び出し実行について許可する必要があります。
CLI コマンドの出力のみであれば不要です。

219CADC0-F39F-4FE0-A614-F9FC9212B28D_4_5005_c.jpeg

上記を許可すると次のように Amazon Q Developer が CloudFormation コードの生成を開始します。

847EA1E5-A49E-44CF-A574-660FBC83AE96.png

少し待つと次のようにコードが生成されるのでコピーするかダウンロード操作を行います。

39043E5A-37BD-4B92-93E2-217C3F78E10D.png

上記にも免責事項的に記載されていますが、あくまでもこのコードをそのまま使うのではなくこれをベースに色々と調整していく必要があります。
なお、今回生成されたコードをダウンロードしたものは以下になります。

CFN/YAML

---
AWSTemplateFormatVersion: '2010-09-09'
Description: 'AWS CloudFormation template for DynamoDB table, DAX cluster, and Application Auto Scaling'

Resources:

  # DynamoDB Table
  DynamoDBTable:
    Type: 'AWS::DynamoDB::Table'
    Properties:
      AttributeDefinitions:
        - AttributeName: aaa
          AttributeType: S
      BillingMode: PAY_PER_REQUEST
      KeySchema:
        - AttributeName: aaa
          KeyType: HASH
      TableName: hoge0810table
      TableClass: STANDARD
      PointInTimeRecoverySpecification:
        PointInTimeRecoveryEnabled: true
        RecoveryPeriodInDays: 35
      TimeToLiveSpecification:
        AttributeName: hoge-time
        Enabled: true

  # Application Auto Scaling Policy
  ApplicationAutoScalingPolicy:
    Type: 'AWS::ApplicationAutoScaling::ScalingPolicy'
    Properties:
      PolicyName: console_d64b88cd-e50f-4a60-a700-ce3b971f6966;-scaling-policy
      PolicyType: TargetTrackingScaling
      ScalableDimension: dynamodb:table:ReadCapacityUnits
      ServiceNamespace: dynamodb
      ResourceId: !Sub 'table/${DynamoDBTable}'
      TargetTrackingScalingPolicyConfiguration:
        PredefinedMetricSpecification:
          PredefinedMetricType: DynamoDBReadCapacityUtilization
        TargetValue: 70

  # DAX Subnet Group
  DAXSubnetGroup:
    Type: 'AWS::DAX::SubnetGroup'
    Properties:
      Description: ''
      SubnetGroupName: hoge0810daxsubnet
      SubnetIds:
        - subnet-b461c1fc

  # DAX Cluster
  DAXCluster:
    Type: 'AWS::DAX::Cluster'
    Properties:
      ClusterName: hoge0810cluster
      NodeType: dax.r7i.large
      IamRoleArn: 'arn:aws:iam::123456789012:role/service-role/hoge0810dax'
      ReplicationFactor: 3
      SubnetGroupName: !Ref DAXSubnetGroup
      SecurityGroupIds:
        - sg-ea2297a6
      ParameterGroupName: default.dax1.0
      SSESpecification:
        Enabled: true
      NetworkType: ipv4
      ClusterEndpointEncryptionType: TLS

Reasoning:

1) Libraries and their versions used: AWS::DynamoDB::Table, AWS::ApplicationAutoScaling::ScalingPolicy, AWS::DAX::SubnetGroup, AWS::DAX::Cluster
2) AWS resources impacted: DynamoDB table, Application Auto Scaling policy, DAX subnet group, DAX cluster
3) AWS actions performed: Create DynamoDB table, create Application Auto Scaling policy for DynamoDB table read capacity, create DAX subnet group, create DAX cluster
4) The generated YAML creates a DynamoDB table with specified attributes, billing mode, key schema, and enables point-in-time recovery and time-to-live specification. It also creates an Application Auto Scaling policy to scale the DynamoDB table's read capacity based on utilization. Additionally, it creates a DAX subnet group and a DAX cluster with specified configurations like node type, replication factor, security group, and encryption settings.

さいごに

本日は Amazon DynamoDB でも Console-to-Code がサポートされたので使ってみました。

キャッチアップできていなかったのですが、Amazon Q Developer が動いているんですね。
無料で使い始めることができるのですが、無料枠の上限に達した場合は Amazon Q Developer Pro を利用する必要がある点が言及されていました。その場合は IAM Identity Center でマネジメントコンソールにアクセスできる必要があります。

https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/getting-started-idc.html

この記事をシェアする

facebookのロゴhatenaのロゴtwitterのロゴ

© Classmethod, Inc. All rights reserved.