我在将图像复制到 Amazon S3 时遇到问题
我正在使用PHP复制功能将图像从一台服务器复制到另一台服务器。它适用于Go-Daddy主机服务器。但它不适用于 S3。以下是不起作用的代码:
$strSource =http://img.youtube.com/vi/got6nXcpLGA/hqdefault.jpg
copy($strSource ,$dest);
$dest是我的存储桶 URL,其中包含用于上传图像的文件夹
我不确定您是否可以像那样将映像复制到 AWS。我建议使用与 AWS 服务器通信的库,然后运行您的命令。
检查这个 - http://undesigned.org.za/2007/10/22/amazon-s3-php-class
它为 AWS 提供了REST
实施。
例如,如果要复制图像,可以执行以下操作:
$s3 = new S3($awsAccessKey, $awsSecretKey);
$s3->copyObject($srcBucket, $srcName, $bucketName, $saveName, $metaHeaders = array(), $requestHeaders = array());
$awsAccessKey
和$awsSecretKey
是 AWS A/C 的私有密钥。
检查一下,希望它有所帮助。
不确定您是否使用过 AWS PHP SDK,但在这种情况下,AWS 开发工具包可以派上用场。 开发工具包可与 IAM 角色结合使用,以授予对 S3 存储桶的访问权限。 这些是步骤:
- 修改代码以使用 PHP SDK 上传文件(如果需要)。
- 创建 IAM 角色并向该角色授予对所需 S3 存储桶的权限。
- 启动 EC2 实例时,请指定要使用该角色。
然后,您的代码将自动使用您授予该角色的权限。 IAM 为实例提供开发工具包使用的临时凭证。 这些凭证由 IAM 和 EC2 自动轮换。
这是我从
文档中复制 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;
}