I successfully did it via aws cli as work around.
aws cli supports accessLogSettings
: https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-stage.html
Wrote simple script to enable this feature.
$ cat custom_access_log.sh
#!/usr/bin/env bash
if [ "$#" -ne 3 ] || ! [ -f "$3" ]; then
echo "Usage: $0 [rest_api_id] [stage_name] [config_file_name]" >&2
exit 1
fi
rest_api_id=$1
stage_name=$2
cli_input_json=$3
aws apigateway update-stage \
--rest-api-id "${rest_api_id}" \
--stage-name "${stage_name}" \
--cli-input-json "file://${cli_input_json}"
$ cat config-dev.json
{
"patchOperations": [
{
"op": "replace",
"path": "/accessLogSettings/format",
"value": "{ \"requestId\": \"$context.requestId\", \"ip\": \"$context.identity.sourceIp\", \"caller\": \"$context.identity.caller\", \"requestTime\": \"$context.requestTimeEpoch\", \"httpMethod\": \"$context.httpMethod\", \"resourcePath\": \"$context.resourcePath\", \"status\": \"$context.status\", \"protocol\": \"$context.protocol\", \"responseLength\": \"$context.responseLength\" }"
},
{
"op": "replace",
"path": "/accessLogSettings/destinationArn",
"value": "arn:aws:logs:ap-southeast-2:123456789012:log-group:/aws/apigateway/serverless-CustomAccessLogs"
}
]
}
So I can run below command to enable custom access log on nominated APIG
aws apigateway update-stage --rest-api-id xxxdwgi337 --stage-name dev --cli-input-json file://config-dev.json
Reference: https://forums.aws.amazon.com/message.jspa?messageID=715755