我在将图像复制到 Amazon S3 时遇到问题
我正在使用 PHP 复制功能将图像从一台服务器复制到另一台服务器..它适用于 go-daddy 主机服务器。但它不适用于 S3。这是不起作用的代码:
$strSource =http://img.youtube.com/vi/got6nXcpLGA/hqdefault.jpg
copy($strSource ,$dest);
$dest 是我的存储桶 url,其中包含用于上传图像的文件夹
我不确定您是否可以像那样将图像复制到 AWS。我建议使用与 AWS 服务器对话的库,然后运行您的命令。
检查这个 - http://undesign.org.za/2007/10/22/amazon-s3-php-class
它REST
为 AWS 提供了一个实现。
例如,如果要复制图像,可以执行以下操作:
$s3 = new S3($awsAccessKey, $awsSecretKey);
$s3->copyObject($srcBucket, $srcName, $bucketName, $saveName, $metaHeaders = array(), $requestHeaders = array());
$awsAccessKey
并且$awsSecretKey
是 AWS a/c 的密钥。
检查一下,希望它有所帮助。
这是我从文档中复制 S3 存储桶中的对象的示例
public function copyObject($sSourceKey, $sDestKey)
{
$this->checkKey($sSourceKey);
$this->checkKey($sDestKey);
$bRet = false;
// http://docs.aws.amazon.com/aws-sdk-php-2/latest/class-Aws.S3.S3Client.html#_copyObject
try {
$response = $this->_oS3Client->copyObject(
array(
'Bucket' => $this->getBucketName(),
'Key' => $sDestKey,
'CopySource' => urlencode($this->getBucketName() . '/' . $sSourceKey),
)
);
if (isset($response['LastModified'])) {
$bRet = true;
}
} catch (Exception $e) {
$GLOBALS['error'] = 1;
$GLOBALS["info_msg"][] = __METHOD__ . ' ' . $e->getMessage();
$bRet = false;
}
return $bRet;
}
不确定您是否使用过AWS PHP 开发工具包,但 AWS 开发工具包可以在这种情况下派上用场。SDK 可以与 IAM 角色结合使用,以授予对您的 S3 存储桶的访问权限。这些是步骤:
然后您的代码将自动使用您授予该角色的权限。IAM 为开发工具包使用的实例提供临时凭证。IAM 和 EC2 会自动为您轮换这些凭证。