shi*_*nax 2 php zend-framework amazon-web-services amazon-ses 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,发现客户端似乎是正确创建的,错误来自于尝试实际发送电子邮件.
小智 12
诀窍是'profile' => 'default'从工厂参数中删除,如果定义了这个,我们就不能使用自定义凭证文件或环境变量.没有记录,但只是工作.
我正在使用Sns和Sdk v3.
<?php
use Aws\Credentials\CredentialProvider;
$profile = 'sns-reminders';
$path = '../private/credentials';
$provider = CredentialProvider::ini($profile, $path);
$provider = CredentialProvider::memoize($provider);
$sdk = new Aws\Sdk(['credentials' => $provider]);
$sns = $sdk->createSns([
// 'profile' => $profile,
'region' => 'us-east-1',
'version' => 'latest',
]);
Run Code Online (Sandbox Code Playgroud)
shi*_*nax -2
好的,我设法修复它。我无法读取凭据文件,但这不完全是我的想法。发生的情况是,实际的客户端已成功创建,但 try/catch 还包含了 sendEmail。这就是失败的地方。关于使用显式凭据创建客户端:如果您指定区域,它将尝试读取凭据文件。
关于 SendEmail,这是对我有用的语法,我也在 AWS 文档网站中找到了另一种语法,但该语法失败了。它一定是用于较旧的 SDK。
| 归档时间: |
|
| 查看次数: |
1351 次 |
| 最近记录: |