gpt4 book ai didi

php - 如何调试 AWS Cloudfront 签名 URL 访问被拒绝?

转载 作者:行者123 更新时间:2023-12-01 23:38:03 27 4
gpt4 key购买 nike

这是我的签名 URL 函数:

private function signUrl($lesson) {
$cloudFrontClient = AWS::createClient('CloudFront', [
'region' => '<my-region>',
'version' => '2017-03-25'
]);

$streamHostUrl = 'https://<mydomain>.cloudfront.net';
$resourceKey = $object->s3_video;
$expires = time() + 300;

// Create a signed URL for the resource using the canned policy
$signedUrlCannedPolicy = $cloudFrontClient->getSignedUrl([
'url' => $streamHostUrl . '/' . $resourceKey,
'expires' => $expires,
'private_key' => '<MY_PEM_FILE_PATH>',
'key_pair_id' => '<KEY_PAIR_ID>'
]);

return $signedUrlCannedPolicy;
}

单击链接时,我收到此模棱两可的错误消息,这并不能真正帮助我调试问题:
 <Error><Code>AccessDenied</Code><Message>Access
Denied</Message><RequestId>SOME_ID_HERE</RequestId><HostId>SOME_BASE64_HERE_NOT_READABLE</HostId></Error>

我想知道是否有某种方法可以对此进行调试,也许是在 AWS 控制台或某些 API 调用中?

最佳答案

该错误中的内容比您看到的要多。您的 CloudFront 签名 URL 实际上有效。 <HostId><RequestId>不是来自 CloudFront 的拒绝访问错误中的组件。此错误来自 S3,在 CloudFront 接受您的签名请求后。

在 HTTP 响应 header 中,您应该看到...

Server: Amazon S3
x-amz-request-id: (same value as the XML RequestId)
x-amz-id-2: (same value as the XML HostId)

S3 不允许 CloudFront 获取您的内容。

Using an Origin Access Identity to Restrict Access to Your Amazon S3 Content并验证您的配置。

另请查看 Amazon CloudFront Latency 中的步骤将您的 Error Caching Minimim TTL for 403 errors 设置为 0 秒,否则您将在解决问题后继续看到错误长达 5 分钟(默认)。

如果一切看起来都正确,您可能需要查看您的 S3 存储桶日志以确保您正在请求您想要的对象。在 CloudFront 源设置中,有一个名为 Origin Path 的值,该值几乎应始终留空。在那里放置一个值将导致 CloudFront 请求与 URL 不同的对象,使其看起来是您请求的对象,因此该值通常不是您应该设置为任何内容的值。

关于php - 如何调试 AWS Cloudfront 签名 URL 访问被拒绝?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49723264/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com