凭证必须是带有 SQS 的 PHP SDK 上的 Aws\\Credentials\\CredentialsInterface 错误的实例

Hap*_*der 5 php amazon-sqs amazon-web-services aws-php-sdk

SQS我正在尝试使用 php SDK从 AWS 中删除一条消息。我有以下配置。

$sqsClient = new SqsClient([
            'version' => '2012-11-05',
            'region'  => 'us-east-1',
            'credentials' => [
                'key' => KEY,
                'secret' => SECRET
            ]
        ]);
Run Code Online (Sandbox Code Playgroud)

然后我尝试删除如下:

$sqsClient->deleteMessage([
                'QueueUrl' => quque-url
                'ReceiptHandle' => handle
            ]);
Run Code Online (Sandbox Code Playgroud)

我在初始化时收到以下错误:

Credentials must be an instance of Aws\\Credentials\\CredentialsInterface, an associative array that contains \"key\", \"secret\", and an optional \"token\" key-value pairs, a credentials provider function, or false."

我使用的凭据是正确的。在我没有传递配置之前,也出现了同样的错误。如何解决这个问题?

小智 10

我找到了这个代码示例,我认为你的代码是正确的。

创建 的实例怎么样Credentials

您可以使用这些代码来启动实例。

$credentials = new Aws\Credentials\Credentials(KEY, SECRET);
$sqsClient = new SqsClient([
            'version' => '2012-11-05',
            'region'  => 'us-east-1',
            'credentials' => $credentials
        ]);
Run Code Online (Sandbox Code Playgroud)

检查这个文件

出于安全原因,我建议您最好使用凭据文件或设置环境变量。

我希望一切都好。