Describe the bug:
When using Azure Table Client (package azure-data-tables) inside an Azure Function instrumented with elasticapm.contrib.serverless.azure.ElasticAPMExtension and querying a data table using PartitionKey and RowKey, the underlying HTTP request to the table service sends the request parameters in the query string and the request has no body. When Azure Tables instrumentation from Elastic APM reaches this line:
|
body = request.body |
|
try: |
|
body = json.loads(body) |
|
except json.decoder.JSONDecodeError: # str not bytes |
|
body = {} |
|
# /tablename(PartitionKey='<partition-key>',RowKey='<row-key>') |
It crashes because the body is None
To Reproduce
- Create an Storage Account in Azure and create a Table named 'test' and insert an entity with PartitionKey 'KEY' and RowKey 'ROW'
- Get the Storage Account SAS_TOKEN to connect to the table service and query the test table
- Create an Azure Function with this code
import azure.functions as func
from elasticapm.contrib.serverless.azure import ElasticAPMExtension
from azure.data.tables import TableServiceClient
from azure.core.credentials import AzureSasCredential
ElasticAPMExtension.configure()
def main(req: func.HttpRequest) -> func.HttpResponse:
_table_service_client = TableServiceClient(endpoint=TABLE_ENDPOINT,credential=AzureSasCredential(TABLE_SAS_TOKEN))
_table_client = _table_service_client.get_table_client('test')
entity = _table_client.get_entity(
partition_key='KEY',
row_key='ROW'
)
- Run
func host start to start the local development environment
- Connect to the URL of the function and see the exception in the
func logs
Environment (please complete the following information)
- OS: Windows
- Python version: 3.10.11
- Framework and version [e.g. Django 2.1]: Azure Functions
- APM Server version: 7.17
- Agent version: 6.23.0
Additional context
Add any other context about the problem here.
-
requirements.txt:
Click to expand
elasticapm
azure-functions
azure-data-tables
Describe the bug:
When using Azure Table Client (package
azure-data-tables) inside an Azure Function instrumented withelasticapm.contrib.serverless.azure.ElasticAPMExtensionand querying a data table usingPartitionKeyandRowKey, the underlying HTTP request to the table service sends the request parameters in the query string and the request has no body. When Azure Tables instrumentation from Elastic APM reaches this line:apm-agent-python/elasticapm/instrumentation/packages/azure.py
Lines 302 to 307 in fc8ef22
It crashes because the body is
NoneTo Reproduce
func host startto start the local development environmentfunclogsEnvironment (please complete the following information)
Additional context
Add any other context about the problem here.
requirements.txt:Click to expand