問題タブ [amazon-dynamodb-streams]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
69 参照

amazon-web-services - Amazon DynamoDB : スキャンによるきめ細かなアクセス制御は不可能のようです

私は3つのフィールドを持つ非常に単純なテーブルを持っています:

  1. uuid (文字列)
  2. 名 (文字列)
  3. 受け入れられた (ブール値)

ユーザー ポリシーで、「スキャン」と「PutItem」という 2 つのアクションが 2 つの条件で許可されるかどうかを知りたいです。

  1. スキャンの場合: すべての Accept=true をスキャンします (その条件のみを許可しますが、可能かどうかはわかりません)。それは「景色」のようなものでしょう。

  2. PutItem の場合: 受け入れられたフィールドを保護します。

私が試したこと

基本的なアプローチを試しました:

"accepted" を削除すると、それに基づいて ScanFilter を使用できなくなります。

2 つの個別のポリシーで 2 人のユーザーを設定する必要がありますか?

最も難しい部分は、すべての項目を で非表示にしているようaccepted:falseです。

どんな助けでも大歓迎です。

0 投票する
1 に答える
1603 参照

amazon-dynamodb-streams - DynamoDB ローカル: Streams.getRecords が TrimmedDataAccessException を返す

DynamoDB ローカルを使用して、nodejs (Javascript SDK) から統合テストを実行しています。getRecords を呼び出すと、「TrimmedDataAccessException」が発生します。AWS (ローカルではない) で DynamoDB に対して同じコードを実行すると、正常に動作します。手順は次のとおりです。

  • DynamoDB を実行する
  • createTable "イベントストア"
  • createTable "音楽"
  • describeTable "EventStore" (LatestStreamArn を取得します)
  • 「LatestStreamArn」として返される describeStream (ShardId を取得します)
  • getShardIterator with ShardIteratorType "LATEST"
  • 「ミュージック」テーブルにレコードを入れる
  • 「EventStore」テーブルにレコードを入れる
  • 「EventStore」ストリームからの getRecords

「put」コマンドの順序は重要です。最初に "EventStore" に配置するとすべて正常に動作しますが、最初に "Music" に配置すると失敗します。ただし、順序を変更するとアプリケーションロジックが間違っているため、順序を変更するだけで問題になります。

DynamoDB を実行する

createTable

createTable (応答)

describeTable(イベントストア)

describeTable(EventStore) レスポンス

記述Steam

describeStream レスポンス

getShardIterator

getShardIterator の応答

put(テーブル名:音楽)

put(テーブル名: イベントストア)

getRecords (イベントストア)

getRecords (EventStore) 応答

0 投票する
1 に答える
4306 参照

amazon-web-services - DynamoDB Lambda トリガー / ストリームを一時的に無効にする

DynamoDB で Lambda トリガーを一時的に無効にする方法を探しています。Lambda コードがトリガーされることなく、テーブルに手動で更新を適用できるようにしたいと考えています (たとえば、S3 バックアップからのデータのインポートなど)。ラムダ関数の「トリガー」タブのトリガーの横にある無効化ボタンを試しました。また、テーブルのストリーム全体を無効にしようとしました。どちらの場合も、トリガー/ストリームを再アクティブ化すると、すべてのトリガー イベント (非アクティブ化中に発生したイベント) が実行されます。

このコードがトリガーされないようにするにはどうすればよいですか?

どうもありがとうございました!

0 投票する
1 に答える
16065 参照

amazon-kinesis - Kinesis ストリームと DynamoDB ストリームの違い

彼らは私に同じことをしているようです。誰も私に違いを説明できますか?

0 投票する
2 に答える
11994 参照

amazon-web-services - 単一の DynamoDB ストリームでの複数の AWS Lambda 関数

複数の DynamoDB ストリームがイベント ソースとして設定されている Lambda 関数があり、これはより大きなパイプラインの一部です。チェックを行っているときに、ダウンストリーム コンポーネントの 1 つで欠落しているデータを見つけました。前述の DynamoDB ストリームの 1 つに対するイベント ソースとして設定された、より単純な Lambda 関数を作成したいと考えています。これにより、DynamoDB ストリームの 1 つに 2 つの Lambda 関数が読み取られます。これでいいのかな?と思いました。両方の Lamdba 関数は、ストリームに配置されたすべてのレコードを受け取ることが保証されていますか?また、注意が必要なリソース (読み取り/書き込みスループット) の制限はありますか? AWS Web サイトでこれに関する関連ドキュメントを見つけることができませんでしたが、シャードの処理に関してこれを見つけました

ストリームにアクセスしてストリーム内のレコードを処理するには、次の手順を実行する必要があります。

  • アクセスするストリームの一意の Amazon リソースネーム (ARN) を決定します。
  • ストリーム内のどのシャードに、関心のあるストリーム レコードが含まれているかを判断します。
  • シャードにアクセスして、必要なストリーム レコードを取得します。

注 同じ Streams シャードから同時に読み取るプロセスは、最大で 2 つまでです。シャードごとに 2 つを超えるリーダーがあると、スロットリングが発生する可能性があります。

上記が、API を使用してストリームから手動で読み取るのではなく、ストリームが Lambda へのイベント ソースとして構成されている場合にどのように関連するかはわかりません。

0 投票する
1 に答える
2408 参照

java - DynamodbStreamRecord マップから JSON 文字列へ

DynamodbStreamRecordAWS Lambda の内部を取得したこの状況があるとしましょう。このストリーム レコード ( という名前の変数record) から、次の方法でマップを抽出する一連の Java メソッドがあります。

ここで、そのようなマップを JSON 文字列に変換する必要があり、入力パラメーターとしてマップを受け取り、その後に:が続くコンストラクターw1Dataを使用しようとしました。org.json.JSONObjecttoString()

しかし、私はこの奇妙な文字列を取得しました:

代わりに、次のようにする必要があります。

DynamoDB によって指定されたデータ型を表示せずに、このマップから有効な JSON 文字列を作成するための提案はありますか?

どうもありがとうございました

0 投票する
1 に答える
541 参照

amazon-web-services - Lambda 関数で DynamoDB のシャード ID を取得する方法は?

AWS DynamoDB トリガーを使用すると、DynamoDB テーブルのすべての変更をキャプチャできます。Lambda は、各 Lambda 関数をDynamoDB Streams のシャードに割り当てます。

一部のデータ処理タスクで一貫性を保つために、Lambda 関数でシャード ID を取得したいのですが、それを取得する方法が見つかりません。誰かがそれを行うことができますか?

0 投票する
2 に答える
1353 参照

amazon-web-services - AWS Lambda の並列実行は DynamoDB とどのように連携しますか?

この記事を読んだところ、データ レコードはシャードと呼ばれるグループに編成され、これらのシャードは Lambda 関数によって並行して消費および処理できると書かれていました。これらのスライドも AWS webindarから見つけました。スライド 22 では、Lambda 関数が異なるシャードを並行して消費することも確認できます。ただし、単一の関数の並列実行は実現できませんでした。1 分間実行される単純なラムダ関数を作成しました。その後、大量のストリーム レコードを取得することを期待して、DynamoDB で大量のアイテムを作成し始めました。それにもかかわらず、私の機能は次々と開始されました。

私が間違っているのは何ですか?