DynamoDB リソースに対してリソースベースのポリシーを定義する際には、以下の点を考慮してください。
一般的な考慮事項
-
リソースベースのポリシードキュメントでサポートされる最大サイズは 20 KB です。DynamoDB では、この上限に照らしてポリシーのサイズを計算する際に空白はカウントされません。
-
特定のリソースのポリシーの更新が 2 回目以降の場合、同じリソースに対するそのポリシーの前回の更新が正常に終わってから 15 秒間は更新できません。
-
現時点では、リソースベースのポリシーは既存のストリームにのみアタッチできます。作成中のストリームにポリシーをアタッチすることはできません。
グローバルテーブルに関する考慮事項
-
リソースベースのポリシーは、グローバルテーブルバージョン 2017.11.29 (レガシー) のレプリカではサポートされていません。
-
リソースベースのポリシー内で、グローバルテーブルのデータをレプリケートするアクションが DynamoDB のサービスにリンクされたロール (SLR) に対して拒否されている場合、レプリカの追加または削除はエラーで失敗します。
-
AWS::DynamoDB::GlobalTable リソースでは、スタックの更新を行うリージョン以外のリージョンでは、スタックの更新時にレプリカの作成と、そのレプリカへのリソースベースのポリシーの追加を同時に行うことはできません。
クロスアカウントに関する考慮事項
-
リソースベースのポリシーを使用したクロスアカウントアクセスでは、AWS マネージドキーで暗号化したテーブルはサポートされません。AWS KMS のマネージドポリシーへのクロスアカウントアクセスは許可できないからです。
AWS CloudFormation に関する考慮事項
-
リソースベースのポリシーはドリフト検出には対応していません。AWS CloudFormation スタックテンプレートの外部でリソースベースのポリシーを更新した場合は、CloudFormation スタックに変更内容を反映させる必要があります。
-
リソースベースのポリシーは、アウトオブバンドの変更に対応していません。CloudFormation テンプレートの外部でポリシーを追加、更新、または削除しても、テンプレート内のポリシーに変更がない限り、変更は上書きされません。
例えば、テンプレートに含まれているリソースベースのポリシーを、後からテンプレートの外部で更新したとします。テンプレート内のポリシーを変更しない限り、DynamoDB 内の更新済みポリシーはテンプレート内のポリシーと同期されません。
逆に、テンプレートにリソースベースのポリシーは含まれていないが、テンプレートの外部でポリシーを追加したとします。このポリシーは、テンプレートに追加しない限りは、DynamoDB から削除されることはありません。テンプレートにポリシーを追加してスタックを更新すると、DynamoDB の既存のポリシーが、テンプレートで定義されているポリシーと一致するように更新されます。