Skip to content

aws: catch auth errors on XML responses#11891

Open
antoniomrfranco wants to merge 2 commits into
fluent:masterfrom
antoniomrfranco:fix-s3-auth-error-cred-refresh
Open

aws: catch auth errors on XML responses#11891
antoniomrfranco wants to merge 2 commits into
fluent:masterfrom
antoniomrfranco:fix-s3-auth-error-cred-refresh

Conversation

@antoniomrfranco

@antoniomrfranco antoniomrfranco commented Jun 1, 2026

Copy link
Copy Markdown

Problem

When AWS credentials are rotated (e.g. a new key pair written to ~/.aws/credentials), the S3 output plugin fails to detect the authentication error and trigger a credential refresh.

The root cause is in flb_aws_is_auth_error() (src/aws/flb_aws_util.c): S3 returns error responses in XML format, but several auth-related error codes — InvalidAccessKeyId, SignatureDoesNotMatch, InvalidToken, InvalidSecurity, TokenRefreshRequired, and InvalidSignature — were only checked via the JSON path (using flb_aws_error(), which parses the __type field). The XML path only covered InvalidClientTokenId, AccessDenied, and Expired.

As a result, flb_aws_client_request() never called provider->refresh() on S3 auth failures, so stale credentials were used indefinitely despite an updated credentials file on disk.

Fix

The missing error codes are added to the XML strcasestr check block in flb_aws_is_auth_error(). When flb_aws_client_request() receives a 4xx response, it calls flb_aws_is_auth_error() on the response body. If the function returns FLB_TRUE, the client calls provider->refresh(), which re-reads the credentials file from disk and picks up the rotated keys. The next upload attempt — triggered by the S3 timer callback — then uses the fresh credentials and succeeds. With this fix, that detection now works correctly for S3's XML responses, not just JSON-based APIs like Kinesis.


Enter [N/A] in the box, if an item is not applicable to your change.

Testing
Before we can approve your change; please submit the following in a comment:

  • [N/A] Example configuration file for the change
  • Debug log output from testing the change
  • Attached Valgrind output that shows no leaks or memory corruption was found

If this is a change to packaging of containers or native binaries then please confirm it works for all targets.

  • [N/A] Run local packaging test showing all targets (including any new ones) build.
  • [N/A] Set ok-package-test label to test for all targets (requires maintainer to do).

Documentation

  • [N/A] Documentation required for this feature

Backporting

  • Backport to latest stable release.

Fluent Bit is licensed under Apache 2.0, by submitting this pull request I understand that this code will be released under the terms of that license.

Summary by CodeRabbit

  • Bug Fixes
    • Broadened detection of AWS authentication errors to include additional XML and JSON error identifiers (e.g., InvalidSecurity, TokenRefreshRequired, InvalidSignature), improving recognition of token/signature/security issues and resulting error handling.
  • Tests
    • Added unit coverage verifying detection behavior across representative AWS XML/JSON error payloads (including empty responses).

@coderabbitai

coderabbitai Bot commented Jun 1, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

Consolidates XML auth-error checks into one strcasestr() match across more AWS XML identifiers and extends JSON error-code recognition to include InvalidSecurity, TokenRefreshRequired, and InvalidSignature in flb_aws_is_auth_error(), plus a unit test exercising these cases.

Changes

Expanded auth error detection

Layer / File(s) Summary
Expanded auth error detection in flb_aws_is_auth_error()
src/aws/flb_aws_util.c
XML error detection consolidated from multiple if checks into a single strcasestr() check over an expanded list of AWS XML error identifiers. JSON-path matching now treats InvalidSecurity, TokenRefreshRequired, and InvalidSignature as auth-related errors.
Unit test for auth error detection
tests/internal/aws_util.c
Adds test_flb_aws_is_auth_error exercising XML and JSON error payloads (auth-related and non-auth) and registers the test in TEST_LIST.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Suggested labels

backport to v4.0.x, backport to v4.1.x

Suggested reviewers

  • PettitWesley
  • edsiper

Poem

🐰 I hopped through code with ears alert,
Searched XML and JSON, left no dirt,
Tokens and signatures now in view,
Auth errors caught — a cleaner cue,
A tidy patch from this rabbit to you.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The pull request title accurately reflects the main change: adding support for catching auth errors in XML responses from AWS services like S3.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 Infer (1.2.0)
tests/internal/aws_util.c

tests/internal/aws_util.c:3:10: fatal error: 'fluent-bit/flb_sds.h' file not found
3 | #include <fluent-bit/flb_sds.h>
| ^~~~~~~~~~~~~~~~~~~~~~
1 error generated.
Error: the following clang command did not run successfully:
/opt/infer-linux-x86_64-v1.2.0/lib/infer/facebook-clang-plugins/clang/install/bin/clang-18
@/tmp/coderabbit-infer/8ccd82f03b449c78e6f791afcab44a0450cea413-c3e141a0b55a2488/tmp/clang_command_.tmp.bb5fdb.txt
++Contents of '/tmp/coderabbit-infer/8ccd82f03b449c78e6f791afcab44a0450cea413-c3e141a0b55a2488/tmp/clang_command_.tmp.bb5fdb.txt':
"-cc1" "-load"
"/opt/infer-linux-x86_64-v1.2.0/lib/infer/infer/bin/../../facebook-clang-plugins/libtooling/build/FacebookClangPlugin.dylib"
"-add-plugin" "BiniouASTExporter" "-plugin-arg-BiniouASTExporter" "-"
"-plugin-arg-BiniouASTExporter" "PREPEND_CURRENT_DIR=1"
"-plugin-arg-BiniouASTExporter" "MAX_STRING_SIZE=65535" "-cc1" "-triple"
"x86_64-unknown-linux-gnu" "-emit-obj" "-mrelax

... [truncated 725 characters] ...

fer-linux-x86_64-v1.2.0/lib/infer/facebook-clang-plugins/clang/install/lib/clang/18/include"
"-internal-isystem" "/usr/local/include" "-internal-isystem"
"/usr/lib/gcc/x86_64-linux-gnu/12/../../../../x86_64-linux-gnu/include"
"-internal-externc-isystem" "/usr/include/x86_64-linux-gnu"
"-internal-externc-isystem" "/include" "-internal-externc-isystem"
"/usr/include" "-Wno-ignored-optimization-argument" "-Wno-everything"
"-ferror-limit" "19" "-fgnuc-version=4.2.1" "-fskip-odr-check-in-gmf"
"-D__GCC_HAVE_DWARF2_CFI_ASM=1" "-o"
"/tmp/coderabbit-infer/c3e141a0b55a2488/file.o" "-x" "c"
"tests/internal/aws_util.c" "-O0" "-fno-builtin" "-include"
"/opt/infer-linux-x86_64-v1.2.0/lib/infer/infer/bin/../lib/clang_wrappers/global_defines.h"
"-Wno-everything"


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@antoniomrfranco

Copy link
Copy Markdown
Author

Debug log output from testing the change:

Fluent Bit v5.0.7
* Copyright (C) 2015-2026 The Fluent Bit Authors
* Fluent Bit is a CNCF graduated project under the Fluent organization
* https://fluentbit.io

______ _                  _    ______ _ _           _____  _____ 
|  ___| |                | |   | ___ (_) |         |  ___||  _  |
| |_  | |_   _  ___ _ __ | |_  | |_/ /_| |_  __   _|___ \ | |/' |
|  _| | | | | |/ _ \ '_ \| __| | ___ \ | __| \ \ / /   \ \|  /| |
| |   | | |_| |  __/ | | | |_  | |_/ / | |_   \ V //\__/ /\ |_/ /
\_|   |_|\__,_|\___|_| |_|\__| \____/|_|\__|   \_/ \____(_)\___/


[2026/06/02 20:22:28.396] [ info] Configuration:
[2026/06/02 20:22:28.407] [ info]  flush time     | 1.000000 seconds
[2026/06/02 20:22:28.411] [ info]  grace          | 5 seconds
[2026/06/02 20:22:28.411] [ info]  daemon         | 0
[2026/06/02 20:22:28.411] [ info] ___________
[2026/06/02 20:22:28.412] [ info]  inputs:
[2026/06/02 20:22:28.412] [ info]      cpu
[2026/06/02 20:22:28.412] [ info] ___________
[2026/06/02 20:22:28.413] [ info]  filters:
[2026/06/02 20:22:28.413] [ info] ___________
[2026/06/02 20:22:28.413] [ info]  outputs:
[2026/06/02 20:22:28.414] [ info]      stdout.0
[2026/06/02 20:22:28.414] [ info]      s3.1
[2026/06/02 20:22:28.414] [ info] ___________
[2026/06/02 20:22:28.414] [ info]  collectors:
[2026/06/02 20:22:28.480] [ info] [fluent bit] version=5.0.7, commit=a3a9820ef0, pid=1
[2026/06/02 20:22:28.486] [debug] [engine] coroutine stack size: 196608 bytes (192.0K)
[2026/06/02 20:22:28.489] [ info] [storage] ver=1.5.4, type=memory, sync=normal, checksum=off, max_chunks_up=128
[2026/06/02 20:22:28.489] [ info] [simd    ] NEON
[2026/06/02 20:22:28.489] [ info] [cmetrics] version=2.1.4
[2026/06/02 20:22:28.490] [ info] [ctraces ] version=0.7.1
[2026/06/02 20:22:28.498] [ info] [input:cpu:cpu.0] initializing
[2026/06/02 20:22:28.499] [ info] [input:cpu:cpu.0] storage_strategy='memory' (memory only)
[2026/06/02 20:22:28.499] [debug] [cpu:cpu.0] created event channels: read=21 write=22
[2026/06/02 20:22:28.513] [debug] [stdout:stdout.0] created event channels: read=23 write=24
[2026/06/02 20:22:28.544] [debug] [s3:s3.1] created event channels: read=30 write=31
[2026/06/02 20:22:28.588] [ info] [output:stdout:stdout.0] worker #0 started
[2026/06/02 20:22:28.769] [ info] [fstore] created root path /tmp/fluent-bit/s3/franco-fluent-bit-test
[2026/06/02 20:22:28.775] [ info] [output:s3:s3.1] Using upload size 100000000 bytes
[2026/06/02 20:22:28.785] [debug] [aws_credentials] Initialized Env Provider in standard chain
[2026/06/02 20:22:28.786] [debug] [aws_credentials] creating profile (null) provider
[2026/06/02 20:22:28.787] [debug] [aws_credentials] Initialized AWS Profile Provider in standard chain
[2026/06/02 20:22:28.788] [debug] [aws_credentials] Not initializing EKS provider because AWS_ROLE_ARN was not set
[2026/06/02 20:22:28.789] [debug] [aws_credentials] Not initializing ECS/EKS HTTP Provider because AWS_CONTAINER_CREDENTIALS_RELATIVE_URI and AWS_CONTAINER_CREDENTIALS_FULL_URI is not set
[2026/06/02 20:22:28.790] [debug] [aws_credentials] Initialized EC2 Provider in standard chain
[2026/06/02 20:22:28.792] [debug] [aws_credentials] Sync called on the EC2 provider
[2026/06/02 20:22:28.793] [debug] [aws_credentials] Init called on the env provider
[2026/06/02 20:22:28.793] [debug] [aws_credentials] Init called on the profile provider
[2026/06/02 20:22:28.793] [debug] [aws_credentials] Reading shared config file.
[2026/06/02 20:22:28.796] [debug] [aws_credentials] Reading shared credentials file.
[2026/06/02 20:22:28.798] [debug] [aws_credentials] upstream_set called on the EC2 provider
[2026/06/02 20:22:28.825] [debug] [router] match rule cpu.0:stdout.0
[2026/06/02 20:22:28.825] [debug] [router] match rule cpu.0:s3.1
[2026/06/02 20:22:28.826] [ info] [sp] stream processor started
[2026/06/02 20:22:28.827] [ info] [engine] Shutdown Grace Period=5, Shutdown Input Grace Period=2
[2026/06/02 20:22:28.831] [ info] [output:s3:s3.1] initializing worker
[2026/06/02 20:22:28.831] [ info] [output:s3:s3.1] worker #0 started
[2026/06/02 20:22:59.574] [debug] [task] created task=0x6b03090 id=0 OK
[2026/06/02 20:22:59.577] [debug] [output:stdout:stdout.0] task_id=0 assigned to thread #0
[2026/06/02 20:22:59.577] [debug] [output:s3:s3.1] task_id=0 assigned to thread #0
[0] my_cpu: [[1780431778.568708338, {}], {"cpu_p"=>0.346667, "user_p"=>0.230000, "system_p"=>0.116667, "cpu0.p_cpu"=>0.500000, "cpu0.p_user"=>0.366667, "cpu0.p_system"=>0.133333, "cpu1.p_cpu"=>0.200000, "cpu1.p_user"=>0.100000, "cpu1.p_system"=>0.100000, "cpu2.p_cpu"=>0.233333, "cpu2.p_user"=>0.100000, "cpu2.p_system"=>0.133333, "cpu3.p_cpu"=>0.300000, "cpu3.p_user"=>0.166667, "cpu3.p_system"=>0.133333, "cpu4.p_cpu"=>0.266667, "cpu4.p_user"=>0.133333, "cpu4.p_system"=>0.133333, "cpu5.p_cpu"=>0.200000, "cpu5.p_user"=>0.100000, "cpu5.p_system"=>0.100000, "cpu6.p_cpu"=>0.200000, "cpu6.p_user"=>0.100000, "cpu6.p_system"=>0.100000, "cpu7.p_cpu"=>0.133333, "cpu7.p_user"=>0.033333, "cpu7.p_system"=>0.100000, "cpu8.p_cpu"=>1.166667, "cpu8.p_user"=>1.033333, "cpu8.p_system"=>0.133333, "cpu9.p_cpu"=>0.233333, "cpu9.p_user"=>0.133333, "cpu9.p_system"=>0.100000}]
[2026/06/02 20:22:59.594] [debug] [out flush] cb_destroy coro_id=0
[2026/06/02 20:22:59.600] [debug] [output:s3:s3.1] Creating upload timer with frequency 6s
[2026/06/02 20:22:59.616] [debug] [out flush] cb_destroy coro_id=0
[2026/06/02 20:22:59.617] [debug] [task] destroy task=0x6b03090 (task_id=0)
[2026/06/02 20:23:05.558] [debug] [output:s3:s3.1] Running upload timer callback (upload_queue)..
[2026/06/02 20:23:05.560] [debug] [output:s3:s3.1] No files found in upload_queue. Scanning for timed out chunks
[2026/06/02 20:23:05.561] [ info] [output:s3:s3.1] Running upload timer callback (cb_s3_upload)..
[2026/06/02 20:23:11.558] [debug] [output:s3:s3.1] Running upload timer callback (upload_queue)..
[2026/06/02 20:23:11.558] [debug] [output:s3:s3.1] No files found in upload_queue. Scanning for timed out chunks
[2026/06/02 20:23:11.558] [ info] [output:s3:s3.1] Running upload timer callback (cb_s3_upload)..
[2026/06/02 20:23:12.659] [debug] [upstream] KA connection #58 to s3.us-west-2.amazonaws.com:443 is connected
[2026/06/02 20:23:12.660] [debug] [http_client] not using http_proxy for header
[2026/06/02 20:23:12.904] [debug] [http_client] server s3.us-west-2.amazonaws.com:443 will close connection #58
[2026/06/02 20:23:12.905] [debug] [aws_client] s3.us-west-2.amazonaws.com: http_do=0, HTTP Status: 403
[2026/06/02 20:23:12.915] [ info] [aws_client] auth error, refreshing creds
[2026/06/02 20:23:12.916] [debug] [aws_credentials] Refresh called on the env provider
[2026/06/02 20:23:12.917] [debug] [aws_credentials] Refresh called on the profile provider
[2026/06/02 20:23:12.917] [debug] [aws_credentials] Reading shared config file.
[2026/06/02 20:23:12.918] [debug] [aws_credentials] Reading shared credentials file.
[2026/06/02 20:23:12.920] [debug] [output:s3:s3.1] PutObject http status=403
[2026/06/02 20:23:12.922] [error] [output:s3:s3.1] PutObject API responded with error='InvalidAccessKeyId', message='The AWS Access Key Id you provided does not exist in our records.'
[2026/06/02 20:23:12.923] [error] [output:s3:s3.1] Raw PutObject response: HTTP/1.1 403 Forbidden
x-amz-request-id: NH03XR5TDW9A6X48
x-amz-id-2: voR7Z0ybFLvG+Y5BqWjBVbihVTsgV3xxStQIxChGQlejn9YW9Xf/o6ox3sR3vhX6XwOgMft55lc=
Content-Type: application/xml
Transfer-Encoding: chunked
Date: Tue, 02 Jun 2026 20:23:12 GMT
Connection: close
Server: AmazonS3

<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>InvalidAccessKeyId</Code><Message>The AWS Access Key Id you provided does not exist in our records.</Message><AWSAccessKeyId>AKIATWYR34MQMJVCDVLV</AWSAccessKeyId><RequestId>NH03XR5TDW9A6X48</RequestId><HostId>voR7Z0ybFLvG+Y5BqWjBVbihVTsgV3xxStQIxChGQlejn9YW9Xf/o6ox3sR3vhX6XwOgMft55lc=</HostId></Error>
[2026/06/02 20:23:12.924] [error] [output:s3:s3.1] PutObject request failed
[2026/06/02 20:23:12.925] [error] [output:s3:s3.1] Could not send chunk with tag my_cpu
[2026/06/02 20:23:17.557] [debug] [output:s3:s3.1] Running upload timer callback (upload_queue)..
[2026/06/02 20:23:17.557] [debug] [output:s3:s3.1] No files found in upload_queue. Scanning for timed out chunks
[2026/06/02 20:23:17.558] [ info] [output:s3:s3.1] Running upload timer callback (cb_s3_upload)..
[2026/06/02 20:23:18.060] [debug] [upstream] KA connection #58 to s3.us-west-2.amazonaws.com:443 is connected
[2026/06/02 20:23:18.061] [debug] [http_client] not using http_proxy for header
[2026/06/02 20:23:18.266] [debug] [http_client] server s3.us-west-2.amazonaws.com:443 will close connection #58
[2026/06/02 20:23:18.267] [debug] [aws_client] s3.us-west-2.amazonaws.com: http_do=0, HTTP Status: 403
[2026/06/02 20:23:18.268] [debug] [output:s3:s3.1] PutObject http status=403
[2026/06/02 20:23:18.268] [error] [output:s3:s3.1] PutObject API responded with error='InvalidAccessKeyId', message='The AWS Access Key Id you provided does not exist in our records.'
[2026/06/02 20:23:18.268] [error] [output:s3:s3.1] Raw PutObject response: HTTP/1.1 403 Forbidden
x-amz-request-id: WSN2MBM1Z299907A
x-amz-id-2: qMK3tRSlRlTCpD6p2DRgw1ihV9DE/iK5TcpCZutVMEtY+x5ez+4RlEgn9jEkGcvN73cIHrx3r/E=
Content-Type: application/xml
Transfer-Encoding: chunked
Date: Tue, 02 Jun 2026 20:23:17 GMT
Connection: close
Server: AmazonS3

<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>InvalidAccessKeyId</Code><Message>The AWS Access Key Id you provided does not exist in our records.</Message><AWSAccessKeyId>AKIATWYR34MQMJVCDVLV</AWSAccessKeyId><RequestId>WSN2MBM1Z299907A</RequestId><HostId>qMK3tRSlRlTCpD6p2DRgw1ihV9DE/iK5TcpCZutVMEtY+x5ez+4RlEgn9jEkGcvN73cIHrx3r/E=</HostId></Error>
[2026/06/02 20:23:18.268] [error] [output:s3:s3.1] PutObject request failed
[2026/06/02 20:23:18.268] [error] [output:s3:s3.1] Could not send chunk with tag my_cpu
[2026/06/02 20:23:23.554] [debug] [output:s3:s3.1] Running upload timer callback (upload_queue)..
[2026/06/02 20:23:23.555] [debug] [output:s3:s3.1] No files found in upload_queue. Scanning for timed out chunks
[2026/06/02 20:23:23.555] [ info] [output:s3:s3.1] Running upload timer callback (cb_s3_upload)..
[2026/06/02 20:23:24.010] [debug] [upstream] KA connection #58 to s3.us-west-2.amazonaws.com:443 is connected
[2026/06/02 20:23:24.010] [debug] [http_client] not using http_proxy for header
[2026/06/02 20:23:24.234] [debug] [http_client] server s3.us-west-2.amazonaws.com:443 will close connection #58
[2026/06/02 20:23:24.234] [debug] [aws_client] s3.us-west-2.amazonaws.com: http_do=0, HTTP Status: 403
[2026/06/02 20:23:24.236] [debug] [output:s3:s3.1] PutObject http status=403
[2026/06/02 20:23:24.236] [error] [output:s3:s3.1] PutObject API responded with error='InvalidAccessKeyId', message='The AWS Access Key Id you provided does not exist in our records.'
[2026/06/02 20:23:24.236] [error] [output:s3:s3.1] Raw PutObject response: HTTP/1.1 403 Forbidden
x-amz-request-id: GX55VBR6BSDBFCG6
x-amz-id-2: 76Xmjo0TXGB3LDKuJkN5lgHcHkwF8/aaH3W5MmXUDthMuLaSqDzMyu/onWqfr2M/drK/1G4ARbk=
Content-Type: application/xml
Transfer-Encoding: chunked
Date: Tue, 02 Jun 2026 20:23:23 GMT
Connection: close
Server: AmazonS3

<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>InvalidAccessKeyId</Code><Message>The AWS Access Key Id you provided does not exist in our records.</Message><AWSAccessKeyId>AKIATWYR34MQMJVCDVLV</AWSAccessKeyId><RequestId>GX55VBR6BSDBFCG6</RequestId><HostId>76Xmjo0TXGB3LDKuJkN5lgHcHkwF8/aaH3W5MmXUDthMuLaSqDzMyu/onWqfr2M/drK/1G4ARbk=</HostId></Error>
[2026/06/02 20:23:24.236] [error] [output:s3:s3.1] PutObject request failed
[2026/06/02 20:23:24.236] [error] [output:s3:s3.1] Could not send chunk with tag my_cpu
[0] my_cpu: [[1780431808.558815922, {}], {"cpu_p"=>0.526667, "user_p"=>0.400000, "system_p"=>0.126667, "cpu0.p_cpu"=>0.933333, "cpu0.p_user"=>0.766667, "cpu0.p_system"=>0.166667, "cpu1.p_cpu"=>0.233333, "cpu1.p_user"=>0.100000, "cpu1.p_system"=>0.133333, "cpu2.p_cpu"=>0.166667, "cpu2.p_user"=>0.100000, "cpu2.p_system"=>0.066667, "cpu3.p_cpu"=>0.200000, "cpu3.p_user"=>0.066667, "cpu3.p_system"=>0.133333, "cpu4.p_cpu"=>0.333333, "cpu4.p_user"=>0.200000, "cpu4.p_system"=>0.133333, "cpu5.p_cpu"=>0.266667, "cpu5.p_user"=>0.133333, "cpu5.p_system"=>0.133333, "cpu6.p_cpu"=>0.233333, "cpu6.p_user"=>0.100000, "cpu6.p_system"=>0.133333, "cpu7.p_cpu"=>0.200000, "cpu7.p_user"=>0.133333, "cpu7.p_system"=>0.066667, "cpu8.p_cpu"=>2.500000, "cpu8.p_user"=>2.300000, "cpu8.p_system"=>0.200000, "cpu9.p_cpu"=>0.333333, "cpu9.p_user"=>0.166667, "cpu9.p_system"=>0.166667}]
[2026/06/02 20:23:29.556] [debug] [output:s3:s3.1] Running upload timer callback (upload_queue)..
[2026/06/02 20:23:29.557] [debug] [output:s3:s3.1] No files found in upload_queue. Scanning for timed out chunks
[2026/06/02 20:23:29.557] [ info] [output:s3:s3.1] Running upload timer callback (cb_s3_upload)..
[2026/06/02 20:23:29.561] [debug] [task] created task=0x97cf610 id=0 OK
[2026/06/02 20:23:29.562] [debug] [output:stdout:stdout.0] task_id=0 assigned to thread #0
[2026/06/02 20:23:29.562] [debug] [output:s3:s3.1] task_id=0 assigned to thread #0
[2026/06/02 20:23:29.573] [debug] [out flush] cb_destroy coro_id=1
[2026/06/02 20:23:30.052] [debug] [upstream] KA connection #58 to s3.us-west-2.amazonaws.com:443 is connected
[2026/06/02 20:23:30.052] [debug] [http_client] not using http_proxy for header
[2026/06/02 20:23:30.289] [debug] [http_client] server s3.us-west-2.amazonaws.com:443 will close connection #58
[2026/06/02 20:23:30.289] [debug] [aws_client] s3.us-west-2.amazonaws.com: http_do=0, HTTP Status: 403
[2026/06/02 20:23:30.290] [debug] [output:s3:s3.1] PutObject http status=403
[2026/06/02 20:23:30.291] [error] [output:s3:s3.1] PutObject API responded with error='InvalidAccessKeyId', message='The AWS Access Key Id you provided does not exist in our records.'
[2026/06/02 20:23:30.291] [error] [output:s3:s3.1] Raw PutObject response: HTTP/1.1 403 Forbidden
x-amz-request-id: W28D17YFPVBJ4EC4
x-amz-id-2: 0dGcuBErQQu2qnmjlcmZYoFkCP9qg/uZCLSdydKrvzIHSingn0y2Veb/vfoX7e1qGyCQuMZpP0R+Uh1U+g4hOL3OSAkWYIcuBC2wJDLC4/A=
Content-Type: application/xml
Transfer-Encoding: chunked
Date: Tue, 02 Jun 2026 20:23:29 GMT
Connection: close
Server: AmazonS3

<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>InvalidAccessKeyId</Code><Message>The AWS Access Key Id you provided does not exist in our records.</Message><AWSAccessKeyId>AKIATWYR34MQMJVCDVLV</AWSAccessKeyId><RequestId>W28D17YFPVBJ4EC4</RequestId><HostId>0dGcuBErQQu2qnmjlcmZYoFkCP9qg/uZCLSdydKrvzIHSingn0y2Veb/vfoX7e1qGyCQuMZpP0R+Uh1U+g4hOL3OSAkWYIcuBC2wJDLC4/A=</HostId></Error>
[2026/06/02 20:23:30.291] [error] [output:s3:s3.1] PutObject request failed
[2026/06/02 20:23:30.291] [error] [output:s3:s3.1] Could not send chunk with tag my_cpu
[2026/06/02 20:23:30.294] [ info] [output:s3:s3.1] upload_timeout reached for my_cpu
[2026/06/02 20:23:30.295] [debug] [output:s3:s3.1] Running upload timer callback (upload_queue)..
[2026/06/02 20:23:30.745] [debug] [upstream] KA connection #58 to s3.us-west-2.amazonaws.com:443 is connected
[2026/06/02 20:23:30.745] [debug] [http_client] not using http_proxy for header
[2026/06/02 20:23:30.958] [debug] [http_client] server s3.us-west-2.amazonaws.com:443 will close connection #58
[2026/06/02 20:23:30.958] [debug] [aws_client] s3.us-west-2.amazonaws.com: http_do=0, HTTP Status: 403
[2026/06/02 20:23:30.960] [debug] [output:s3:s3.1] PutObject http status=403
[2026/06/02 20:23:30.960] [error] [output:s3:s3.1] PutObject API responded with error='InvalidAccessKeyId', message='The AWS Access Key Id you provided does not exist in our records.'
[2026/06/02 20:23:30.960] [error] [output:s3:s3.1] Raw PutObject response: HTTP/1.1 403 Forbidden
x-amz-request-id: W28BJ784MFZ8M6VQ
x-amz-id-2: pmbgvT78dXeM8H3PXoFVwjFY7KFC6PLyPQrO4BYYSWyfa3DjTUaJi6xLfnzig239o9EfD1gN3ji32DZTBxu9o2l/BwAW/YG8M8xG0JvDvJg=
Content-Type: application/xml
Transfer-Encoding: chunked
Date: Tue, 02 Jun 2026 20:23:30 GMT
Connection: close
Server: AmazonS3

<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>InvalidAccessKeyId</Code><Message>The AWS Access Key Id you provided does not exist in our records.</Message><AWSAccessKeyId>AKIATWYR34MQMJVCDVLV</AWSAccessKeyId><RequestId>W28BJ784MFZ8M6VQ</RequestId><HostId>pmbgvT78dXeM8H3PXoFVwjFY7KFC6PLyPQrO4BYYSWyfa3DjTUaJi6xLfnzig239o9EfD1gN3ji32DZTBxu9o2l/BwAW/YG8M8xG0JvDvJg=</HostId></Error>
[2026/06/02 20:23:30.961] [error] [output:s3:s3.1] PutObject request failed
[2026/06/02 20:23:30.963] [debug] [output:s3:s3.1] Failed to upload file in upload_queue. Will not retry for 2 seconds
[2026/06/02 20:23:30.965] [debug] [out flush] cb_destroy coro_id=1
[2026/06/02 20:23:30.971] [debug] [task] destroy task=0x97cf610 (task_id=0)
[2026/06/02 20:23:35.561] [debug] [output:s3:s3.1] Running upload timer callback (upload_queue)..
[2026/06/02 20:23:36.051] [debug] [upstream] KA connection #58 to s3.us-west-2.amazonaws.com:443 is connected
[2026/06/02 20:23:36.051] [debug] [http_client] not using http_proxy for header
[2026/06/02 20:23:36.288] [debug] [http_client] server s3.us-west-2.amazonaws.com:443 will close connection #58
[2026/06/02 20:23:36.288] [debug] [aws_client] s3.us-west-2.amazonaws.com: http_do=0, HTTP Status: 403
[2026/06/02 20:23:36.289] [debug] [output:s3:s3.1] PutObject http status=403
[2026/06/02 20:23:36.289] [error] [output:s3:s3.1] PutObject API responded with error='InvalidAccessKeyId', message='The AWS Access Key Id you provided does not exist in our records.'
[2026/06/02 20:23:36.290] [error] [output:s3:s3.1] Raw PutObject response: HTTP/1.1 403 Forbidden
x-amz-request-id: GH5FFRVNT2ZJ9C3D
x-amz-id-2: WrE+xTPV04sUsCPgHjz/fS6RVwJ5naIrE2xtOoyMbh7VFM0doSszN+3CCgz4jUvr1mpRRJjAzRMVAiBqI1arVyGHdj4ou/D1hUUvCY1cIhE=
Content-Type: application/xml
Transfer-Encoding: chunked
Date: Tue, 02 Jun 2026 20:23:35 GMT
Connection: close
Server: AmazonS3

<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>InvalidAccessKeyId</Code><Message>The AWS Access Key Id you provided does not exist in our records.</Message><AWSAccessKeyId>AKIATWYR34MQMJVCDVLV</AWSAccessKeyId><RequestId>GH5FFRVNT2ZJ9C3D</RequestId><HostId>WrE+xTPV04sUsCPgHjz/fS6RVwJ5naIrE2xtOoyMbh7VFM0doSszN+3CCgz4jUvr1mpRRJjAzRMVAiBqI1arVyGHdj4ou/D1hUUvCY1cIhE=</HostId></Error>
[2026/06/02 20:23:36.290] [error] [output:s3:s3.1] PutObject request failed
[2026/06/02 20:23:36.290] [debug] [output:s3:s3.1] Failed to upload file in upload_queue. Will not retry for 4 seconds
[2026/06/02 20:23:41.557] [debug] [output:s3:s3.1] Running upload timer callback (upload_queue)..
[2026/06/02 20:23:42.009] [debug] [upstream] KA connection #58 to s3.us-west-2.amazonaws.com:443 is connected
[2026/06/02 20:23:42.010] [debug] [http_client] not using http_proxy for header
[2026/06/02 20:23:42.225] [debug] [http_client] server s3.us-west-2.amazonaws.com:443 will close connection #58
[2026/06/02 20:23:42.225] [debug] [aws_client] s3.us-west-2.amazonaws.com: http_do=0, HTTP Status: 403
[2026/06/02 20:23:42.226] [debug] [output:s3:s3.1] PutObject http status=403
[2026/06/02 20:23:42.227] [error] [output:s3:s3.1] PutObject API responded with error='InvalidAccessKeyId', message='The AWS Access Key Id you provided does not exist in our records.'
[2026/06/02 20:23:42.227] [error] [output:s3:s3.1] Raw PutObject response: HTTP/1.1 403 Forbidden
x-amz-request-id: N3WR9EVZA3AWEFJV
x-amz-id-2: qhG/nDDkFVMQ48yBQotVRh004BO8YEiejW1UllfSJ9+XJukbY9cFQTrEAmIol9xw5cj+erjBHF3gq3KOZFsfowzAVsnCF9TTk4ZUUaI8j/A=
Content-Type: application/xml
Transfer-Encoding: chunked
Date: Tue, 02 Jun 2026 20:23:41 GMT
Connection: close
Server: AmazonS3

<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>InvalidAccessKeyId</Code><Message>The AWS Access Key Id you provided does not exist in our records.</Message><AWSAccessKeyId>AKIATWYR34MQMJVCDVLV</AWSAccessKeyId><RequestId>N3WR9EVZA3AWEFJV</RequestId><HostId>qhG/nDDkFVMQ48yBQotVRh004BO8YEiejW1UllfSJ9+XJukbY9cFQTrEAmIol9xw5cj+erjBHF3gq3KOZFsfowzAVsnCF9TTk4ZUUaI8j/A=</HostId></Error>
[2026/06/02 20:23:42.227] [error] [output:s3:s3.1] PutObject request failed
[2026/06/02 20:23:42.227] [debug] [output:s3:s3.1] Failed to upload file in upload_queue. Will not retry for 6 seconds
[2026/06/02 20:23:47.558] [debug] [output:s3:s3.1] Running upload timer callback (upload_queue)..
[2026/06/02 20:23:48.042] [debug] [upstream] KA connection #58 to s3.us-west-2.amazonaws.com:443 is connected
[2026/06/02 20:23:48.042] [debug] [http_client] not using http_proxy for header
[2026/06/02 20:23:48.258] [debug] [http_client] server s3.us-west-2.amazonaws.com:443 will close connection #58
[2026/06/02 20:23:48.258] [debug] [aws_client] s3.us-west-2.amazonaws.com: http_do=0, HTTP Status: 403
[2026/06/02 20:23:48.259] [debug] [output:s3:s3.1] PutObject http status=403
[2026/06/02 20:23:48.259] [error] [output:s3:s3.1] PutObject API responded with error='InvalidAccessKeyId', message='The AWS Access Key Id you provided does not exist in our records.'
[2026/06/02 20:23:48.259] [error] [output:s3:s3.1] Raw PutObject response: HTTP/1.1 403 Forbidden
x-amz-request-id: 4CEKBKHEGC0MMV5Q
x-amz-id-2: nYRLruP0MtxSntJShkMnB6eOnw/0COzaTYlvEu/HUuNCOaLlA/UR3WP/7b6RiWr5Yu5/KZ+8ITY=
Content-Type: application/xml
Transfer-Encoding: chunked
Date: Tue, 02 Jun 2026 20:23:48 GMT
Connection: close
Server: AmazonS3

<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>InvalidAccessKeyId</Code><Message>The AWS Access Key Id you provided does not exist in our records.</Message><AWSAccessKeyId>AKIATWYR34MQMJVCDVLV</AWSAccessKeyId><RequestId>4CEKBKHEGC0MMV5Q</RequestId><HostId>nYRLruP0MtxSntJShkMnB6eOnw/0COzaTYlvEu/HUuNCOaLlA/UR3WP/7b6RiWr5Yu5/KZ+8ITY=</HostId></Error>
[2026/06/02 20:23:48.260] [error] [output:s3:s3.1] PutObject request failed
[2026/06/02 20:23:48.260] [debug] [output:s3:s3.1] Failed to upload file in upload_queue. Will not retry for 8 seconds
[2026/06/02 20:23:53.555] [debug] [output:s3:s3.1] Running upload timer callback (upload_queue)..
[2026/06/02 20:23:53.556] [debug] [output:s3:s3.1] Found valid chunk file but not ready to upload
[2026/06/02 20:23:59.558] [debug] [output:s3:s3.1] Running upload timer callback (upload_queue)..
[2026/06/02 20:23:59.559] [debug] [task] created task=0x9c19b60 id=0 OK
[0] my_cpu: [[1780431838.559462088, {}], {"cpu_p"=>0.390000, "user_p"=>0.243333, "system_p"=>0.146667, "cpu0.p_cpu"=>1.200000, "cpu0.p_user"=>0.966667, "cpu0.p_system"=>0.233333, "cpu1.p_cpu"=>0.300000, "cpu1.p_user"=>0.133333, "cpu1.p_system"=>0.166667, "cpu2.p_cpu"=>0.333333, "cpu2.p_user"=>0.166667, "cpu2.p_system"=>0.166667, "cpu3.p_cpu"=>0.200000, "cpu3.p_user"=>0.066667, "cpu3.p_system"=>0.133333, "cpu4.p_cpu"=>0.333333, "cpu4.p_user"=>0.233333, "cpu4.p_system"=>0.100000, "cpu5.p_cpu"=>0.200000, "cpu5.p_user"=>0.100000, "cpu5.p_system"=>0.100000, "cpu6.p_cpu"=>0.400000, "cpu6.p_user"=>0.266667, "cpu6.p_system"=>0.133333, "cpu7.p_cpu"=>0.366667, "cpu7.p_user"=>0.166667, "cpu7.p_system"=>0.200000, "cpu8.p_cpu"=>0.266667, "cpu8.p_user"=>0.166667, "cpu8.p_system"=>0.100000, "cpu9.p_cpu"=>0.133333, "cpu9.p_user"=>0.066667, "cpu9.p_system"=>0.066667}]
[2026/06/02 20:23:59.559] [debug] [output:stdout:stdout.0] task_id=0 assigned to thread #0
[2026/06/02 20:23:59.560] [debug] [output:s3:s3.1] task_id=0 assigned to thread #0
[2026/06/02 20:23:59.571] [debug] [out flush] cb_destroy coro_id=2
[2026/06/02 20:24:00.112] [debug] [upstream] KA connection #58 to s3.us-west-2.amazonaws.com:443 is connected
[2026/06/02 20:24:00.112] [debug] [http_client] not using http_proxy for header
[2026/06/02 20:24:00.337] [debug] [http_client] server s3.us-west-2.amazonaws.com:443 will close connection #58
[2026/06/02 20:24:00.337] [debug] [aws_client] s3.us-west-2.amazonaws.com: http_do=0, HTTP Status: 403
[2026/06/02 20:24:00.338] [debug] [output:s3:s3.1] PutObject http status=403
[2026/06/02 20:24:00.338] [error] [output:s3:s3.1] PutObject API responded with error='InvalidAccessKeyId', message='The AWS Access Key Id you provided does not exist in our records.'
[2026/06/02 20:24:00.338] [error] [output:s3:s3.1] Raw PutObject response: HTTP/1.1 403 Forbidden
x-amz-request-id: E8FHS2YCJZSCKCGH
x-amz-id-2: WlXNGlkmq2f9BuqtUhG3YE+rvFuahnW1atKQzqkV3W3UJ8Ekdpy9fFhbSAzp+bGLh3WRVoul8tE=
Content-Type: application/xml
Transfer-Encoding: chunked
Date: Tue, 02 Jun 2026 20:23:59 GMT
Connection: close
Server: AmazonS3

<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>InvalidAccessKeyId</Code><Message>The AWS Access Key Id you provided does not exist in our records.</Message><AWSAccessKeyId>AKIATWYR34MQMJVCDVLV</AWSAccessKeyId><RequestId>E8FHS2YCJZSCKCGH</RequestId><HostId>WlXNGlkmq2f9BuqtUhG3YE+rvFuahnW1atKQzqkV3W3UJ8Ekdpy9fFhbSAzp+bGLh3WRVoul8tE=</HostId></Error>
[2026/06/02 20:24:00.338] [error] [output:s3:s3.1] PutObject request failed
[2026/06/02 20:24:00.338] [debug] [output:s3:s3.1] Failed to upload file in upload_queue. Will not retry for 10 seconds
[2026/06/02 20:24:00.342] [debug] [out flush] cb_destroy coro_id=2
[2026/06/02 20:24:00.344] [debug] [task] destroy task=0x9c19b60 (task_id=0)
[2026/06/02 20:24:05.557] [debug] [output:s3:s3.1] Running upload timer callback (upload_queue)..
[2026/06/02 20:24:05.557] [debug] [output:s3:s3.1] Found valid chunk file but not ready to upload
[2026/06/02 20:24:11.565] [debug] [output:s3:s3.1] Running upload timer callback (upload_queue)..
[2026/06/02 20:24:12.132] [debug] [upstream] KA connection #59 to s3.us-west-2.amazonaws.com:443 is connected
[2026/06/02 20:24:12.132] [debug] [http_client] not using http_proxy for header
[2026/06/02 20:24:12.350] [debug] [http_client] server s3.us-west-2.amazonaws.com:443 will close connection #59
[2026/06/02 20:24:12.351] [debug] [aws_client] s3.us-west-2.amazonaws.com: http_do=0, HTTP Status: 403
[2026/06/02 20:24:12.352] [debug] [output:s3:s3.1] PutObject http status=403
[2026/06/02 20:24:12.352] [error] [output:s3:s3.1] PutObject API responded with error='InvalidAccessKeyId', message='The AWS Access Key Id you provided does not exist in our records.'
[2026/06/02 20:24:12.353] [error] [output:s3:s3.1] Raw PutObject response: HTTP/1.1 403 Forbidden
x-amz-request-id: WWZG4S3VXTTSDAYW
x-amz-id-2: hZFX6oa2CBwLQG94S6pBSoHFgcdgEc8Za47MKFkfONWsOuqsPUekHzkuRBeFL6920NgCoFA6Uqg=
Content-Type: application/xml
Transfer-Encoding: chunked
Date: Tue, 02 Jun 2026 20:24:11 GMT
Connection: close
Server: AmazonS3

<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>InvalidAccessKeyId</Code><Message>The AWS Access Key Id you provided does not exist in our records.</Message><AWSAccessKeyId>AKIATWYR34MQMJVCDVLV</AWSAccessKeyId><RequestId>WWZG4S3VXTTSDAYW</RequestId><HostId>hZFX6oa2CBwLQG94S6pBSoHFgcdgEc8Za47MKFkfONWsOuqsPUekHzkuRBeFL6920NgCoFA6Uqg=</HostId></Error>
[2026/06/02 20:24:12.353] [error] [output:s3:s3.1] PutObject request failed
[2026/06/02 20:24:12.353] [ warn] [output:s3:s3.1] Chunk file failed to send 6 times, will not retry
[2026/06/02 20:24:17.560] [debug] [output:s3:s3.1] Running upload timer callback (upload_queue)..
[2026/06/02 20:24:17.560] [debug] [output:s3:s3.1] No files found in upload_queue. Scanning for timed out chunks
[2026/06/02 20:24:17.560] [ info] [output:s3:s3.1] Running upload timer callback (cb_s3_upload)..
[2026/06/02 20:24:23.557] [debug] [output:s3:s3.1] Running upload timer callback (upload_queue)..
[2026/06/02 20:24:23.558] [debug] [output:s3:s3.1] No files found in upload_queue. Scanning for timed out chunks
[2026/06/02 20:24:23.558] [ info] [output:s3:s3.1] Running upload timer callback (cb_s3_upload)..
[2026/06/02 20:24:29.558] [debug] [task] created task=0x9ee0010 id=0 OK
[2026/06/02 20:24:29.558] [debug] [output:stdout:stdout.0] task_id=0 assigned to thread #0
[2026/06/02 20:24:29.558] [debug] [output:s3:s3.1] task_id=0 assigned to thread #0
[2026/06/02 20:24:29.559] [debug] [output:s3:s3.1] Running upload timer callback (upload_queue)..
[2026/06/02 20:24:29.559] [debug] [output:s3:s3.1] No files found in upload_queue. Scanning for timed out chunks
[0] my_cpu: [[1780431868.559460130, {}], {"cpu_p"=>0.276667, "user_p"=>0.150000, "system_p"=>0.126667, "cpu0.p_cpu"=>0.633333, "cpu0.p_user"=>0.433333, "cpu0.p_system"=>0.200000, "cpu1.p_cpu"=>0.200000, "cpu1.p_user"=>0.100000, "cpu1.p_system"=>0.100000, "cpu2.p_cpu"=>0.200000, "cpu2.p_user"=>0.100000, "cpu2.p_system"=>0.100000, "cpu3.p_cpu"=>0.233333, "cpu3.p_user"=>0.133333, "cpu3.p_system"=>0.100000, "cpu4.p_cpu"=>0.233333, "cpu4.p_user"=>0.100000, "cpu4.p_system"=>0.133333, "cpu5.p_cpu"=>0.200000, "cpu5.p_user"=>0.100000, "cpu5.p_system"=>0.100000, "cpu6.p_cpu"=>0.433333, "cpu6.p_user"=>0.233333, "cpu6.p_system"=>0.200000, "cpu7.p_cpu"=>0.200000, "cpu7.p_user"=>0.100000, "cpu7.p_system"=>0.100000, "cpu8.p_cpu"=>0.266667, "cpu8.p_user"=>0.133333, "cpu8.p_system"=>0.133333, "cpu9.p_cpu"=>0.233333, "cpu9.p_user"=>0.100000, "cpu9.p_system"=>0.133333}]
[2026/06/02 20:24:29.559] [ info] [output:s3:s3.1] Running upload timer callback (cb_s3_upload)..
[2026/06/02 20:24:29.561] [ info] [output:s3:s3.1] upload_timeout reached for my_cpu
[2026/06/02 20:24:29.561] [debug] [output:s3:s3.1] Running upload timer callback (upload_queue)..
[2026/06/02 20:24:29.566] [debug] [out flush] cb_destroy coro_id=3
[2026/06/02 20:24:32.929] [debug] [upstream] KA connection #57 to s3.us-west-2.amazonaws.com:443 is connected
[2026/06/02 20:24:32.929] [debug] [http_client] not using http_proxy for header
[2026/06/02 20:24:33.174] [debug] [http_client] server s3.us-west-2.amazonaws.com:443 will close connection #57
[2026/06/02 20:24:33.175] [debug] [aws_client] s3.us-west-2.amazonaws.com: http_do=0, HTTP Status: 403
[2026/06/02 20:24:33.176] [ info] [aws_client] auth error, refreshing creds
[2026/06/02 20:24:33.176] [debug] [aws_credentials] Refresh called on the env provider
[2026/06/02 20:24:33.176] [debug] [aws_credentials] Refresh called on the profile provider
[2026/06/02 20:24:33.176] [debug] [aws_credentials] Reading shared config file.
[2026/06/02 20:24:33.177] [debug] [aws_credentials] Reading shared credentials file.
[2026/06/02 20:24:33.178] [debug] [output:s3:s3.1] PutObject http status=403
[2026/06/02 20:24:33.178] [error] [output:s3:s3.1] PutObject API responded with error='InvalidAccessKeyId', message='The AWS Access Key Id you provided does not exist in our records.'
[2026/06/02 20:24:33.178] [error] [output:s3:s3.1] Raw PutObject response: HTTP/1.1 403 Forbidden
x-amz-request-id: XZ4Y38XBV54B7GKT
x-amz-id-2: PEH4YGxFyd7aiREqx47Xj1SEztmklUp/9rzwrLz4A1LIWp8jQRhybogym3KhlfpCC4JD4FaRYxU=
Content-Type: application/xml
Transfer-Encoding: chunked
Date: Tue, 02 Jun 2026 20:24:33 GMT
Connection: close
Server: AmazonS3

<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>InvalidAccessKeyId</Code><Message>The AWS Access Key Id you provided does not exist in our records.</Message><AWSAccessKeyId>AKIATWYR34MQMJVCDVLV</AWSAccessKeyId><RequestId>XZ4Y38XBV54B7GKT</RequestId><HostId>PEH4YGxFyd7aiREqx47Xj1SEztmklUp/9rzwrLz4A1LIWp8jQRhybogym3KhlfpCC4JD4FaRYxU=</HostId></Error>
[2026/06/02 20:24:33.179] [error] [output:s3:s3.1] PutObject request failed
[2026/06/02 20:24:33.179] [debug] [output:s3:s3.1] Failed to upload file in upload_queue. Will not retry for 2 seconds
[2026/06/02 20:24:33.179] [debug] [out flush] cb_destroy coro_id=3
[2026/06/02 20:24:33.181] [debug] [task] destroy task=0x9ee0010 (task_id=0)
[2026/06/02 20:24:35.557] [debug] [output:s3:s3.1] Running upload timer callback (upload_queue)..
[2026/06/02 20:24:36.027] [debug] [upstream] KA connection #57 to s3.us-west-2.amazonaws.com:443 is connected
[2026/06/02 20:24:36.027] [debug] [http_client] not using http_proxy for header
[2026/06/02 20:24:36.292] [debug] [upstream] KA connection #57 to s3.us-west-2.amazonaws.com:443 is now available
[2026/06/02 20:24:36.292] [debug] [output:s3:s3.1] PutObject http status=200
[2026/06/02 20:24:36.293] [ info] [output:s3:s3.1] Successfully uploaded object /fluent-bit-logs/my_cpu/2026/06/02/20/23/58-objecthgwqucaf
[2026/06/02 20:24:41.557] [debug] [output:s3:s3.1] Running upload timer callback (upload_queue)..
[2026/06/02 20:24:41.558] [debug] [output:s3:s3.1] No files found in upload_queue. Scanning for timed out chunks
[2026/06/02 20:24:41.558] [ info] [output:s3:s3.1] Running upload timer callback (cb_s3_upload)..
[2026/06/02 20:24:42.285] [debug] [upstream] KA connection #57 to s3.us-west-2.amazonaws.com:443 has been disconnected by the remote service
[2026/06/02 20:24:47.556] [debug] [output:s3:s3.1] Running upload timer callback (upload_queue)..
[2026/06/02 20:24:47.557] [debug] [output:s3:s3.1] No files found in upload_queue. Scanning for timed out chunks
[2026/06/02 20:24:47.557] [ info] [output:s3:s3.1] Running upload timer callback (cb_s3_upload)..
[2026/06/02 20:24:53.555] [debug] [output:s3:s3.1] Running upload timer callback (upload_queue)..
[2026/06/02 20:24:53.555] [debug] [output:s3:s3.1] No files found in upload_queue. Scanning for timed out chunks
[2026/06/02 20:24:53.556] [ info] [output:s3:s3.1] Running upload timer callback (cb_s3_upload)..
[0] my_cpu: [[1780431898.560300672, {}], {"cpu_p"=>0.306667, "user_p"=>0.166667, "system_p"=>0.140000, "cpu0.p_cpu"=>0.700000, "cpu0.p_user"=>0.566667, "cpu0.p_system"=>0.133333, "cpu1.p_cpu"=>0.200000, "cpu1.p_user"=>0.066667, "cpu1.p_system"=>0.133333, "cpu2.p_cpu"=>0.233333, "cpu2.p_user"=>0.133333, "cpu2.p_system"=>0.100000, "cpu3.p_cpu"=>0.266667, "cpu3.p_user"=>0.133333, "cpu3.p_system"=>0.133333, "cpu4.p_cpu"=>0.266667, "cpu4.p_user"=>0.100000, "cpu4.p_system"=>0.166667, "cpu5.p_cpu"=>0.300000, "cpu5.p_user"=>0.133333, "cpu5.p_system"=>0.166667, "cpu6.p_cpu"=>0.233333, "cpu6.p_user"=>0.100000, "cpu6.p_system"=>0.133333, "cpu7.p_cpu"=>0.200000, "cpu7.p_user"=>0.100000, "cpu7.p_system"=>0.100000, "cpu8.p_cpu"=>0.433333, "cpu8.p_user"=>0.233333, "cpu8.p_system"=>0.200000, "cpu9.p_cpu"=>0.266667, "cpu9.p_user"=>0.133333, "cpu9.p_system"=>0.133333}]
[2026/06/02 20:24:59.557] [debug] [task] created task=0xa19fba0 id=0 OK
[2026/06/02 20:24:59.557] [debug] [output:stdout:stdout.0] task_id=0 assigned to thread #0
[2026/06/02 20:24:59.557] [debug] [output:s3:s3.1] task_id=0 assigned to thread #0
[2026/06/02 20:24:59.560] [debug] [output:s3:s3.1] Running upload timer callback (upload_queue)..
[2026/06/02 20:24:59.560] [debug] [output:s3:s3.1] No files found in upload_queue. Scanning for timed out chunks
[2026/06/02 20:24:59.561] [ info] [output:s3:s3.1] Running upload timer callback (cb_s3_upload)..
[2026/06/02 20:24:59.565] [debug] [out flush] cb_destroy coro_id=4
[2026/06/02 20:24:59.566] [debug] [out flush] cb_destroy coro_id=4
[2026/06/02 20:24:59.567] [debug] [task] destroy task=0xa19fba0 (task_id=0)
[2026/06/02 20:25:05.557] [debug] [output:s3:s3.1] Running upload timer callback (upload_queue)..
[2026/06/02 20:25:05.557] [debug] [output:s3:s3.1] No files found in upload_queue. Scanning for timed out chunks
[2026/06/02 20:25:05.557] [ info] [output:s3:s3.1] Running upload timer callback (cb_s3_upload)..
[2026/06/02 20:25:11.560] [debug] [output:s3:s3.1] Running upload timer callback (upload_queue)..
[2026/06/02 20:25:11.562] [debug] [output:s3:s3.1] No files found in upload_queue. Scanning for timed out chunks
[2026/06/02 20:25:11.562] [ info] [output:s3:s3.1] Running upload timer callback (cb_s3_upload)..
[2026/06/02 20:25:12.073] [debug] [upstream] KA connection #58 to s3.us-west-2.amazonaws.com:443 is connected
[2026/06/02 20:25:12.073] [debug] [http_client] not using http_proxy for header
[2026/06/02 20:25:12.326] [debug] [upstream] KA connection #58 to s3.us-west-2.amazonaws.com:443 is now available
[2026/06/02 20:25:12.326] [debug] [output:s3:s3.1] PutObject http status=200
[2026/06/02 20:25:12.326] [ info] [output:s3:s3.1] Successfully uploaded object /fluent-bit-logs/my_cpu/2026/06/02/20/24/58-objectSRBM5K14
[2026/06/02 20:25:17.560] [debug] [output:s3:s3.1] Running upload timer callback (upload_queue)..
[2026/06/02 20:25:17.560] [debug] [output:s3:s3.1] No files found in upload_queue. Scanning for timed out chunks
[2026/06/02 20:25:17.561] [ info] [output:s3:s3.1] Running upload timer callback (cb_s3_upload)..
[2026/06/02 20:25:18.327] [debug] [upstream] KA connection #58 to s3.us-west-2.amazonaws.com:443 has been disconnected by the remote service
[2026/06/02 20:25:23.554] [debug] [output:s3:s3.1] Running upload timer callback (upload_queue)..
[2026/06/02 20:25:23.555] [debug] [output:s3:s3.1] No files found in upload_queue. Scanning for timed out chunks
[2026/06/02 20:25:23.555] [ info] [output:s3:s3.1] Running upload timer callback (cb_s3_upload)..
[2026/06/02 20:25:29.557] [debug] [task] created task=0xa3e1890 id=0 OK
[2026/06/02 20:25:29.558] [debug] [output:stdout:stdout.0] task_id=0 assigned to thread #0
[2026/06/02 20:25:29.558] [debug] [output:s3:s3.1] task_id=0 assigned to thread #0
[0] my_cpu: [[1780431928.557062172, {}], {"cpu_p"=>0.276667, "user_p"=>0.146667, "system_p"=>0.130000, "cpu0.p_cpu"=>0.500000, "cpu0.p_user"=>0.333333, "cpu0.p_system"=>0.166667, "cpu1.p_cpu"=>0.300000, "cpu1.p_user"=>0.166667, "cpu1.p_system"=>0.133333, "cpu2.p_cpu"=>0.333333, "cpu2.p_user"=>0.200000, "cpu2.p_system"=>0.133333, "cpu3.p_cpu"=>0.233333, "cpu3.p_user"=>0.100000, "cpu3.p_system"=>0.133333, "cpu4.p_cpu"=>0.200000, "cpu4.p_user"=>0.066667, "cpu4.p_system"=>0.133333, "cpu5.p_cpu"=>0.233333, "cpu5.p_user"=>0.100000, "cpu5.p_system"=>0.133333, "cpu6.p_cpu"=>0.266667, "cpu6.p_user"=>0.133333, "cpu6.p_system"=>0.133333, "cpu7.p_cpu"=>0.266667, "cpu7.p_user"=>0.133333, "cpu7.p_system"=>0.133333, "cpu8.p_cpu"=>0.200000, "cpu8.p_user"=>0.100000, "cpu8.p_system"=>0.100000, "cpu9.p_cpu"=>0.166667, "cpu9.p_user"=>0.066667, "cpu9.p_system"=>0.100000}]
[2026/06/02 20:25:29.559] [debug] [output:s3:s3.1] Running upload timer callback (upload_queue)..
[2026/06/02 20:25:29.559] [debug] [output:s3:s3.1] No files found in upload_queue. Scanning for timed out chunks
[2026/06/02 20:25:29.559] [ info] [output:s3:s3.1] Running upload timer callback (cb_s3_upload)..
[2026/06/02 20:25:29.564] [debug] [out flush] cb_destroy coro_id=5
[2026/06/02 20:25:29.565] [debug] [out flush] cb_destroy coro_id=5
[2026/06/02 20:25:29.565] [debug] [task] destroy task=0xa3e1890 (task_id=0)
[2026/06/02 20:25:35.557] [debug] [output:s3:s3.1] Running upload timer callback (upload_queue)..
[2026/06/02 20:25:35.557] [debug] [output:s3:s3.1] No files found in upload_queue. Scanning for timed out chunks
[2026/06/02 20:25:35.557] [ info] [output:s3:s3.1] Running upload timer callback (cb_s3_upload)..
[2026/06/02 20:25:41.558] [debug] [output:s3:s3.1] Running upload timer callback (upload_queue)..
[2026/06/02 20:25:41.558] [debug] [output:s3:s3.1] No files found in upload_queue. Scanning for timed out chunks
[2026/06/02 20:25:41.558] [ info] [output:s3:s3.1] Running upload timer callback (cb_s3_upload)..
[2026/06/02 20:25:42.028] [debug] [upstream] KA connection #58 to s3.us-west-2.amazonaws.com:443 is connected
[2026/06/02 20:25:42.028] [debug] [http_client] not using http_proxy for header
[2026/06/02 20:25:42.294] [debug] [upstream] KA connection #58 to s3.us-west-2.amazonaws.com:443 is now available
[2026/06/02 20:25:42.294] [debug] [output:s3:s3.1] PutObject http status=200
[2026/06/02 20:25:42.294] [ info] [output:s3:s3.1] Successfully uploaded object /fluent-bit-logs/my_cpu/2026/06/02/20/25/28-objectBbHJL3OR
[2026/06/02 20:25:47.558] [debug] [output:s3:s3.1] Running upload timer callback (upload_queue)..
[2026/06/02 20:25:47.558] [debug] [output:s3:s3.1] No files found in upload_queue. Scanning for timed out chunks
[2026/06/02 20:25:47.558] [ info] [output:s3:s3.1] Running upload timer callback (cb_s3_upload)..
[2026/06/02 20:25:48.308] [debug] [upstream] KA connection #58 to s3.us-west-2.amazonaws.com:443 has been disconnected by the remote service
[2026/06/02 20:25:53.557] [debug] [output:s3:s3.1] Running upload timer callback (upload_queue)..
[2026/06/02 20:25:53.558] [debug] [output:s3:s3.1] No files found in upload_queue. Scanning for timed out chunks
[2026/06/02 20:25:53.558] [ info] [output:s3:s3.1] Running upload timer callback (cb_s3_upload)..
^C[2026/06/02 20:25:57] [engine] caught signal (SIGINT)
[2026/06/02 20:25:57.213] [ warn] [engine] service will shutdown in max 5 seconds
[2026/06/02 20:25:57.214] [ info] [engine] pausing all inputs..
[2026/06/02 20:25:57.215] [ info] [input] pausing cpu.0
[2026/06/02 20:25:57.562] [ info] [engine] service has stopped (0 pending tasks)
[2026/06/02 20:25:57.563] [ info] [input] pausing cpu.0
[2026/06/02 20:25:57.567] [ info] [output:stdout:stdout.0] thread worker #0 stopping...
[2026/06/02 20:25:57.573] [ info] [output:stdout:stdout.0] thread worker #0 stopped
[2026/06/02 20:25:57.599] [ info] [output:s3:s3.1] thread worker #0 stopping...
[2026/06/02 20:25:57.600] [ info] [output:s3:s3.1] terminating worker
[2026/06/02 20:25:57.601] [ info] [output:s3:s3.1] thread worker #0 stopped

@antoniomrfranco

Copy link
Copy Markdown
Author

Valgrind output that shows no leaks or memory corruption was found:

==1== 
==1== HEAP SUMMARY:
==1==     in use at exit: 0 bytes in 0 blocks
==1==   total heap usage: 45,354 allocs, 45,354 frees, 19,567,278 bytes allocated
==1== 
==1== All heap blocks were freed -- no leaks are possible
==1== 
==1== For lists of detected and suppressed errors, rerun with: -s
==1== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)

@antoniomrfranco antoniomrfranco marked this pull request as ready for review June 2, 2026 20:51
@antoniomrfranco antoniomrfranco requested a review from a team as a code owner June 2, 2026 20:51

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/aws/flb_aws_util.c`:
- Around line 349-360: Fix spacing and indentation in the AWS XML error-check
block: add a space before "!= NULL" in the "SignatureDoesNotMatch" check so it
reads like the other strcasestr comparisons, and adjust the indentation of the
"return FLB_TRUE;" line to align with the other conditional body lines (use the
same 8-space indentation as the surrounding block); locate the block where
strcasestr(payload, "SignatureDoesNotMatch") is checked and the subsequent
return to make these two small edits.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 218e8ed9-9e34-430d-a6ac-46cd479d8a4d

📥 Commits

Reviewing files that changed from the base of the PR and between 909efc4 and a3a9820.

📒 Files selected for processing (1)
  • src/aws/flb_aws_util.c

Comment thread src/aws/flb_aws_util.c
Signed-off-by: Antônio Franco <13881523+antoniomrfranco@users.noreply.github.com>

@cosmo0920 cosmo0920 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The implementation is really reasonable for me.
But can we add test cases for this validation?
This is because we encourage to add unit test cases for something like newly adding functions or capabilities if possible.
In this case, I strongly recommend to add unit tests to validate this patch should be confirmed in error paths.

Signed-off-by: Antônio Franco <13881523+antoniomrfranco@users.noreply.github.com>
@antoniomrfranco antoniomrfranco requested a review from cosmo0920 June 8, 2026 11:41

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
tests/internal/aws_util.c (1)

147-175: ⚡ Quick win

Expand coverage to include all newly-added auth identifiers.

This test validates the path, but it only exercises a subset of the new matcher additions. Please add assertions for the other added auth codes (notably InvalidSecurity, TokenRefreshRequired, InvalidSignature, and XML SignatureDoesNotMatch/InvalidToken) so regressions in the expanded list are caught.

Based on learnings: “Add or update tests for behavior changes, especially protocol parsing … prefer targeted tests close to the changed module.”

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tests/internal/aws_util.c` around lines 147 - 175, The test
test_flb_aws_is_auth_error only covers a subset of new auth identifiers; add
additional assertions in that function to exercise the newly-added matchers by
creating payloads that contain the error codes "InvalidSecurity",
"TokenRefreshRequired", "InvalidSignature", and the XML errors
"SignatureDoesNotMatch" and "InvalidToken" (as well as any JSON variants, e.g.
"{\"__type\":\"InvalidSecurity\",...}"), calling flb_aws_is_auth_error(payload,
strlen(payload)) for each and asserting the expected FLB_TRUE/FLB_FALSE result
consistent with other auth-error cases; keep the same style as existing tests
(use TEST_CHECK and string payloads) so regressions in the expanded matcher list
are detected.

Source: Learnings

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@tests/internal/aws_util.c`:
- Around line 147-175: The test test_flb_aws_is_auth_error only covers a subset
of new auth identifiers; add additional assertions in that function to exercise
the newly-added matchers by creating payloads that contain the error codes
"InvalidSecurity", "TokenRefreshRequired", "InvalidSignature", and the XML
errors "SignatureDoesNotMatch" and "InvalidToken" (as well as any JSON variants,
e.g. "{\"__type\":\"InvalidSecurity\",...}"), calling
flb_aws_is_auth_error(payload, strlen(payload)) for each and asserting the
expected FLB_TRUE/FLB_FALSE result consistent with other auth-error cases; keep
the same style as existing tests (use TEST_CHECK and string payloads) so
regressions in the expanded matcher list are detected.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 202b90a7-94f2-4d2e-92d5-14f98abef0d7

📥 Commits

Reviewing files that changed from the base of the PR and between 53f3aed and 8ccd82f.

📒 Files selected for processing (1)
  • tests/internal/aws_util.c

@cosmo0920 cosmo0920 added this to the Fluent Bit v5.0.8 milestone Jun 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants