前提
現在、AWSのDynamoDB,lambda,gateway API等の機能を勉強中です。
実現したいこと
AWS IoTでつくるお手軽スマートホーム
上記の書籍に載っていた内容で、DynamoDBに蓄積されたデータをgateway API機能でアクセスする項目があり、これを自分のAWSアカウントでもやってみようと思いました。
発生している問題・エラーメッセージ
AWSのDynamoDB,lambda,gateway API機能それぞれに必要な設定を実施して、gateway API経由で作成したlambda関数を実行してみるとエラーが発生してDynamoDBに蓄積されたデータを取得できません。
どのように解消したらよいか教えて下さい。
lambda単体でのテストの場合は次のような結果のエラー表示となります。
Test Event Name test20221024 Response { "errorMessage": "An error occurred (ValidationException) when calling the Query operation: Query condition missed key schema element: sample_time", "errorType": "ClientError", "stackTrace": [ " File \"/var/task/lambda_function.py\", line 17, in lambda_handler\n data = get_data()\n", " File \"/var/task/lambda_function.py\", line 8, in get_data\n response = table.query(\n", " File \"/var/runtime/boto3/resources/factory.py\", line 520, in do_action\n response = action(self, *args, **kwargs)\n", " File \"/var/runtime/boto3/resources/action.py\", line 83, in __call__\n response = getattr(parent.meta.client, operation_name)(*args, **params)\n", " File \"/var/runtime/botocore/client.py\", line 391, in _api_call\n return self._make_api_call(operation_name, kwargs)\n", " File \"/var/runtime/botocore/client.py\", line 719, in _make_api_call\n raise error_class(parsed_response, operation_name)\n" ] } Function Logs START RequestId: 2ce0225c-18e2-4c98-a5e9-472a8968129b Version: $LATEST [ERROR] ClientError: An error occurred (ValidationException) when calling the Query operation: Query condition missed key schema element: sample_time Traceback (most recent call last): File "/var/task/lambda_function.py", line 17, in lambda_handler data = get_data() File "/var/task/lambda_function.py", line 8, in get_data response = table.query( File "/var/runtime/boto3/resources/factory.py", line 520, in do_action response = action(self, *args, **kwargs) File "/var/runtime/boto3/resources/action.py", line 83, in __call__ response = getattr(parent.meta.client, operation_name)(*args, **params) File "/var/runtime/botocore/client.py", line 391, in _api_call return self._make_api_call(operation_name, kwargs) File "/var/runtime/botocore/client.py", line 719, in _make_api_call raise error_class(parsed_response, operation_name)END RequestId: 2ce0225c-18e2-4c98-a5e9-472a8968129b REPORT RequestId: 2ce0225c-18e2-4c98-a5e9-472a8968129b Duration: 286.93 ms Billed Duration: 287 ms Memory Size: 128 MB Max Memory Used: 67 MB Init Duration: 339.94 ms Request ID 2ce0225c-18e2-4c98-a5e9-472a8968129b
該当のソースコード
python
1import boto3 2from boto3.dynamodb.conditions import Key 3 4dynamodb = boto3.resource('dynamodb') 5table = dynamodb.Table('send_data005') 6 7def get_data(): 8 response = table.query( 9 KeyConditionExpression=Key('client_id').eq('sample_time'), 10 ScanIndexForward=False, 11 Limit=1 12 ) 13 return response['Items'][0] 14 15 16def lambda_handler(event, context): 17 data = get_data() 18 return data 19 20
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。