[英]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.