无法从php找到aws凭据文件

时间:2016-09-01 02:20:22

标签: php unix amazon-web-services amazon-s3

在PHP文件下面,aws cli s3 copy命令无法正常工作,因为它找不到错误凭据。

但是当它在unix命令行中执行时,它正在工作。

在主目录中拥有aws凭据并为其他用户提供读取权限

private static final String LOGIN_URL = "http://10.0.2.2:8000/mobilevalidator/";

1 个答案:

答案 0 :(得分:0)

使用php时,你应该使用php sdk。

您可以查看here获取凭据的不同和最佳方法

示例 - 如果您的require "#{Rails.root}/lib/query" 文件类似于

credentials

,您的[default] aws_access_key_id = YOUR_AWS_ACCESS_KEY_ID aws_secret_access_key = YOUR_AWS_SECRET_ACCESS_KEY 文件包含

等区域
config

您可以像

一样创建一个简单的S3客户端
[default]
region=us-east-1

如果您没有完整的配置集或想要更改区域,例如

<?php

use Aws\S3\S3Client;

// Instantiate a client with the credentials from the project1 profile
$s3Client = S3Client::factory();

要复制对象,您可以查看copy-object method

// Instantiate a client with the credentials from the project1 profile
$s3Client = S3Client::factory(array(
    'region'  => 'us-west-2',
));

注意:您无需在凭据文件中授予其他权限,请将其保留为

use Aws\S3\S3Client;

$sourceBucket = '*** Your Source Bucket Name ***';
$sourceKeyname = '*** Your Source Object Key ***';
$targetBucket = '*** Your Target Bucket Name ***';
$targetKeyname = '*** Your Target Key Name ***';        

// Instantiate the client.
$s3 = S3Client::factory();

// Copy an object.
$s3->copyObject(array(
    'Bucket'     => $targetBucket,
    'Key'        => $targetKeyname,
    'CopySource' => "{$sourceBucket}/{$sourceKeyname}",
));