实例化从 AwsClient subclass 扩展的 class 时出错
Error on instantiating class extended from AwsClient subclass
我正在像这样扩展我的自定义 Sqs class:
class Sqs extends SqsClient
{
public function __construct()
{
parent::__construct(array(
'credentials' => array(
'key' => $_ENV['AWS_ACCESS_KEY_ID'],
'secret' => $_ENV['AWS_SECRET_ACCESS_KEY'],
),
'region' => 'us-west-1',
'version' => 'latest'
));
}
}
然后我像这样实例化和使用它:
$sqs = new Sqs();
$sqs->sendMessage([
'QueueUrl' => $_ENV['AWS_SQS_URL_PREFIX'] . '/' . $_ENV['AWS_SQS_READER_USER_CREATE'],
'MessageBody' => $user_json,
'MessageGroupId' => 1,
'MessageDeduplicationId' => uniqid(),
]);
但是我遇到了一个奇怪的错误:
The service \"\" is not provided by the AWS SDK for PHP.
AWS API 使用反射根据 class 名称确定它们连接到的 AWS 服务。如果是这种情况,您可以尝试调用 class SqsClient,例如
use Aws\Sqs\SqsClient as BaseSqsClient;
class SqsClient extends BaseSqsClient
{
//...
}
未来遇到此问题的其他人的替代方案 - 将 service
作为配置数组中的元素传递也有效:
class MyWafClient extends WafClient
{
public function __construct(array $args = [])
{
$args['service'] = 'waf';
parent::__construct($args);
}
...
}
我正在像这样扩展我的自定义 Sqs class:
class Sqs extends SqsClient
{
public function __construct()
{
parent::__construct(array(
'credentials' => array(
'key' => $_ENV['AWS_ACCESS_KEY_ID'],
'secret' => $_ENV['AWS_SECRET_ACCESS_KEY'],
),
'region' => 'us-west-1',
'version' => 'latest'
));
}
}
然后我像这样实例化和使用它:
$sqs = new Sqs();
$sqs->sendMessage([
'QueueUrl' => $_ENV['AWS_SQS_URL_PREFIX'] . '/' . $_ENV['AWS_SQS_READER_USER_CREATE'],
'MessageBody' => $user_json,
'MessageGroupId' => 1,
'MessageDeduplicationId' => uniqid(),
]);
但是我遇到了一个奇怪的错误:
The service \"\" is not provided by the AWS SDK for PHP.
AWS API 使用反射根据 class 名称确定它们连接到的 AWS 服务。如果是这种情况,您可以尝试调用 class SqsClient,例如
use Aws\Sqs\SqsClient as BaseSqsClient;
class SqsClient extends BaseSqsClient
{
//...
}
未来遇到此问题的其他人的替代方案 - 将 service
作为配置数组中的元素传递也有效:
class MyWafClient extends WafClient
{
public function __construct(array $args = [])
{
$args['service'] = 'waf';
parent::__construct($args);
}
...
}