尝试创建SNSClient
对象时出现以下错误。
InstanceProfileCredentialsException in InstanceMetadataClient.php line 85: Error retrieving credentials from the instance profile metadata server. When you are not running inside of Amazon EC2, you must provide your AWS access key ID and secret access key in the "key" and "secret" options when creating a client or provide an instantiated Aws\Common\Credentials\CredentialsInterface object. (Client error response
[status code] 404
[reason phrase] Not Found
[url] http://169.254.169.254/latest/meta-data/iam/security-credentials/)
我不明白为什么当我aws.php
在我的 laravel 设置的 config 文件夹中时出现此错误。这里存储了访问密钥和秘密密钥。
我真的不喜欢这样,因为这会导致我的凭据存储在其他人可能 SFTP 进入的文件夹设置中。
我还拥有服务器根文件夹中的 aws 凭据和配置文件,路径如下:~/.aws/
但由于某种原因,应用程序不满意。
这是我的代码的样子:
public function about(){
// Instantiate a client with the credentials from the project1 profile
$snsClient = SnsClient::factory(array(
'profile' => 'default',
'region' => 'us-west-2',
));
// Get the application's endpoints
$iOS_AppArn = "arn:aws:sns:us-west-2:235418406768:app/APNS_SANDBOX/ClashTarget";
$iOS_model = $snsClient->listEndpointsByPlatformApplication(array('PlatformApplicationArn' => $iOS_AppArn));
}
请注意,我使用的default
配置文件应该从存储配置和凭据文件的根 aws 目录获取凭据。
现在,作为一个临时解决方案,我这样做了:http: //blog.ianholden.com/aws-s3-with-php-on-apache/这使一切正常,但我不高兴我的凭证密钥存在于应用程序代码。感觉不对。
有人可以指导我解决这个错误吗?
更新1:评论:〜/ .aws /的config内容是什么~/.aws/
这是文件夹
中配置文件的内容
[default]
output = json
region = us-west-2