Php 在两个不同的aws s3账户之间复制或转移文件
我想将文件从b1 bucket aws s3帐户1传输到b2 bucket aws s3帐户2。 有没有一种方法可以使用aws php sdk实现这一点。Php 在两个不同的aws s3账户之间复制或转移文件,php,amazon-web-services,amazon-s3,Php,Amazon Web Services,Amazon S3,我想将文件从b1 bucket aws s3帐户1传输到b2 bucket aws s3帐户2。 有没有一种方法可以使用aws php sdk实现这一点。 请提供帮助。您需要定义跨帐户IAM/策略,然后使用lambda(或)CLI(或)SDK来执行您希望在资源上执行的任何操作 以下是有关如何为S3访问配置跨帐户IAM的说明。您需要定义跨帐户IAM/策略,然后为您希望在资源上执行的任何操作提供lambda(或)CLI(或)SDK 下面是一个关于如何为S3访问配置跨帐户IAM的示例。首先,使用PHP
请提供帮助。您需要定义跨帐户IAM/策略,然后使用lambda(或)CLI(或)SDK来执行您希望在资源上执行的任何操作
以下是有关如何为S3访问配置跨帐户IAM的说明。您需要定义跨帐户IAM/策略,然后为您希望在资源上执行的任何操作提供lambda(或)CLI(或)SDK
下面是一个关于如何为S3访问配置跨帐户IAM的示例。首先,使用PHP在Amazon S3中复制对象的说明可以在这里找到: 此命令也在存储桶之间工作——甚至在不同区域中的存储桶 然后,要添加在帐户之间复制对象的要求:
- 使用接收帐户中的凭据调用copy命令(这有助于设置默认权限。如果使用其他方法,请确保将
设置为ACL
)bucket owner full control
- 您需要授予对该对象的访问权限。因此,如果您使用凭据从接收帐户复制,则必须授予对接收帐户的访问权限
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"AddPerm",
"Effect":"Allow",
"Principal": "arn:aws:iam::RECEIVING-ACCOUNT-ID:user/USERNAME",
"Action":["s3:GetObject"],
"Resource":["arn:aws:s3:::BUCKET-NAME/*"]
}
]
}
底线:授予对对象的访问权,然后复制对象 首先,在Amazon S3中使用PHP复制对象的说明如下: 此命令也在存储桶之间工作——甚至在不同区域中的存储桶 然后,要添加在帐户之间复制对象的要求:
- 使用接收帐户中的凭据调用copy命令(这有助于设置默认权限。如果使用其他方法,请确保将
设置为ACL
)bucket owner full control
- 您需要授予对该对象的访问权限。因此,如果您使用凭据从接收帐户复制,则必须授予对接收帐户的访问权限
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"AddPerm",
"Effect":"Allow",
"Principal": "arn:aws:iam::RECEIVING-ACCOUNT-ID:user/USERNAME",
"Action":["s3:GetObject"],
"Resource":["arn:aws:s3:::BUCKET-NAME/*"]
}
]
}
底线:授予对对象的访问权,然后复制对象 是的,手术三年后。但是,嘿,也许这会对某人有所帮助——因为其他答案对我来说不太合适 这个URl帮助了很多人: 我在帐户A的源bucket上设置了上述bucket策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::AccountB_ID:user/AccountB_UserName"
},
"Action": [
"s3:GetObject",
"s3:ReplicateObject"
],
"Resource": [
"arn:aws:s3:::AccountA_BucketName/*"
]
}
]
}
注意:ACCOUNTB_ID是ACCOUNTB的“AWS帐户ID”。我在IAM管理控制台-左侧导航窗格底部找到了我的
然后,我对AccountB_用户名设置了一个策略,我在PHP中使用了该用户名的凭据
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:ReplicateObject"
],
"Resource": "arn:aws:s3:::AccountA_BucketName/*"
}
]
}
最后,由于bucket位于不同的区域,我需要在PHP中使用MultiRegionClient
$s3Client = new \Aws\S3\S3MultiRegionClient($options);
然后使用
$s3Client->copyObject([
'Bucket' => $destBucket,
'Key' => $destKey,
'CopySource' => "{$srcBucket}/{$srcKey}",
]);)
嗯。是的,手术三年后。但是,嘿,也许这会对某人有所帮助——因为其他答案对我来说不太合适 这个URl帮助了很多人: 我在帐户A的源bucket上设置了上述bucket策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::AccountB_ID:user/AccountB_UserName"
},
"Action": [
"s3:GetObject",
"s3:ReplicateObject"
],
"Resource": [
"arn:aws:s3:::AccountA_BucketName/*"
]
}
]
}
注意:ACCOUNTB_ID是ACCOUNTB的“AWS帐户ID”。我在IAM管理控制台-左侧导航窗格底部找到了我的
然后,我对AccountB_用户名设置了一个策略,我在PHP中使用了该用户名的凭据
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:ReplicateObject"
],
"Resource": "arn:aws:s3:::AccountA_BucketName/*"
}
]
}
最后,由于bucket位于不同的区域,我需要在PHP中使用MultiRegionClient
$s3Client = new \Aws\S3\S3MultiRegionClient($options);
然后使用
$s3Client->copyObject([
'Bucket' => $destBucket,
'Key' => $destKey,
'CopySource' => "{$srcBucket}/{$srcKey}",
]);)
嗯