ファイルがS3にアップロードされるたびに、S3がSQSにメッセージを書き込めることを感謝します。しかし、PythonからSQSメッセージ本体のファイル名( "key": "filename.txt")にアクセスすることは、複数の辞書を持つリストを含む辞書であるため、少し問題があります。S3によって作成されたAWS SQSメッセージにアクセスするPython
S3イベントによってメッセージが作成されたときに誰もがSQSメッセージ本文のファイル名にアクセスしましたか??
完全なメッセージは次のとおりです。私はJSON適切であるためにあなたの質問を修正しました
{
"Records": [{
"eventVersion": "2.0",
"eventSource": "aws:s3",
"awsRegion": "us-west-2",
"eventTime": "2016-12-04T22:14:52.325Z",
"eventName": "ObjectCreated:Put",
"userIdentity": {
"principalId": "ABC123"
},
"requestParameters": {
"sourceIPAddress": "12.345.687.899"
},
"responseElements": {
"x-amz-request-id": "ABC123",
"x-amz-id-2": "ABCDEF"
},
"s3": {
"s3SchemaVersion": "1.0",
"configurationId": "MyQueueName",
"bucket": {
"name": "mybucket",
"ownerIdentity": {
"principalId": "ABC123"
},
"arn": "arn:aws:s3:::mybucket"
},
"object": {
"key": "filename.txt",
"size": 2310,
"eTag": "defg123",
"sequencer": "00345"
}
}
}]
}
はあなたが解析する必要があり、標準のJSON応答メッセージはありえないことが確実であるべきでしょうか? –
また、 '' object ":" key ":" filename.txt "'は有効なJSONやPythonの辞書構文ではありませんので、いくつかのエスケープ文字がないと思います –
@ cricket_007これは誤植だと思います。 。実際には '' object ":{" key ":" filename.txt "、" size ":...' ... yes、standard JSONです。 OPは(擬似コード)from_json(this) - > Records [0] - > object-> keyを抽出する必要があります。おそらくあなたはそれを助けることができますか?私はこのJSONデータ構造に精通していますが、私はPythonの人ではありません。レコード配列には常にメンバーが1つしかありません(このデータ構造は、マルチプルAWSサービスで使用される一般的な構造です。これが配列なのです)。 –