如何将映像复制到 Amazon S3


How to copy an image to Amazon S3?

我在将图像复制到 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 存储桶的访问权限。 这些是步骤:

  1. 修改代码以使用 PHP SDK 上传文件(如果需要)。
  2. 创建 IAM 角色并向该角色授予对所需 S3 存储桶的权限。
  3. 启动 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;
    }