Authentication issue with AWS SDK for PHP and EventBridge client

0

I have created global endpoint for EventBridge buses, one in us-east1, another in eu-north1 I use Wordpress instance hosted on AWS Lightsail to send event from PHP to global endpoint.

I installed composer and AWS SDK under PATH/vendor/

My PHP function:

require_once(__DIR__.'/vendor/autoload.php');

use Aws\EventBridge\EventBridgeClient;

$evClient = new EventBridgeClient([
	'region' => 'us-east-1'
]);

$endpointId = 'my-endpoint.veo';  
$eventBusName = 'my-bus-name';    

$event =  [
    'Source' => 'cybertechtalk',
    'DetailType' => 'test',
    'Detail' => json_encode(['foo' => 'bar']),
    'Time' => new DateTime(),
    'Resources' => ['php-script'],
    'EventBusName' => $eventBusName,
    'TraceHeader' => 'test'
];

$result = $evClient->putEvents([
    'EndpointId' => $endpointId,
    'Entries' => [$event]
]);

Exception:

Uncaught Aws\Auth\Exception\UnresolvedAuthSchemeException: This operation requests `sigv4a` auth schemes, but the client currently supports `sigv4`, `none`, `bearer`, `sigv4-s3express`. in /bitnami/wordpress/wp-content/plugins/insert-headers-and-footers/includes/vendor/aws/aws-sdk-php/src/EndpointV2/EndpointV2Middleware.php:265

Stack trace:
#0 /bitnami/wordpress/wp-content/plugins/insert-headers-and-footers/includes/vendor/aws/aws-sdk-php/src/EndpointV2/EndpointV2Middleware.php(233): Aws\EndpointV2\EndpointV2Middleware->resolveAuthScheme()
#1 /bitnami/wordpress/wp-content/plugins/insert-headers-and-footers/includes/vendor/aws/aws-sdk-php/src/EndpointV2/EndpointV2Middleware.php(96): Aws\EndpointV2\EndpointV2Middleware->applyAuthScheme()
#2 /bitnami/wordpress/wp-content/plugins/insert-headers-and-footers/includes/vendor/aws/aws-sdk-php/src/Middleware.php(90): Aws\EndpointV2\EndpointV2Middleware->__invoke()
#3 /bitnami/wordpress/wp-content/plugins/insert-headers-and-footers/includes/vendor/aws/aws-sdk-php/src/IdempotencyTokenMiddleware.php(77): Aws\Middleware::Aws\{closure}()
#4 /bitnami/wordpress/wp-content/plugins/insert-headers-and-footers/includes/vendor/aws/aws-sdk-php/src/AwsClientTrait.php(64): Aws\IdempotencyTokenMiddleware->__invoke()
#5 /bitnami/wordpress/wp-content/plugins/insert-headers-and-footers/includes/vendor/aws/aws-sdk-php/src/AwsClientTrait.php(58): Aws\AwsClient->executeAsync()
#6 /bitnami/wordpress/wp-content/plugins/insert-headers-and-footers/includes/vendor/aws/aws-sdk-php/src/AwsClientTrait.php(86): Aws\AwsClient->execute()
#7 /bitnami/wordpress/wp-content/plugins/insert-headers-and-footers/includes/class-wpcode-snippet-execute.php(287) : eval()'d code(25): Aws\AwsClient->__call()
#8 /bitnami/wordpress/wp-content/plugins/insert-headers-and-footers/includes/class-wpcode-snippet-execute.php(287): eval()
#9 /bitnami/wordpress/wp-content/plugins/insert-headers-and-footers/includes/execute/class-wpcode-snippet-execute-php.php(32): WPCode_Snippet_Execute->safe_execute_php()
#10 /bitnami/wordpress/wp-content/plugins/insert-headers-and-footers/includes/execute/class-wpcode-snippet-execute-type.php(55): WPCode_Snippet_Execute_PHP->prepare_snippet_output()
#11 /bitnami/wordpress/wp-content/plugins/insert-headers-and-footers/includes/class-wpcode-snippet.php(623): WPCode_Snippet_Execute_Type->get_output()
#12 /bitnami/wordpress/wp-content/plugins/insert-headers-and-footers/includes/class-wpcode-snippet.php(465): WPCode_Snippet->run_activation_checks()
#13 /bitnami/wordpress/wp-content/plugins/insert-headers-and-footers/includes/admin/pages/class-wpcode-admin-page-snippet-manager.php(1087): WPCode_Snippet->save()
#14 /opt/bitnami/wordpress/wp-includes/class-wp-hook.php(324): WPCode_Admin_Page_Snippet_Manager->submit_listener()
#15 /opt/bitnami/wordpress/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters()
#16 /opt/bitnami/wordpress/wp-includes/plugin.php(517): WP_Hook->do_action()
#17 /opt/bitnami/wordpress/wp-admin/admin.php(175): do_action() #18 {main} thrown
asked a month ago157 views
2 Answers
0
Accepted Answer

Hello.

You may need to install the "AWS CRT extension" as described in the document below.
https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/eventbridge-examples.html

To use EventBridge global endpoints with the SDK for PHP, your PHP environment must have the AWS Common Runtime (AWS CRT) extension installed.

Please check the installation method on GitHub below.
https://github.com/awslabs/aws-crt-php#aws-common-runtime-php-bindings

profile picture
EXPERT
answered a month ago
profile picture
EXPERT
reviewed 25 days ago
  • Thank you guys. Installing AWS CRT did not work

0

I also think you're encountering an authentication issue with your AWS SDK for PHP when trying to put events to the EventBridge bus. The error message indicates that the operation requests sigv4a authentication schemes, but the client only supports sigv4, none, bearer, sigv4-s3express.

To resolve this issue, you may need to configure your AWS SDK for PHP to use Signature Version 4 (sigv4) authentication scheme explicitly. Here's how you can modify your code to specify the authentication scheme:

require_once(DIR.'/vendor/autoload.php');

use Aws\EventBridge\EventBridgeClient; use Aws\Credentials\Credentials; use Aws\Signature\SignatureV4;

// Specify your AWS credentials $credentials = new Credentials('YOUR_ACCESS_KEY_ID', 'YOUR_SECRET_ACCESS_KEY');

// Specify the AWS region and authentication scheme $config = [ 'region' => 'us-east-1', 'version' => 'latest', 'signature' => new SignatureV4('eventbridge', 'us-east-1') ];

// Create an EventBridge client with the specified configuration $evClient = new EventBridgeClient($config + ['credentials' => $credentials]);

// Your code to put events to the EventBridge bus goes here

profile picture
Bravo
answered 25 days ago
  • Codebase updated: require_once(DIR . '/vendor/autoload.php');

    use Aws\EventBridge\EventBridgeClient; use Aws\Credentials\Credentials; use Aws\Signature\SignatureV4;

    $credentials = new Credentials('YOUR_ACCESS_KEY_ID', 'YOUR_SECRET_ACCESS_KEY');

    $evClient = new EventBridgeClient([ 'region' => 'us-east-1', 'version' => 'latest', 'signature' => new SignatureV4('eventbridge', 'us-east-1'), 'credentials' => $credentials ]);

    Still same exception. Any ideas?

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions