2016-08-31 6 views
0

DynamoDBをAmazon Lambdaにリンクしようとしています。これは、アイテムがDynamoDBに挿入されると、ラムダ関数に送信され、データ構造とperfomr操作を解析することになります。しかし、データがこのようなルックスを投稿:Pythonを使用してDynamoDBからLambdaに送信されたデータ構造を解析するにはどうすればよいですか?

for record in event['Records']: 
     print(record['eventID']) 

しかし、私はこれに私のコードを変更し、それが動作しません:

{ 
     "Records": [ 
     { 
      "eventID": "ebefd45a0610c7a54654nb09b491c7c", 
      "eventVersion": "1.1", 
      "dynamodb": { 
      "SequenceNumber": "3300000555554005534567541", 
      "Keys": { 
       "Id": { 
       "S": "13" 
       } 
      }, 
      "SizeBytes": 100, 
      "NewImage": { 
       "url": { 
       "S": "http:\/\/test.com\/blog\/tips-on-choosing-a-suitable-company-2\/" 
       }, 
       "db_ref_id": { 
       "S": "123" 
       }, 
       "Id": { 
       "S": "13" 
       } 
      }, 
      "ApproximateCreationDateTime": 1472638500, 
      "StreamViewType": "NEW_AND_OLD_IMAGES" 
      }, 
      "awsRegion": "us-west-2", 
      "eventName": "INSERT", 
      "eventSourceARN": "arn:aws:dynamodb:us-west-2:3454354:table\/urls\/stream\/2016-08-31T07:21:11.412", 
      "eventSource": "aws:dynamodb" 
     } 
     ] 
    } 

私はこれを行うコードのオンラインのこの作品が発見しました

for record in event['Records']: 
     print(record['dynamodb']['NewImage']['url']['S']) 

私は、Pythonのあまり知りませんので、私はこのデータ構造を解析する最良の方法は何かわかりません。どんな提案も本当に役に立ちます。 eventID

を印刷する

答えて

1

print string['Records'][0]['eventID']ここに関与する多くのデータ構造があります。外側のものはキーを使ってオブジェクトを受け取ることができるpython辞書です。 私たちの場合、辞書には1つのマッピングしかありませんので、そこにあるデータ構造全体が変数eventというイベントに割り当てられていると仮定すると、イベント['Records']を実行できます。後で、インデックスを使用してフェッチできる要素を持つリスト[]があります。これは、あなたが欲しいものを印刷する必要があります

for record in event['Records']: print(record['dynamodb']['NewImage']['url']['S'])

:あなたは私はあなたができた多くのレコードを持っている可能性があるとしていた形式からので

(例:[2]などの[1]、リストの一覧を表示)上に掲示されたデータが文字列の場合、まずjson pythonモジュールを使って解析を行う必要があります。

関連する問題