簡體   English   中英

AWS使用SQS上傳到S3-PHP語法

[英]AWS upload to S3 with SQS - PHP syntax

使用SQS上傳到S3是否會使過程更具容錯能力?

如果是這樣,我在語法上很難,嘗試結合創建queue然后上傳到S3。
如果我的邏輯不正確,我將如何設置一個使用SQS上傳到S3

if (!class_exists('S3'))require_once('S3.php');

// *these keys are random strings
$AWS_KEY = "6VVWTU4JDAAKHYB1C3ZN";
$AWS_SECRET_KEY = "GMSCUD8C0QA1QLV9Y3RP2IAKDIZSCHRGKEJSXZ4F";

//AWS access info
if (!defined('awsAccessKey')) define('awsAccessKey', $AWS_KEY);
if (!defined('awsSecretKey')) define('awsSecretKey', $AWS_SECRET_KEY);
//instantiate the class
$s3 = new S3(awsAccessKey, awsSecretKey);

//check whether a form was submitted
if(isset($_POST['Submit'])){

    //retreive post variables
    $fileName = $_FILES['theFile']['name'];
    $fileTempName = $_FILES['theFile']['tmp_name'];

    //create a new bucket
    $s3->putBucket("mybucket", S3::ACL_PUBLIC_READ);




    //add the queue
    $sqs = new AmazonSQS(array( "key" => $AWS_KEY, "secret" => $AWS_SECRET_KEY ));
    $response = $sqs->create_queue('test-topic-queue');
    $queue_url = (string) $response->body->CreateQueueResult->QueueUrl;
    $queue_arn = 'arn:aws:sqs:us-east-1:ENCQ8gqrAcXv:test-topic-queue';

    //$queue_url . ?Action=SendMessage&MessageBody=Your%20Message%20Text?&AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE&Version=2011-10-01?&Expires=2008-02-10T12:00:00Z?&Signature=lBP67vCvGlDMBQ1do?fZxg8E8SUEXAMPLE&SignatureVersion=2&SignatureMethod=HmacSHA256


    // HOW DO I INCORPORATE SQS AND S3



    //move the file
    if ($s3->putObjectFile($fileTempName, 
                                "mybucket", 
                                "myFolder/" . $fileName, S3::ACL_PUBLIC_READ, 
                                array(), 
                                $_FILES['theFile']['type']) ) {
        //it works
    }else{
        // error
    }
}

我不太了解您所要求的容錯能力。 但是就使用S3和SQS進行擴展而言,Amazon AWS網站上有一篇出色的論文,內容涉及一起使用SQS和EC2擴展和縮減基礎架構,其中當然可以包括上載到S3以及使用SQS進行擴展的過程。告訴應用程序處理某些事情。 您沒有提到是否使用EC2或是否感興趣。

這是文章: http : //aws.amazon.com/articles/1464

否則,聽起來好像您的邏輯可能會感到困惑,因為SQS並不是從服務器到S3的中間,而對於應用程序消息傳遞來說更是如此。

我想我已經弄清楚了OP在這個主題上的困惑。

所示的圖表似乎表明SQS正在處理上傳,但實際上並沒有,當您上傳1或100張照片時,它們直接添加到S3中,然后使用SQS創建一個“任務”,其中EC2“處理服務”之一”將拉出,然后從S3存儲中獲取SQS消息中命名的實際圖片。

希望這對將來看到此問題感到迷惑的未來用戶有所啟發。

暫無
暫無

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

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