标签: aws-php-sdk

无论如何将AWS基础架构从一个区域移动到另一个区域?

我有,

  • EC2 x 8
  • AMIs x 2
  • RDS x 1
  • ELBs x 2
  • SG(安全组)x 8
  • VPC x 1

东京地区.但我想把我的整个设置移到俄勒冈州.有没有可以用来做这个的工具?

错误地,这个问题在其中有"移动".但我期待这个工具能够做复制.

amazon-ec2 amazon-web-services ec2-ami amazon-elb aws-php-sdk

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

如何通过 AWS PHP SDK 获取用户 ID 或 AWS 账户 ID

有没有办法获取 UserId 或又名 AWS 账户 ID?

我已检查文档,但无法找到(...或者可能它不存在...)返回 UserId 的方法调用。

php amazon-ec2 amazon-web-services aws-php-sdk

2
推荐指数
1
解决办法
5276
查看次数

将AMI从单独的帐户复制到单独的区域

我一直在尝试将AMI从我的AWS账户A(ap-southeast-2)迁移到账户B(us-east-1).

在我的帐户中,我已将启动权限授予我的帐户A.

但是,当我在代码下运行时,

$result = $this->destination_ec2_client->copyImage(
          array(
               'SourceRegion' => $this->source_region,
               'SourceImageId' => $image_id,
               'Name' => $amis[0]['Name']
          ));
Run Code Online (Sandbox Code Playgroud)

当我通过文档运行上面的代码时,调用应该从源区域复制AMI并将其复制到目标区域.

但是,最终输出是错误的.错误在AMI描述失败的控制台上显示.

State Reason: AMI ownership mismatch
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?我是否正确理解了机制?

php amazon-ec2 amazon-web-services aws-php-sdk

2
推荐指数
1
解决办法
1101
查看次数

如何将ContentType添加到AWS PHP SDK MultiPartUploader

我已经搜索了如何将简单的ContentType元数据添加到AWS PHP SDK中的MultiPartUploader.该文档明确提及如何做到这一点的PutObject,但没有提及如何使用MultiPartUploader做到这一点.

我已经尝试了我可以在网上找到的每种方法,但没有任何工作,我的文件总是被设置为application/octet-stream.

有人对这个有经验么?这是我的代码:

$uploader = new MultipartUploader($this->s3, $local_path, [
    'bucket'      => env('AWS_BUCKET'),
    'key'         => $path .'/'. $filename,
    'contentType' => 'video/mp4',  //  have tried this
    'metaData'    => [             //  have tried this (all well as all variations of caps)
        'contentType' => 'video/mp4',
    ]
]);

do 
{
    try 
    {
        $result = $uploader->upload();
    } 
    catch (MultipartUploadException $e) 
    {
        $uploader = new MultipartUploader($this->s3, $local_path, [
            'state' => $e->getState(),
        ]);
    }
} 
while (!isset($result));
Run Code Online (Sandbox Code Playgroud)

通过MultiPartUploader类阅读后,它看起来像contentType中应自动设置的,但它没有被设置.

我正在使用SDK的v3

任何建议将不胜感激!

php amazon-web-services aws-php-sdk

2
推荐指数
1
解决办法
610
查看次数

无法将我的凭据传递给AWS PHP SDK

我安装了AWS PHP SDK并尝试使用SES.我的问题是,它(显然)~/.aws/credentials无论我做什么都试图阅读.我目前有这个代码:

$S3_AK = getenv('S3_AK');
$S3_PK = getenv('S3_PK');
$profile = 'default';
$path = '/home/franco/public/site/default.ini';
$provider = CredentialProvider::ini($profile, $path);
$provider = CredentialProvider::memoize($provider);
$client = SesClient::factory(array(
      'profile' => 'default',
      'region' => 'us-east-1',
      'version' => "2010-12-01",
      'credentials' => [
        'key'    => $S3_AK,
        'secret' => $S3_PK,
      ]
  )); 
Run Code Online (Sandbox Code Playgroud)

我仍然得到"无法读取来自〜/ .aws/credentials的凭据"错误(过了一段时间).

当然,我尝试了'凭证'=> $提供商,这是一个想法,但由于它不起作用我恢复了硬编码凭证.我已经抛弃了$ S3_AK和$ S3_PK并且它们很好,我实际上正在为S3使用它们,但是我有Zend的包装器.我已经尝试了〜/ .aws/credentials(没有".ini")来获得相同的结果.这两个文件都拥有777权限.

奇怪的信息:我必须将内存限制设置为-1,这样就可以var_dump异常.异常的html大约是200mb.

我更喜欢使用环境变量,尽管凭证文件很好.我只是不明白为什么它似乎试图读取文件,即使我已经硬编码凭证.

编辑:所以一位朋友告诉我这个,我删除了配置文件,并修改了try/catch,发现客户端似乎是正确创建的,错误来自于尝试实际发送电子邮件.

php zend-framework amazon-web-services amazon-ses aws-php-sdk

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

PHP AWS SDK 创建 S3Client 时发生致命错误

尝试使用适用于 PHP 的 AWS 开发工具包来列出存储桶,但在设置 S3Client 后我不断收到此错误,如下所示:

<?php  
require getcwd() . '/aws.phar' /*v3 of the SDK*/;

use Aws\S3\S3Client;
use Aws\Exception\AwsException;

$credentials = new Aws\Credentials\Credentials('I put my', 'credentials here');

$s3 = new Aws\S3\S3Client([
    'region' => 'us-east-1', /*also tried different regions*/
    'version' => '2006-03-01', /*also tried latest*/
    'credentials' => $credentials /*have also tried putting credentials here*/
]);

$s3->listBuckets(); /*still the same error even if I remove this line */ ?>
Run Code Online (Sandbox Code Playgroud)

如果我至少没有填写区域、版本和凭据选项,SDK 实际上会返回一个错误,告诉我填写它们。这是上面代码返回的错误:

致命错误:未捕获错误:调用 phar:///var/www/mail/aws.phar/JmesPath/Lexer.php:343 中未定义的函数 JmesPath\mb_strlen() 堆栈跟踪:#0 phar:///var/ www/mail/aws.phar/JmesPath/Parser.php(76): JmesPath\Lexer->tokenize() #1 phar:///var/www/mail/aws.phar/JmesPath/AstRuntime.php(42) …

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

2
推荐指数
1
解决办法
974
查看次数

Laravel Aws\Laravel\AwsServiceProvider::class 未找到

我想在 laravel v7 中使用 aws sdk 来使用 AWS QLDB 客户端 我已遵循此处编写的所有过程。我收到这个错误

Aws\Laravel\AwsServiceProvider::class 未找到

amazon-web-services laravel aws-php-sdk amazon-qldb

2
推荐指数
1
解决办法
2697
查看次数

如何为Amazon AWS SDK for PHP设置http超时

我正在使用Amazon AWS SDK for PHP(即2.7.16版)将文件上传到S3存储桶.如何为http/tcp操作(连接,上传等)设置超时?虽然我已经google了很多,但我无法弄清楚如何.

我正在使用的示例代码:

$awsS3Client = Aws\S3\S3Client::factory(array(
        'key' => '...',
        'secret' => '...'
    ));

$awsS3Client->putObject(array(
            'Bucket' => '...',
            'Key'    => 'destin/ation.file',
            'ACL'    => 'private',
            'Body'   => 'content'
        ));
Run Code Online (Sandbox Code Playgroud)

所以我想在putObject()通话时设置超时.

谢谢!

amazon-s3 aws-php-sdk

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

AWS IAM角色和策略简单英文?

我一直在使用AWS PHP SDK,除了IAM角色和权限之外,我似乎得到了所有东西.

:是否有人可以在IAM角色是如何工作的,并解释下列条款最简单的术语解释给我听StatementId,Action,ARN而且最重要的Principal用简单的英语?

为了让您了解我的困惑,这是我最近遇到的一个问题.我正在尝试创建一个API网关,其中Resource的方法触发Lambda函数.直到我复制粘贴这一点它才能工作:

$lambdaClient->addPermission([
                'FunctionName' => 'fn name',
                'StatementId' => 'ManagerInvokeAccess',
                'Action' => 'lambda:InvokeFunction',
                'Principal' => 'apigateway.amazonaws.com',
            ]);
Run Code Online (Sandbox Code Playgroud)

但是在其他一些帖子中有人建议使用以下内容:

const permissions = {
    FunctionName: target,
    StatementId: 'api-gateway-execute',
    Action: 'lambda:InvokeFunction',
    Principal: 'apigateway.amazonaws.com',
    SourceArn: 'arn:aws:execute-api:' + nconf.get('awsRegion') + ':' + nconf.get('awsAccountId') + ':' + nconf.get('apiGatewayId') + '/*'};
Run Code Online (Sandbox Code Playgroud)

为什么第一个不包含任何帐户信息但第二个呢?还有另一个人粘贴了一些完全不同的东西来为工作.在最后一个例子中有很多键(比如"Fn :: Join"),我甚至不知道从哪里开始以及它做什么.

如何找出在哪里找到这些政策?我们只是从某个地方复制粘贴它们是否有办法确定它们.如果是这样,必须始终指定哪些键.

任何帮助将不胜感激,因为我现在完全糊涂了.

amazon-web-services amazon-iam aws-php-sdk

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

DynamoDB 列表数据类型问题

根据此文档,DynamoDB 支持映射 (M) 和列表 (L) 类型,但是当我尝试创建具有 (L) 类型的表时,出现错误:

ValidationException(客户端):检测到 1 个验证错误:“attributeDefinitions.2.member.attributeType”处的值“L”未能满足约束:成员必须满足枚举值集:[B、N、S]

ThreadReplyIds属性添加到表信息后会发生这种情况:

[
    'AttributeDefinitions' => [
        [
            'AttributeName' => 'UserId',
            'AttributeType' => 'N',
        ],
        [
            'AttributeName' => 'ThreadReplyIds', // <<---
            'AttributeType' => 'L',
        ],
        [
            'AttributeName' => 'Title',
            'AttributeType' => 'S',
        ],
    ],
    'KeySchema' => [
        [
            'AttributeName' => 'UserId',
            'KeyType' => 'HASH',
        ],
        [
            'AttributeName' => 'Title',
            'KeyType' => 'RANGE',
        ],
    ],
    'ProvisionedThroughput' => [
        'ReadCapacityUnits' => 5,
        'WriteCapacityUnits' => 5,
    ],
    'TableName' => 'Thread', …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-dynamodb aws-php-sdk

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