2017-03-20 2 views
2

AWSS3でエラーファイルをアップロードしようとしていますが、「アクセスしようとしているバケットは、指定したエンドポイントを使用してアドレス指定する必要があります。このエンドポイント: "test9011960909.s3.amazonaws.com"。 "メインバケットのサブフォルダにファイルをアップロードできません

また、 'region' => 'us-east-1'と指定しましたが、同じエラーが発生します。

私は

'Bucket'  => $this->bucket, 

を指定すると、それが機能していますが、私はすでにAWS S3: The bucket you are attempting to access must be addressed using the specified endpoint

から承認された答えを適用したが、まだメインバケットのサブフォルダ

'Bucket'  => $this->bucket . "/" . $PrefixFolderPath, 

にファイルをアップロードしたいです同じエラーが表示される、私はPHPを使用しています

コード:

use Aws\S3\S3Client; 
use Aws\S3\Exception\S3Exception; 

class AWSS3Factory { 

    private $bucket; 
    private $keyname; 

    public function __construct() { 
     $this->bucket = AWSS3_BucketName; 
     $this->keyname = AWSS3_AccessKey; 
     // Instantiate the client. 
    } 

    public function UploadFile($FullFilePath,$PrefixFolderPath="") { 
     try { 
      $s3 = S3Client::factory(array(
       'credentials' => array(
        'key' => MYKEY, 
        'secret' => MYSECKEY, 
        'region' => 'eu-west-1', 
       ) 
      )); 

      // Upload data. 
      $result = $s3->putObject(array(
       'Bucket'  => $this->bucket . "/" . $PrefixFolderPath, 
       'Key'   => $this->keyname, 
       'SourceFile' => $FullFilePath, 
       'StorageClass' => 'REDUCED_REDUNDANCY' 
      )); 
      return true; 
      // Print the URL to the object. 
      //echo $result['ObjectURL'] . "\n"; 
     } catch (S3Exception $e) { 
      echo $e->getMessage() . "\n"; 
     } 
    } 
} 
+1

可能な重複:アクセスしようとしているバケットは、指定されたエンドポイントを使用してアドレス指定する必要があります](http://stackoverflow.com/questions/25027462/aws-s3-the-bucket-you-are-attempting-to-access-must-be- –

+0

私は既に承認された回答を適用しましたが、同じエラーが表示される理由は何ですか?この質問を投稿する理由は、私はPHPを使用しています。 –

+0

これがAWSによるこのエラーの唯一の説明であることを考えれば、http://docs.aws.amazon.com/redshift/latest/dg/s3serviceexception-error.html#bucket-in-different-regionそしてそれが唯一の時間です自分自身(そして他のほとんどの人)がそれを見て、私は他の理由を考えることができません。正しい地域からアクセスしていると思われる場合は、AWSコンソールをチェックし、AWSでチケットを発行してください。 –

答えて

1

あなたはこのように、別の方法でS3インスタンスを作成する必要があります[AWS S3の

$s3 = S3Client::factory([ 
    'region'  => '', 
    'credentials' => ['key' => '***', 'secret' => '***'], 
    'version' => 'latest', 
]); 
1

あなたがいない'Bucket'ではなく'Key'$PrefixFolderPathを追加する必要があります。

$result = $s3->putObject(array(
    'Bucket'  => $this->bucket, 
    'Key'   => $PrefixFolderPath . "/" . $this->keyname, 
    'SourceFile' => $FullFilePath, 
    'StorageClass' => 'REDUCED_REDUNDANCY' 
)); 
+0

あなたの解決策を試しましたが、それでも同じ問題 –

関連する問題