Aws PHP Sdk 3:S3::putObject():Aws HTTP错误:cURL错误6:canned';t解析主机';s3.Ireland.amazonaws.com';

Aws PHP Sdk 3:S3::putObject():Aws HTTP错误:cURL错误6:canned';t解析主机';s3.Ireland.amazonaws.com';,php,curl,amazon-web-services,amazon-s3,Php,Curl,Amazon Web Services,Amazon S3,我试图使用SDK版本3将图像上载到S3存储桶,但收到以下错误: 在上执行“PutObject”时出错 ""; AWS HTTP 错误:cURL错误6:无法解析主机“s3.irland.amazonaws.com” (见附件) 这是我第一次尝试这样做,所以我不太自信 通过AWS界面上传文件,其URL类似于https://s3-eu-west-1.amazonaws.com/my-bucket-name/testFileThroughWeb.jpg。 因此,它似乎不同于AWS SDK创建的用于放置文

我试图使用SDK版本3将图像上载到S3存储桶,但收到以下错误:

在上执行“PutObject”时出错 ""; AWS HTTP 错误:cURL错误6:无法解析主机“s3.irland.amazonaws.com” (见附件)

这是我第一次尝试这样做,所以我不太自信

通过AWS界面上传文件,其URL类似于
https://s3-eu-west-1.amazonaws.com/my-bucket-name/testFileThroughWeb.jpg
。 因此,它似乎不同于AWS SDK创建的用于放置文件(即
https://s3.Ireland.amazonaws.com/my-bucket-name/testFile.jpg

我想指出的另一件事是我传递给S3Client构造函数的版本。 创建它的实例时,将密钥
版本的值
stable
传递给它,而在bucket策略中,我使用
版本:“2012-10-17”

这是bucket策略的配置:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AddPerm",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::my-bucket-name/*"
        }
    ]
}
要将图像保存在bucket中,我使用以下代码:

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;
}

哪一个可能是导致我出错的原因?为什么主机
https://s3.Ireland.amazonaws.com
S3Client猜测的不正确?

没有像“爱尔兰”这样的AWS地区。列出了S3的有效区域;这里您可能尝试使用的是EU(爱尔兰),它将在区域参数中表示为
EU-west-1

对您来说可能太晚了,但对其他人来说是新的:

AWS HTTP错误:cURL错误6:无法解析主机's3.irland.amazonaws.com'(请参阅)错误的意思是您的S3URL/配置有错误。该服务无法使用您的URL配置连接到S3

例如我的错误,今天我面临同样的错误,因为遗漏了一个URL块


除此之外,如果您使用备用DC;在他们这边使用AWS平台。您应该询问他们自己的conf设置。

SDK不应该“猜测”该值,因为它肯定是无效的。没有像
s3.irland…
这样的端点。您的配置或代码中没有出现“Ireland”的地方?我为region参数设置了它。当我实例化S3客户端时,我将值“Ireland”作为region参数传递给它。对于伦敦region,值是“eu-west-2”