运行 AWS S3 客户端功能似乎对我有问题,并且占用了大量内存(生成“已用尽 3670016000 字节的允许内存大小”)。我在下面有以下代码片段
我尝试过的事情:
- 将版本设置为“2006-03-01”
- 放置错误端点(这会导致主机错误输出)
- 不同的区域(区域错误输出)
考虑到配置更改时的响应,我会假设客户端实例运行良好
我目前有 2 个空间(1 个是空的,1 个有大约 60gb 的文件 - 两者都在同一个区域和帐户中)
public $config = [
's3-access' => [
'key' => 'some key',
'secret' => 'some secret',
'region' => 'ap-southeast-1',
'version' => 'latest',
'endpoint' => 'sgp1.digitaloceanspaces.com',
]
];
public function createInstance(){
$client = new S3Client([
'credentials' => [
'key' => $this->config['s3-access']['key'],
'secret' => $this->config['s3-access']['secret']
],
'version' => $this->config['s3-access']['version'],
'region' => $this->config['s3-access']['region'],
'endpoint' => $this->config['s3-access']['endpoint']
]);
//Blank array result
$spaces = $client->listBuckets();
foreach ($spaces['Buckets'] as $space){
echo $space['Name']."\n";
}
//Memory size error exception with peak memory usage to 2813mb, allocated 3500mb
$client->createBucket([
'Bucket' => 'test-space-102201',
]);
//list objects also generated the memory error
}
编辑:在 AWS S3 配置上打开调试模式后,我得到以下响应
-> 进入 step init,名称 'idempotency_auto_fill' ---------------------------------------- ----------- 命令设置为 array(3) { ["instance"]=> string(32) "000000007fb4cf920000000012b9d6de" ["name"]=> string(11) "ListBuckets" [" params"]=> array(2) { ["@http"]=> array(1) { ["debug"]=> resource(307) of type (stream) } ["@context"]=> array( 0) { } } } 请求设置为 array(0) { } -> 进入 step init, name 's3.ssec' ---------------------- --------------- 没有变化 -> 进入步骤初始化,名称 's3.source_file' --------- ----------------------- 没有变化 -> 进入步骤初始化,名称 's3.save_as' ------------- --------------------------- 无变化 -> 进入步骤 init,名称为 's3.location' ----------------------------------------- 没有变化 -> 进入 step init , 名称 's3.auto_encode' ------------------------------------------- - 没有变化 -> 进入 step init, name 's3.head_object' ------------------------------------ --------- 无变化 -> 进入验证步骤,名称为“验证” ----------------------------- --------------- 无变化 -> 进入验证步骤,名称为 'input_validation_middleware' ------------ -------------------------------------- 无更改 -> 进入步骤构建,名称为 'builder' -------------------------------------- request.instance 设置为 000000007fb4cf300000000012b9d6de request.method 已设置将 GET request.headers 设置为 array(1) { ["X-Amz-Security-Token"]=> string(7) "[TOKEN]" } 请求。路径设置为 sgp1.digitaloceanspaces.com -> 进入步骤构建,名称为 'ApiCallMonitoringMiddleware' ------------------------------- --------------- 无更改 -> 进入步骤构建,名称 '' ------------ ------------------- request.instance 从 000000007fb4cf300000000012b9d6de 更改为 000000007fb4cf2c0000000012b9d6de request.headers.User-Agent 设置为 array(1) { [0]=> string(56 ) "aws-sdk-php/3.178.6 OS/Linux/3.10.0-1127.19.1.el7.x86_64" } -> 进入步骤构建,命名为 'endpoint_parameter' ------------ ------------------------------------- 无变化 -> 进入步骤构建,名称为 's3.checksum ' ------------------------------------------ 无变化 -> 进入步骤构建, 名称 's3.content_type' ------------------------------- --- 没有变化 ->进入step build,name 's3.endpoint_middleware' ---------------------------------------- ------------- 没有变化 -> 进入步骤构建,名称 's3.bucket_endpoint_arn' ------------------------ ------------------ 无变化 -> 输入步骤符号,名称为 'StreamRequestPayloadMiddleware' -------- -------------------------------------------------- -- 无变化 -> 输入步骤符号,名称为 'invocation-id' ---------------------------------- --------- request.instance 从 000000007fb4cf2c0000000012b9d6de 更改为 000000007fb4cf280000000012b9d6de request.headers.aws-sdk-invocation-id 设置为 array(1) { [0]=> string(32) "03e4030ef1f4fd18f7d38" > 输入步号,命名为'retry' ------------------------------------ 请求。实例从 000000007fb4cf280000000012b9d6de 更改为 000000007fb4cf270000000012b9d6de request.headers.aws-sdk-retry 设置为 array(1) { [0]=> string(3) "0/0" } -> Entering step sign, name 'signer' -- ---------------------------------- request.instance 从 000000007fb4cf270000000012b9d6de 更改为 000000007fb4cf340000000012b9d6de request.headers.x-amz- content-sha256 设置为 array(1) { [0]=> string(64) "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" } request.headers.X-Amz-Date 设置为 array(1) { [0]=> string(16) “20210423T110304Z”} request.headers.Authorization 设置为 array(1) { [0]=> string(211) “AWS4-HMAC-SHA256 Credential=[KEY]/20210423/ap-southeast-1/s3/aws4_request, SignedHeaders=x-amz-content-sha256;x-amz-date,签名=[SIGNATURE] } ->输入步号,名称 's3.put_object_url' ---------------------------------------- -------- 没有变化 -> 输入步骤符号,名称 's3.permanent_redirect' ----------------------------- ---------------------- 无更改 -> 输入步骤尝试,名称为 'ApiCallAttemptMonitoringMiddleware' ---------------- -------------------------------------------------- - 没有变化 * 正在尝试 103.253.144.208:80... * 连接到 sgp1.digitaloceanspaces.com (103.253.144.208) 端口 80 (#0) > GET / HTTP/1.1 主机:sgp1.digitaloceanspaces.com aws-sdk-invocation -id: 03e4030ef1f4fd18f7d38b8265b34b7f aws-sdk-retry: 0/0 x-amz-content-sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 X-Amz-Date: 20210423T110304Z Authorization: AWS4-HMAC-SHA256 Credential=[KEY]/20210423/ap-southeast-1/ s3/aws4_request,SignedHeaders=x-amz-content-sha256;x-amz-date, Signature=[SIGNATURE] 用户代理:aws-sdk-php/3.178.6 OS/Linux/3.10.0-1127.19.1.el7.x86_64 GuzzleHttp /7 * 将捆绑包标记为不支持多用途 < HTTP/1.1 302 找到 < 内容长度:0 < 位置:https://sgp1.digitaloceanspaces.com/< cache-control: no-cache < * 连接到主机 sgp1.digitaloceanspaces.com 的连接 #0 保持不变 * 正在尝试 103.253.144.208:443 ... * 连接到 sgp1.digitaloceanspaces.com (103.253.144.208) 端口 443 (#1 ) * ALPN,提供 http/1.1 * 成功设置证书验证位置:* CAfile:/etc/pki/tls/certs/ca-bundle.crt * CApath:无 * SSL 连接使用 TLSv1.3 / TLS_AES_256_GCM_SHA384 * ALPN,服务器完成不同意协议 * 服务器证书:* 主题:C=US;ST=纽约;L=纽约;O=数字海洋有限责任公司;CN=*.sgp1.digitaloceanspaces.com * 开始日期:格林威治标准时间 2020 年 11 月 6 日 00:00:00 * 到期日期:格林威治标准时间 2021 年 12 月 7 日 23:59:59 * subjectAltName:主机“sgp1.digitaloceanspaces.com”匹配证书的“sgp1 .digitaloceanspaces.com" * 发行人:C=US;O=DigiCert 公司;CN=DigiCert TLS RSA SHA256 2020 CA1 * SSL 证书验证正常。> GET / HTTP/1.1 Host: sgp1.digitaloceanspaces.com aws-sdk-invocation-id: 03e4030ef1f4fd18f7d38b8265b34b7f aws-sdk-retry: 0/0 x-amz-content-sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 X-Amz-Date: 20210423T110304Z User-Agent: aws-sdk-php/3.178.6 OS/Linux/3.10.0-1127.19.1.el7.x86_64 GuzzleHttp/7 * 旧 SSL 会话 ID 已过时,正在删除 * 将捆绑包标记为不支持多用途 < HTTP/1.1 200 OK <日期:格林威治标准时间 2021 年 4 月 23 日星期五 11:03:07 < 内容长度:215 < 内容类型:文本/xml;charset=utf-8 < 严格传输安全:max-age=15552000;包括子域;preload < * 到主机 sgp1.digitaloceanspaces.com 的连接 #1 保持不变 <- 离开步骤尝试,名称为“ApiCallAttemptMonitoringMiddleware”