mcpField
A
aws-cloudformation-dynamodb

aws-cloudformation-dynamodb

github.com/giuseppe-trisciuoglioクラウド・DevOps36565 回インストール7 週間前に更新
リポジトリ

aws-cloudformation-dynamodb について

AWS CloudFormation を使う開発者向けに、DynamoDB テーブルのインフラ構成パターンを提供します。インデックス、容量、セキュリティ、ライフサイクル設定に加え、検証とデプロイの手順も扱います。

主な機能

  1. 01テーブルキーと GSI・LSI の設定
  2. 02課金モードと自動スケーリングの設定
  3. 03暗号化、TTL、Streams の有効化
  4. 04ポイントインタイムリカバリとクロススタック参照の設定

活用シーン

  1. 01アプリケーション用 DynamoDB テーブルの作成
  2. 02アクセスパターンに応じたセカンダリインデックス設計
  3. 03セッションデータの TTL 設定
  4. 04プロビジョンドキャパシティテーブルへの自動スケーリング追加

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/giuseppe-trisciuoglio/developer-kit --skill aws-cloudformation-dynamodb

インストール後、Claude Code で/aws-cloudformation-dynamodbを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
advanced-configuration.md
complete-examples.md
examples.md
reference.md

詳細

AWS CloudFormation DynamoDB パターン

DynamoDB テーブル、GSI、LSI、自動スケーリング、暗号化、TTL、ストリームを備えた AWS CloudFormation テンプレートを使用して、本番環境ですぐに利用できる NoSQL データベースのインフラストラクチャパターンを提供します。

概要

DynamoDB テーブル、プライマリキー、セカンダリインデックス(GSI/LSI)、キャパシティモード、自動スケーリング、暗号化、TTL、ストリームに加え、パラメーター、出力、スタック間参照のベストプラクティスを扱います。

使用する場面

DynamoDB テーブルの作成、キーとインデックスの設定、キャパシティモードの設定、自動スケーリングの実装、暗号化/TTL/ストリームの有効化、CloudFormation テンプレートの整理に使用します。

手順

CloudFormation で DynamoDB テーブルを作成するには、次の手順に従います。

  1. テーブルのパラメーターを定義する:テーブル名と請求モードを指定します
  2. プライマリキーを設定する:パーティションキーと、必要に応じてソートキーを設定します
  3. セカンダリインデックスを追加する:別のアクセスパターン用に GSI を作成します
  4. 暗号化を設定する:KMS キーを使用した暗号化を有効にします
  5. TTL を設定する:自動削除用のタイムスタンプ属性を定義します
  6. ストリームを有効にする:変更データキャプチャ用のストリームを設定します
  7. 自動スケーリングを追加する:プロビジョニング済みキャパシティに対して Application Auto Scaling を実装します
  8. バックアップを作成する:ポイントインタイムリカバリを有効にします
  9. テンプレートを検証する:デプロイ前に aws cloudformation validate-template を実行します
  10. スタックをデプロイする:aws cloudformation create-stack または update-stack を使用します
  11. イベントを監視する:aws cloudformation describe-stack-events を確認し、失敗や ROLLBACK 状態がないか調べます
  12. ロールバックに対処する:失敗した場合は、イベントでリソースエラーを確認し、テンプレートを修正して再デプロイします

クイックリファレンス

リソースタイプ用途
AWS::DynamoDB::TableDynamoDB テーブルを作成します
AWS::ApplicationAutoScaling::ScalableTarget自動スケーリングの設定
AWS::ApplicationAutoScaling::ScalingPolicyスケーリングポリシー
AWS::KMS::Key暗号化用の KMS キー
AWS::IAM::Role自動スケーリング用の IAM ロール
BillingModePAY_PER_REQUEST または PROVISIONED
SSESpecificationサーバー側の暗号化

例

オンデマンドキャパシティを使用する基本的なテーブル
DynamoDBTable:
  Type: AWS::DynamoDB::Table
  Properties:
    TableName: !Sub "${AWS::StackName}-table"
    BillingMode: PAY_PER_REQUEST
    AttributeDefinitions:
      - AttributeName: pk
        AttributeType: S
    KeySchema:
      - AttributeName: pk
        KeyType: HASH
グローバルセカンダリインデックスを含むテーブル
DynamoDBTable:
  Type: AWS::DynamoDB::Table
  Properties:
    TableName: !Sub "${AWS::StackName}-table"
    BillingMode: PAY_PER_REQUEST
    AttributeDefinitions:
      - AttributeName: pk
        AttributeType: S
      - AttributeName: gsi-pk
        AttributeType: S
    KeySchema:
      - AttributeName: pk
        KeyType: HASH
    GlobalSecondaryIndexes:
      - IndexName: gsi-index
        KeySchema:
          - AttributeName: gsi-pk
            KeyType: HASH
        Projection:
          ProjectionType: ALL
TTL を含むテーブル
SessionTable:
  Type: AWS::DynamoDB::Table
  Properties:
    TableName: !Sub "${AWS::StackName}-sessions"
    BillingMode: PAY_PER_REQUEST
    AttributeDefinitions:
      - AttributeName: sessionId
        AttributeType: S
    KeySchema:
      - AttributeName: sessionId
        KeyType: HASH
    TimeToLiveSpecification:
      AttributeName: expiresAt
      Enabled: true
自動スケーリングを含むテーブル
ScalableTarget:
  Type: AWS::ApplicationAutoScaling::ScalableTarget
  Properties:
    MaxCapacity: 100
    MinCapacity: 5
    ResourceId: !Sub "table/${DynamoDBTable}"
    RoleARN: !GetAtt AutoScalingRole.Arn
    ScalableDimension: dynamodb:table:ReadCapacityUnits
    ServiceNamespace: dynamodb

暗号化、ストリーム、自動スケーリング、本番環境向けテーブルを含む詳細な例については、references/complete-examples.md を参照してください。

テンプレートの構造

ベーステンプレート
AWSTemplateFormatVersion: 2010-09-09
Description: DynamoDB table with GSI and auto-scaling

Parameters:
  TableName:
    Type: String
    Default: my-table
  BillingMode:
    Type: String
    Default: PAY_PER_REQUEST

Resources:
  DynamoDBTable:
    Type: AWS::DynamoDB::Table
    Properties:
      TableName: !Ref TableName
      BillingMode: !Ref BillingMode

Outputs:
  TableName:
    Value: !Ref DynamoDBTable
  TableArn:
    Value: !GetAtt DynamoDBTable.Arn

Parameters、Mappings、Conditions、Outputs、IAM ロール、スタック間参照の詳細については、references/advanced-configuration.md を参照してください。

ベストプラクティス

  1. 開発/テスト環境や予測できないワークロードには PAY_PER_REQUEST を使用する
  2. 本番環境のテーブルでは ポイントインタイムリカバリを有効にする
  3. 機密データには KMS 暗号化を使用する(SSE-KMS)
  4. プロビジョニング済みキャパシティのテーブルでは 自動スケーリングを設定する
  5. GSI を慎重に設計する - 各 GSI はキャパシティを消費します
  6. 自動的なデータ有効期限切れ(セッション、キャッシュ)には TTL を使用する
  7. 変更データキャプチャと分析には ストリームを有効にする
  8. コスト配分と整理のために リソースにタグを付ける
  9. スタック間参照用に 出力をエクスポートする
  10. 環境固有の設定には Conditions を使用する

よくあるトラブルシューティング

テーブルがすでに存在する:一意のテーブル名を使用するか、スタックの削除ポリシーを設定してください GSI の作成に失敗する:属性定義に GSI の属性が含まれていることを確認してください 自動スケーリングが機能しない:IAM ロールの権限とサービスリンクロールを確認してください TTL による有効期限切れが発生しない:TTL 属性が String 型ではなく Number 型であることを確認してください ストリームが有効にならない:ストリームを有効にできるのはテーブル作成時のみです 暗号化エラーが発生する:KMS キーがテーブルと同じリージョンにあることを確認してください

関連スキル

参考資料

完全な例
  • references/complete-examples.md - 基本的なテーブル、GSI、LSI、TTL、暗号化、PITR、自動スケーリング、本番環境用テーブル、グローバルテーブル、ストリーム
高度な設定
  • references/advanced-configuration.md - パラメーター、マッピング、条件、自動スケーリングポリシー、ストリーム、TTL、グローバルテーブル、出力、IAM ロール、削除ポリシー

制約事項と警告

  • テーブル名:リージョンごとに一意である必要があります(グローバルテーブルではグローバルに一意である必要があります)
  • GSI の制限:テーブルごとに最大 5 個の GSI(単一リージョンのテーブルの場合)
  • LSI の制限:テーブルごとに最大 5 個の LSI。テーブルと同じパーティションキーを使用する必要があります
  • キャパシティの制限:オンデマンドにはデフォルトのアカウント制限があります(40,000 RCU、40,000 WCU)
  • 自動スケーリング:PROVISIONED 課金モードが必要です(PAY_PER_REQUEST ではありません)
  • ポイントインタイムリカバリ:テーブルの作成時にのみ有効にできます
  • ストリーム:テーブルの作成時にのみ有効にできます
  • 暗号化:KMS キーはテーブルと同じリージョンにある必要があります
  • TTL:属性は Number 型である必要があり、秒単位で測定されます
  • スループット:各 GSI は、テーブルとプロビジョニング済みスループットを共有します
  • アイテムサイズの上限:1 アイテムあたり最大 400 KB
  • ホットパーティション:ホットパーティションの問題を避けるようにキーを設計してください

コメント