簡體   English   中英

Aws PHP Sdk 3:S3::putObject():AWS HTTP 錯誤:cURL 錯誤 6:無法解析主機“s3.Ireland.amazonaws.com”

[英]Aws PHP Sdk 3: S3::putObject(): AWS HTTP error: cURL error 6: Couldn't resolve host 's3.Ireland.amazonaws.com'

我正在嘗試使用 SDK 版本 3 將圖像上傳到 S3 存儲桶,但收到以下錯誤:

在“ https://s3.Ireland.amazonaws.com/my-bucket-name/testFile.jpg ”上執行“PutObject”時出錯; AWS HTTP 錯誤:cURL 錯誤 6:無法解析主機“s3.Ireland.amazonaws.com”(請參閱http://curl.haxx.se/libcurl/c/libcurl-errors.html

這是我第一次嘗試這樣做,所以我不太有信心。

通過 AWS 接口上傳文件,其 URL 類似於https://s3-eu-west-1.amazonaws.com/my-bucket-name/testFileThroughWeb.jpg 因此,它似乎與 AWS SDK 創建的用於 PUT 文件的文件不同(即https://s3.Ireland.amazonaws.com/my-bucket-name/testFile.jpg

我想指出的另一件事是我傳遞給 S3Client 的構造函數的版本。 創建它的實例時,將密鑰version stable值傳遞給它,而在存儲桶策略中我使用version: "2012-10-17"

這是存儲桶策略的配置:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AddPerm",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::my-bucket-name/*"
        }
    ]
}

要將圖像保存在存儲桶中,我使用以下代碼:

public function testS3Action()
{
    $fileToUpload = 'http://example.com/an/image.jpg';

    // Get the remote file extension
    $remoteImageExtension = explode('.', $fileToUpload);
    $remoteImageExtension = array_pop($remoteImageExtension);
    $fs = new Symfony\Component\Filesystem\Filesystem();
    $tempImage = tempnam(sys_get_temp_dir(), 'image.') . '.' . $remoteImageExtension;

    /**
     * From the Symfony container
     * @var GuzzleHttp\Client $client
     */
    $client = $this->get('guzzle.client');

    // Get and save file
    $client->get($fileToUpload, ['save_to' => $tempImage]);

    $tempImage = new Symfony\Component\HttpFoundation\File\File($tempImage);

    /**
     * From the Symfony container
     * @var Aws\S3\S3Client $s3
     */
    $s3 = $this->get('shq.amazon.s3');

    $params = [
        'Bucket' => $this->getParameter('amazon.s3.bucket'),
        'Key'    => 'testFile.jpg',
        'Body'   => $tempImage
    ];

    $result = $s3->putObject($params);

    return $result;
}

這可能是我收到錯誤的原因? 為什么 S3Client 猜測的主機https://s3.Ireland.amazonaws.com不正確?

沒有像“愛爾蘭”這樣的 AWS 區域。 亞馬遜網站上列出了 S3 的有效區域; 您可能在這里嘗試使用的是 EU(愛爾蘭),它將在區域參數中表示為eu-west-1

也許對你來說晚了,但對其他人來說是新的:

AWS HTTP 錯誤:cURL 錯誤 6:無法解析主機 's3.Ireland.amazonaws.com'(請參閱http://curl.haxx.se/libcurl/c/libcurl-errors.html錯誤的含義是您有您的 S3 URL/配置錯誤。 該服務無法使用您的 URL conf 連接到 S3。

比如我的錯誤,今天我因為錯過了一個 URL 塊而面臨同樣的錯誤。

除此之外,如果您使用替代 DC; 在他們這邊使用 AWS 平台。 您應該詢問他們自己的 conf 設置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM