当前位置: 首页 > article >正文

【AWS SDK PHP】This operation requests `sigv4a` auth schemes 问题处理

使用AWS SDK碰到的错误,其实很简单,要装个扩展库

保持如下

Fatal error: Uncaught Aws\Auth\Exception\UnresolvedAuthSchemeException: This operation requests `sigv4a` auth schemes, but the client currently supports `sigv4`, `none`, `bearer`, `sigv4-s3express`. in /var/www/html/easymonitor/awstool/aws-sdk-php-v3/Aws/EndpointV2/EndpointV2Middleware.php on line 323

根据提示可以看到如下代码

    private function resolveAuthScheme(array $authSchemes): array
    {
        $invalidAuthSchemes = [];

        foreach($authSchemes as $authScheme) {
            if ($this->isValidAuthScheme($authScheme['name'])) {
                return $this->normalizeAuthScheme($authScheme);
            }
            $invalidAuthSchemes[$authScheme['name']] = false;
        }
  		.......省略.......
        throw new UnresolvedAuthSchemeException(
            "This operation requests {$invalidAuthSchemesString}"
            . " auth schemes, but the client currently supports {$validAuthSchemesString}."
        );
    }

这里就是判断用哪种验证方式
在头部可以看到sigv4a是在列表里面的

private static $validAuthSchemes = [
        'sigv4' => 'v4',
        'sigv4a' => 'v4a',
        'none' => 'anonymous',
        'bearer' => 'bearer',
        'sigv4-s3express' => 'v4-s3express'
    ];

这里这个函数isValidAuthScheme就比较可疑

    private function isValidAuthScheme($signatureVersion): bool
    {
        if (isset(self::$validAuthSchemes[$signatureVersion])) {
              if ($signatureVersion === 'sigv4a') {
                  return extension_loaded('awscrt');
              }
              return true;
        }

        return false;
    }

这里可以看到,列表中有的就直接返回true
但sigv4a比较特殊,需要awscrt扩展
用yum搜了一下有现成的,直接装就行了
在这里插入图片描述
总结
缺少awscrt扩展,安装就行了

补充说明
装了扩展还是要添加php文件才行,具体见官方项目
https://github.com/awslabs/aws-crt-php


http://www.kler.cn/a/467310.html

相关文章:

  • 李宏毅机器学习笔记-Transformer
  • 问题:Flask应用中的用户会话(Session)管理失效
  • 【网络协议】IPv4 地址分配 - 第一部分
  • 2025元旦源码免费送
  • Android12 App窗口创建流程
  • 【ArcGISPro/GeoScenePro】检查多光谱影像的属性并优化其外观
  • 常见的 MySQL 性能问题
  • 框架Tensorflow2
  • 《Rust权威指南》学习笔记(四)
  • Elasticsearch:Lucene 2024 年回顾
  • 豆包 MarsCode 编程助手之Visual Studio Code快速开始教程
  • 【数据可视化-10】国防科技大学录取分数线可视化分析
  • SQL Server 数据库 忘记密码
  • 5.1 冒泡排序与选择排序
  • 对一个双向链表,从尾部遍历找到第一个值为x的点,将node p插入这个点之前,如果找不到,则插在末尾。使用C语言实现
  • Unity3D仿星露谷物语开发16之角色拾取道具
  • spark环境搭建
  • T-SQL语言的编程范式
  • 如何不修改模型参数来强化大语言模型 (LLM) 能力?
  • 【Unity笔记】如何把语言修改为简体中文?
  • 全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之循环结构(for循环语句)—(十)(求解数学中特殊的数)
  • windows终端conda activate命令行不显示环境名
  • 《Armv8-A virtualization》学习笔记
  • windows远程桌面无法连接,报错:“由于没有远程桌面授权服务器可以提供许可证,远程会话被中断。请跟服务器管理员联系”
  • Effective C++读书笔记——item3(疯狂使用const)
  • Kafka 生产者