小编jrb*_*jrb的帖子

通过AWS SDK拒绝访问SQS

我目前正在开发一个使用Symfony2开发的网站,我需要在Amazon SQS中发送消息.为了做到这一点,我加入了我的composer.json:

"aws/aws-sdk-php": "2.4.*"
Run Code Online (Sandbox Code Playgroud)

然后,当我尝试创建队列或列表队列时,我遇到403错误说:

访问资源https://sqs.us-west-2.amazonaws.com/被拒绝.

编辑: 添加完整的错误消息

AWS错误代码:AccessDenied,状态代码:403,AWS请求ID:2fe34c11-7af8-5445-a768-070159a0953e,AWS错误类型:客户端,AWS错误消息:访问资源 https://sqs.us-west-2 .amazonaws.com /被拒绝.,User-Agent:aws-sdk-php2/2.4.11 Guzzle/3.7.4 curl/7.25.0 PHP/5.4.3

以下是我所做的示例代码:

$aws = Aws::factory(array(
  'key'    => 'my-key',
  'secret' => 'my-secret',
  'region' => 'us-west-2'
));

$sqs = $aws->get('sqs');

return new Response(var_dump($sqs->listQueues()));
Run Code Online (Sandbox Code Playgroud)

如果出现此错误,我该怎么办?

amazon-sqs amazon-web-services symfony aws-sdk

28
推荐指数
2
解决办法
3万
查看次数

Rspec通过mTurk测试实时结果

我正在通过Rspec测试代码在mTurk创建点击,但同时我需要测试必须从mTurk发回的结果.为了节省每次测试的复杂性测试,我使用VCR在盒式磁带中记录HTTP请求.我该如何实现这个测试?

ruby rubygems ruby-on-rails mechanicalturk ruby-on-rails-3

12
推荐指数
1
解决办法
274
查看次数

AWS SDK S3套接字已关闭异常

我的应用程序使用了近10个线程,每个线程每分钟可能会产生7,000个Put请求到S3.(我在一个功能强大的EC2盒子上运行它可以很好地处理负载.)它可以运行近一个小时,但是,一小时后,得到Unable to execute HTTP request: Socket Closed例外:

        http.AmazonHttpClient: Unable to execute HTTP request: Socket Closed
    java.net.SocketException: Socket Closed
    at java.net.AbstractPlainSocketImpl.setOption(AbstractPlainSocketImpl.java:206)
    at java.net.Socket.setSoTimeout(Socket.java:1105)
    at sun.security.ssl.SSLSocketImpl.setSoTimeout(SSLSocketImpl.java:2414)
    at org.apache.http.impl.io.SocketInputBuffer.isDataAvailable(SocketInputBuffer.java:106)
    at org.apache.http.impl.AbstractHttpClientConnection.isResponseAvailable(AbstractHttpClientConnection.java:246)
    at org.apache.http.impl.conn.ManagedClientConnectionImpl.isResponseAvailable(ManagedClientConnectionImpl.java:180)
    at org.apache.http.protocol.HttpRequestExecutor.doSendRequest(HttpRequestExecutor.java:238)
    at com.amazonaws.http.protocol.SdkHttpRequestExecutor.doSendRequest(SdkHttpRequestExecutor.java:47)
    at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:125)
    at org.apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.java:713)
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:518)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805)
    at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:446)
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:256)
    at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3641)
    at com.amazonaws.services.s3.AmazonS3Client.putObject(AmazonS3Client.java:1438)
    at com.amazonaws.services.s3.transfer.internal.UploadCallable.uploadInOneChunk(UploadCallable.java:128)
    at com.amazonaws.services.s3.transfer.internal.UploadCallable.call(UploadCallable.java:120)
    at com.amazonaws.services.s3.transfer.internal.UploadMonitor.upload(UploadMonitor.java:176)
    at com.amazonaws.services.s3.transfer.internal.UploadMonitor.call(UploadMonitor.java:134)
    at com.amazonaws.services.s3.transfer.internal.UploadMonitor.call(UploadMonitor.java:50)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
Run Code Online (Sandbox Code Playgroud)

Put Requests使用AWS SDK TransferManager异步完成.我想,在一个put请求完全完成所需的时间内,大约有10个是异步进行的.

谷歌搜索该异常,我发现了两个可能的原因:

  1. MaxConnections的限制.我把它从默认的50到3000提升到无济于事.
  2. 过早的垃圾收集.我已经尝试保留对UploadTransferManager返回的对象的引用(在并发队列中),并且再次没有帮助.

我怎样才能解决这个问题?再次,该应用程序运行良好近一个小时,但一直在大约一个小时后撞到这堵墙.(我在EC2上的Amazon …

java sockets amazon-s3 amazon-web-services aws-sdk

12
推荐指数
1
解决办法
7666
查看次数

AWS SDK for Java教程示例缺少类

AWS SDK for Java入门教程之后,运行AwsConsoleApp示例:

java -cp .:/Users/marius/Dev/aws-java-sdk-1.3.8/lib/aws-java-sdk-1.3.8.jar AwsConsoleApp
Run Code Online (Sandbox Code Playgroud)

我得到以下问题:

===========================================
Welcome to the AWS Java SDK!
===========================================
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
    at com.amazonaws.util.VersionInfoUtils.<clinit>(VersionInfoUtils.java:41)
    at com.amazonaws.ClientConfiguration.<clinit>(ClientConfiguration.java:31)
    at com.amazonaws.services.ec2.AmazonEC2Client.<init>(AmazonEC2Client.java:95)
    at AwsConsoleApp.init(AwsConsoleApp.java:93)
    at AwsConsoleApp.main(AwsConsoleApp.java:105)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    ... 5 more
Run Code Online (Sandbox Code Playgroud)

编译时在类路径中加载的相同完整SDK也在运行时期间给出,因此我无法弄清楚缺少什么.

java classpath amazon-web-services aws-sdk

7
推荐指数
1
解决办法
6411
查看次数

通过PEAR安装AWS SDK时出现奇怪错误

我通过PEAR安装AWS SDK时遇到此错误.我以前从来没有这样做过.

$ sudo pear channel-discover pear.amazonwebservices.com
Adding Channel "pear.amazonwebservices.com" succeeded
Discovery of channel "pear.amazonwebservices.com" succeeded    
$ sudo pear install aws/sdk
Unknown remote channel: guzzlephp.org/pear
aws/sdk requires package "channel://guzzlephp.org/pear/Guzzle" (version >= 3.0.2)
No valid packages found
install failed
Run Code Online (Sandbox Code Playgroud)

有人可以帮我一把

php sdk pear amazon-web-services aws-sdk

7
推荐指数
1
解决办法
3328
查看次数

节点aws-sdk s3文件上传大小

当为nods.js使用aws-sdk npm插件时,我可以使用以下代码(到AWS s3)上传50kb的pdf:

var params = {
            Bucket: BUCKET, 
            Key: pdf_key, 
            Body: file,
            ContentType: 'application/pdf'
        };
        var s3 = new AWS.S3();

        s3.putObject(params, function(error, data) {
            console.log(data);
            console.log(error);
            if (error) {
                console.log(error);
                callback(error, null);
            } else {
                callback(null, pdf_key);
            }
        });
Run Code Online (Sandbox Code Playgroud)

但是当上传一个11mb pdf时,即使指定了ContentLength,即使超时为2分钟,上传也会永远持续下去.

问题是如何让aws s3接受大型pdf文件?

UPDATE

我还没有找到任何关于这个问题的文档或文章.

更新2

我将接受答案,这些答案显示了这个或另一个可以做到这一点的框架.我将需要该框架,以便能够允许对象的auth读取.

更新3 我现在让它工作,但我没有找到它不应该工作的原因.

提前致谢!

amazon-s3 node.js aws-sdk

6
推荐指数
1
解决办法
3322
查看次数

如何将AWS SDK加载到CakePHP中?

我正在为我的应用创建一个S3插件.在app/Plugin/S3/Controller/Component/S3Component.php我有这些:

<?php 

App::import('Vendor', 'aws/aws-autoloader');

use Aws\S3\S3Client;

class S3Component extends Component {

    public function loadS3 () {
        $s3 = S3Client::factory(array(
            'key' => '',
            'secret' => ''
        ));
        return $s3;
    }

}
Run Code Online (Sandbox Code Playgroud)

在我的应用程序的控制器中,我称之为使用 $s3 = $this->S3->loadS3();

它抛出错误 Error: Class 'Aws\S3\S3Client' not found

我尝试将行添加App::uses('Vendor', 'aws/Aws/S3/S3Client');到组件类中,然后删除use Aws\S3\S3Client;.表明Error: Class 'S3Client' not found

AWS SDK位于文件夹中 app/Plugin/S3/Vendor/aws

我正在加载S3对象,参考:http://docs.aws.amazon.com/aws-sdk-php/guide/latest/quick-start.html#factory-method

解:

这是我的组件现在在@akirk的帮助下的样子.

<?php 

ini_set('include_path', ROOT . DS . 'lib' . PATH_SEPARATOR . ini_get('include_path'). PATH_SEPARATOR . ROOT .DS . 'app/Plugin/S3/Vendor/aws'); …
Run Code Online (Sandbox Code Playgroud)

php sdk cakephp amazon-web-services aws-sdk

6
推荐指数
1
解决办法
3184
查看次数

MongoDB进入AWS Redshift

我们有一个非常大的MongoDB实例,带有分片集合.它已经达到了这样的程度,即依靠MongoDB查询功能(包括聚合框架)来洞察数据变得过于昂贵.

我四处寻找可以使数据可用且更容易使用的选项,并且已经找到了两个有希望的选择:

  1. AWS Redshift
  2. Hadoop + Hive

我们希望能够使用类似SQL的语法来分析我们的数据,并且我们希望接近实时访问数据(几分钟的延迟很好,我们只是不想等待整个MongoDB一夜之间同步).

据我所知,对于选项2,可以使用此https://github.com/mongodb/mongo-hadoop将数据从MongoDB移动到Hadoop集群.

我看起来很高,但我很难找到类似的解决方案,让MongoDB进入AWS Redshift.从亚马逊的文章来看,似乎正确的方法是使用AWS Kinesis将数据导入Redshift.也就是说,我找不到任何类似的东西的例子,我找不到任何库或连接器来将数据从MongoDB移动到Kinesis流中.至少没有什么看起来很有希望.

有没有人做过这样的事情?

hadoop mongodb amazon-web-services amazon-redshift

6
推荐指数
1
解决办法
1442
查看次数

Googlescript和AWS开发工具包

我想通过GoogleScript中的代码与Google Sheet中的Amazon Web Services DynamoDB进行交互。但是,我无法弄清楚如何集成AWS开发工具包。我希望避免编写一个库来通过AWS HTTP API处理集成,因为该SDK有JavaScript和Java SDK。救命?

(我已经做了一些相当广泛的Google和Stack Overflow搜索。 是我找到的最接近答案的东西,但这就是Google App Engine,而不是Google Apps脚本。)

谢谢!

amazon-web-services google-apps-script amazon-dynamodb aws-sdk

5
推荐指数
2
解决办法
2227
查看次数

将aws/aws-sdk-php与Google云端存储配合使用

Google云端存储(与Google云端硬盘不同)似乎与S3 API兼容:

https://developers.google.com/storage/docs/migrating#migration-simple

有谁知道我是否可以使用AWS/AWS-SDK-PHP(https://packagist.org/packages/aws/aws-sdk-php)封装,并配置它连接到我的谷歌云存储,而不是AWS S3?

我试过以下代码:

<?php 
use Aws\S3\S3Client;
use League\Flysystem\Filesystem;
use League\Flysystem\Adapter\AwsS3 as Adapter;
require_once 'vendor/autoload.php';
error_reporting(E_ALL & ~E_NOTICE);
ini_set('display_errors', 1);


$client = S3Client::factory(array(
    'key'    => 'MY_GCS_KEY',
    'secret' => 'MY_GCS_SECRET',
    'endpoint' => 'storage.googleapis.com'
));
$filesystem = new Filesystem(new Adapter($client, 'MY_GCS_BUCKET'));
$filesystem->write('filename.txt', 'contents');
Run Code Online (Sandbox Code Playgroud)

但这给了我一个错误:

致命错误:未捕获的AWS\S3 \异常\ InvalidAccessKeyIdException:AWS错误代码:InvalidAccessKeyId,状态代码:403,AWS请求ID:BF7C1317719A4C67,AWS错误类型:客户,AWS错误消息:您提供的AWS访问密钥ID不存在我们的记录,用户代理:AWS-SDK-PHP2/2.6.15狂饮/ 3.9.2卷曲/ 7.32.0 PHP/5.5.4-1 + debphp.org〜铆足了劲+ 1扔在/ var/WWW/prudhub第91行/dev/vendor/aws/aws-sdk-php/src/Aws/Common/Exception/NamespaceExceptionFactory.php

任何人都知道如何或者我是否可以正确设置aws/aws-sdk-php包以连接到Google云端存储?

编辑

以下是使其工作的代码:

<?php 
use Aws\S3\S3Client;
use League\Flysystem\Filesystem;
use League\Flysystem\Adapter\AwsS3 as Adapter;
require_once 'vendor/autoload.php';


$client = S3Client::factory(array(
    'key'    => 'MY_GCS_KEY',
    'secret' => 'MY_GCS_SECRET',
    'base_url' …
Run Code Online (Sandbox Code Playgroud)

php amazon-s3 amazon-web-services google-cloud-storage aws-sdk

3
推荐指数
1
解决办法
904
查看次数