标签: aws-php-sdk

如何修复'我们计算的请求签名与签名'错误不匹配?

我已经在网上搜索了两天以上,可能已经浏览了大多数在线记录的场景和解决方法,但到目前为止我没有任何作用.

我在运行PHP 5.3的AWS SDK for PHP V2.8.7上.我正在尝试使用以下代码连接到我的S3存储桶:

// Create a `Aws` object using a configuration file

        $aws = Aws::factory('config.php');

        // Get the client from the service locator by namespace
        $s3Client = $aws->get('s3');

        $bucket = "xxx";
        $keyname = "xxx";

        try {
            $result = $s3Client->putObject(array(
                'Bucket'        =>      $bucket,
                'Key'           =>      $keyname,
                'Body'          =>      'Hello World!'
            ));
            $file_error = false;
        } catch (Exception $e) {
            $file_error = true;
            echo $e->getMessage();
            die();
        }
        //  
Run Code Online (Sandbox Code Playgroud)

我的config.php文件如下:

<?php

return array(
    // Bootstrap the configuration file with …
Run Code Online (Sandbox Code Playgroud)

amazon-s3 amazon-web-services aws-php-sdk

53
推荐指数
18
解决办法
8万
查看次数

AWS S3通过代理获取图像 - PHP

我在S3上有一个桶,我已经上传了图像.现在我使用AWS-SDK获取图像.现在我想通过代理绕过图像

$client = new Aws\S3\S3Client([
            'version'     => 'latest',
            'region'      => 'us-east-1',
            'debug'       => TRUE, // enable debug info
            'stats'       => TRUE, // enable stats
            '@http'  => [
            'proxy' => 'http://192.168.16.1:10'
            ],
            'credentials' => [
                'key'    => base64_decode(KEY),
                'secret' => base64_decode(SECRET)
            ]
        ]);
Run Code Online (Sandbox Code Playgroud)

这是我的存储桶设置,当我执行wireshark时,它仍然在请求中显示AWS IP地址.

任何人都可以告诉我如何使用代理绕过S3图像.

php amazon-s3 aws-php-sdk aws-sdk

14
推荐指数
1
解决办法
787
查看次数

AWS Mobile Push,用户可以登录多个设备

我们的应用程序正在为Android和iOS开发.我们正在使用AWS SNS Mobile Push将消息推送到GCM和APNS.后端是PHP,因此它使用AWS PHP SDK.

到目前为止,我们的系统已经为每个用户节省了1个端点ARN.然后,我们直接向此端点ARN广播移动推送消息.

问题:

如果用户在多个设备上登录我们的应用程序并且没有收到所有这些设备上的推送通知,那将会很奇怪.所以 - 我们将不得不改变一些东西.

在AWS Mobile Push中,如何处理"一个用户,多个设备(以及可能的多个平台)"的概念?

我们的系统是否必须维护用户到端点ARN的一对多关联(即开始为每个用户保存多个EndpointARN,以便我们可以按顺序将消息推送到所有用户)?

或者我应该研究移动推送提供的"主题"概念(我在这里感到困惑 - 有些人每个用户使用一个主题,然后将消息推送到主题本身吗?)..

最后-我想作为奖金的问题-是否正常使用PHP SDK AWS,包括两国人民APNS ,并 GCM在属性中的Message有效载荷数组?我们没有跟踪"每个用户使用哪种类型的设备".我们刚刚为每个用户保存了一个端点ARN.我猜想当我们将消息推送到端点时,我们的想法就是覆盖我们所有的平台基础(APNS,APNS_SANDBOX,GCM).

我一直在搜索"使用多个设备的一个用户"主题:使用AWS SNS进行移动推送,实际上结果非常无益.

请帮忙 :(

谢谢!

push-notification amazon-web-services amazon-sns aws-php-sdk aws-sdk

11
推荐指数
1
解决办法
943
查看次数

如何使用Amazon AWS PHP SDK在区域之间复制S3对象?

我正在尝试使用Amazon AWS PHP SDK v3在两个不同区域的两个存储桶之间复制Amazon AWS S3对象.这将是一次性过程,所以我不需要cross-region replication.试图使用,copyObject()但没有办法指定该地区.

$s3->copyObject(array(
    'Bucket'     => $targetBucket,
    'Key'        => $targetKeyname,
    'CopySource' => "{$sourceBucket}/{$sourceKeyname}",
));
Run Code Online (Sandbox Code Playgroud)

资料来源:http: //docs.aws.amazon.com/AmazonS3/latest/dev/CopyingObjectUsingPHP.html

amazon-s3 amazon-web-services aws-php-sdk

9
推荐指数
1
解决办法
1182
查看次数

无法从 /.aws/credentials 读取凭据

我正在尝试为 codeigniter 集成 AWS PHP SDK

但其显示错误如下

An uncaught Exception was encountered
Type: Aws\Exception\CredentialsException

Message: Cannot read credentials from /.aws/credentials

Filename: /var/www/html/aws/Aws/Credentials/CredentialProvider.php
Run Code Online (Sandbox Code Playgroud)

并且在 cli 上收到错误为 -bash: /root/.aws/credentials: Permission denied

因此,在此之后,我已允许... cli 错误已消失,但 php 错误无法从 /.aws/credentials 读取凭据仍然存在。

请帮助解决这个问题。

谢谢!

amazon-s3 amazon-web-services aws-php-sdk aws-sdk

9
推荐指数
1
解决办法
7432
查看次数

为什么aws.phar运行一次然后不会再次加载?

我在使用phar文件的弹性beanstalk应用程序中为php安装了aws sdk:

require_once __DIR__ . '/../AWS-SDK/aws.phar';
Run Code Online (Sandbox Code Playgroud)

当我第一次运行脚本时,它成功了!但是当我再试一次时,我收到了这个错误:

Warning: require(phar://aws.phar/aws-autoloader.php): failed to open stream: phar error: invalid url or non-existent phar "phar://aws.phar/aws-autoloader.php" in /var/app/current/src/utils/AWS-SDK/aws.phar on line 3 Fatal error: require(): Failed opening required 'phar://aws.phar/aws-autoloader.php' (include_path='.:/usr/share/pear:/usr/share/php') in /var/app/current/src/utils/AWS-SDK/aws.phar on line 3
Run Code Online (Sandbox Code Playgroud)

如何解决问题?

php amazon-web-services phar aws-php-sdk amazon-elastic-beanstalk

8
推荐指数
2
解决办法
2463
查看次数

从实例配置文件元数据服务器检索凭据时出错。无法连接到 169.254.169.254 端口 80:没有到主机的路由

我正在尝试使用 Route53 和 aws-php-sdk 创建一个子域。

但我一次又一次地收到此错误:

[2017-06-16 12:17:00] local.ERROR:Aws\Exception\CredentialsException:从实例配置文件元数据服务器检索凭证时出错。

(cURL错误7:无法连接到169.254.169.254端口80:没有到主机的路由(参见http://curl.haxx.se/libcurl/c/libcurl-errors.html))在/var/www/html/测试/供应商/aws/aws-sdk-php/src/Credentials/InstanceProfileProvider.php:79

我正在使用 aws-sdk-php 版本:3.29 "aws/aws-sdk-php": "^3.29"

这是我写的代码

use Aws\Route53\Route53Client;

$client = Route53Client::factory(array(
        'region'  => 'us-east-1',
        'version' => '2013-04-01',
        'credentials  ' => array('key'=>'AWS_KEY',
                'secret'=>'AWS_SECRET_KEY')
      ));


      $result = $client->changeResourceRecordSets(array(
        // HostedZoneId is required
        'HostedZoneId' => 'ROUTER_53_HOSTED_ZONE_ID',
        // ChangeBatch is required
        'ChangeBatch' => array(
                // Changes is required
                'Changes' => array(
                    array(
                        // Action is required
                        'Action' => 'CREATE',
                        // ResourceRecordSet is required
                        'ResourceRecordSet' => array(
                            // Name is required
                            'Name' => …
Run Code Online (Sandbox Code Playgroud)

aws-php-sdk

8
推荐指数
1
解决办法
1万
查看次数

AWS Elastic Beanstalk - 环境必须具有与其关联的实例配置文件

我正在开发一个项目,该项目将在 AWS 弹性 beantalk 中以编程方式创建环境。我正在使用适用于 PHP 版本 3 的 AWS 开发工具包。

我的脚本创建了环境。在 AWS 控制台中,环境显示为灰色并表示它已终止。查看事件显示“环境必须具有与之关联的实例配置文件”的错误。

链接到事件错误屏幕截图

我曾尝试使用两个不同用户的访问密钥和秘密。一位用户拥有 AmazonEC2FullAccess、IAMFullAccess 和 AWSElasticBeanstalkFullAccess 权限。另一个用户具有 AWSAdmin 权限。两个用户都可以从 AWS 控制台创建环境。

我不知道如何将实例配置文件与 SDK 中的环境相关联。我没有看到使用 createEnvironment 函数执行此操作的选项:createEnvironment 语法 在创建 ElasticBeanstalkClient 对象的实例时,我也没有看到执行此操作的方法。

我的代码如下。谢谢。

<?php
    require 'vendor/autoload.php';
    use Aws\ElasticBeanstalk\ElasticBeanstalkClient;
    use Aws\Credentials\Credentials;

    $key = '***key***';
    $secret = '***secret***';

    $credentials = new Credentials($key, $secret);
    $ebClient = new ElasticBeanstalkClient([
        'region'  => 'us-east-2',
        'version' => '2010-12-01',
        'credentials' => $credentials
    ]);

    $ebEnv = $ebClient->createEnvironment([
        'ApplicationName' => 'app-from-sdk',
        'EnvironmentName' => 'env-from-sdk-1',
        'CNAMEPrefix'     => 'sdk-test1',
        'Description'     => …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services aws-php-sdk amazon-elastic-beanstalk aws-sdk

8
推荐指数
1
解决办法
4716
查看次数

使用AWS SNS与直接使用Apple的APNS的好处

我有一个应用程序逻辑,要求我将用户设备分段为订阅不同类型的"频道/主题"的组.

然后,我想向特定主题或频道的所有订阅者发送广播消息.

我可以拥有多达500,000个主题或频道,每个频道有多达20,000个订阅者.

由于AWS SNS每个频道限制3,000个主题和10,000个订阅者,因此他们的FAQ建议您使用直接寻址,这意味着我自己逐个发送.如果我们的产量很高,他们建议我们也走这条路.

AWS SNS没有批量发布功能,所以我实际上需要为每个订阅者发出一个SNS发布请求,这可以挂载到数万个请求.

所以我发现AWS-PHP-SDK是建立在Guzzle之上的,并且支持通过多卷曲进行并行请求处理,但即便如此,如果我同时运行20个连接,我仍然需要提出这么多请求...是那甚至高效吗?如果我有大量的话,为什么这是推荐的方式呢?

还有另一个问题,如果我需要逐个向每个用户发送相同的消息,为什么要使用SNS?

Apple APNS服务通过打开TCP连接和写入请求的字节来工作,每个请求都有不同的订阅者详细信息,但我可以编写字节而不需要构建PHP请求和处理20个进程的开销.将消息传递给所有主题/频道订阅者的方式不会更快吗?

我对这类案例中AWS SNS服务的权衡和附加价值感到有些困惑.我非常感谢有过这方面经验的人或AWS员工的一些见解.

谢谢

php amazon-web-services apple-push-notifications amazon-sns aws-php-sdk

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

如何使用 php aws sdk 复制整个 s3 文件夹?

我想在 aws s3 存储桶中复制一个文件夹。我能够复制文件,但要求是我应该能够使用其他名称复制整个 s3 文件夹。示例:如果文件夹名称是,project1我需要将其复制project1-copy到名为 的存储桶中my_bucket。我已经尝试过下面的代码。

$s3->copyObject([
    'Bucket'     => my_bucket,
    'Key'        => "project-copy",
    'CopySource' => "my_bucket/project1",
]);
Run Code Online (Sandbox Code Playgroud)

并且也反转为

$s3->copyObject([
    'Bucket'     => my_bucket,
    'Key'        => "project1",
    'CopySource' => "my_bucket/project-copy",
]);
Run Code Online (Sandbox Code Playgroud)

在这两种情况下我都收到错误

在“ https://s3.us-east-1.amazonaws.com/my_bucket/project1/ ”上执行“CopyObject”时出错;AWS HTTP 错误:客户端错误:PUT https://s3.us-east-1.amazonaws.com/my_bucket/project1/导致 404 Not Found响应:NoSuchKey指定的密钥不存在。34/F992013F6C3125(截断...)NoSuchKey(客户端):指定的密钥不存在。- NoSuchKey指定的密钥不存在。34/F992013F6C312535YLrCcHhYJzimIKoR2knMvD3smhUbH75piDYTIx5SpKCPNkeWIifaYhKgezxnhpZzOHflzQngTnE=上传时出错

我确信我使用的是正确的区域和文件夹名称以及存储桶名称。仍然出现上述错误。我该如何解决这个问题?

api copy amazon-s3 amazon-web-services aws-php-sdk

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