You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AzCopy从S3迁移至ADLS Gen2遇PUT权限错误求助

问题:AzCopy从S3迁移到ADLS Gen2时出现CannotVerifyCopySource 403错误

使用AzCopy将Amazon S3数据迁移至Azure Data Lake Storage Gen2时,触发CannotVerifyCopySource 403 Forbidden错误,提示缺少PUT权限,但已完成以下配置:

  • 为ADLS生成全权限SAS令牌
  • 配置了AWS IAM策略(权限看似充足)
  • 已在命令行设置AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY环境变量

已配置内容

环境变量

set AWS_ACCESS_KEY_ID=123
set AWS_SECRET_ACCESS_KEY=ABC

AWS IAM策略

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetBucketLocation"
            ],
            "Resource": "arn:aws:s3:::s3_bucket"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": "arn:aws:s3:::s3_bucket/dir/profiles/*"
        }
    ]
}

执行的AzCopy命令

C:\Users\[user]>azcopy copy "https://s3.eu-west-1.amazonaws.com/s3_bucket/dir/dir/dir/dir/" "https://[stg_container_name].blob.core.windows.net/raw-test?[SASTOKEN]" --recursive=true

关键错误日志

INFO: Authentication failed, it is either not correct, or expired, or does not have the correct permission PUT https://[stg_container_name].blob.core.windows.net/raw-test/2024/profiledata_GB_2024_06.csv.gz

RESPONSE 403: 403 Forbidden
ERROR CODE: CannotVerifyCopySource

<?xml version="1.0" encoding="utf-8"?><Error><Code>CannotVerifyCopySource</Code><Message>Forbidden
RequestId:5ae5e3b8-401e-0063-7b44-63ea97000000
Time:2025-01-10T09:46:44.2555118Z</Message></Error>

2025/01/10 10:22:33 ERR: [P#0-T#2] COPYFAILED: https://s3.eu-west-1.amazonaws.com/s3_bucket/dir/dir/dir/2024/profiledata_GB_2024_31.csv.gz : 403 : 403 Forbidden. When Staging block from URL.

排查与解决步骤

1. 修正S3 IAM策略的资源路径匹配

你的IAM策略中GetObject的资源路径是arn:aws:s3:::s3_bucket/dir/profiles/*,但实际迁移的S3对象路径是s3_bucket/dir/dir/dir/dir/2024/...,路径完全不匹配。需要调整策略资源路径覆盖目标对象:

{
    "Effect": "Allow",
    "Action": [
        "s3:GetObject"
    ],
    "Resource": "arn:aws:s3:::s3_bucket/dir/dir/dir/dir/*"
}

若允许,也可使用更宽泛的路径:arn:aws:s3:::s3_bucket/dir/*

2. 确保AWS认证无冲突

AzCopy优先使用环境变量,但如果本地存在~/.aws/credentials配置文件,可能导致认证冲突。处理方式:

  • 临时重命名或清理~/.aws/credentials文件
  • 执行命令前重新设置环境变量并确保生效:
set AWS_ACCESS_KEY_ID=你的实际密钥ID
set AWS_SECRET_ACCESS_KEY=你的实际密钥
azcopy copy ...

3. 验证SAS令牌权限与有效期

确认SAS令牌包含Write、Create、Add权限,且未过期。可通过Azure Portal重新生成SAS,选择:

  • 容器权限:Read, Write, Delete, List
  • Blob权限:Read, Write, Delete, Add, Create

4. 强制AzCopy使用本地中转拷贝

AzCopy默认尝试Azure服务器端直接拷贝(从S3拉取到ADLS),若S3对象非公开或权限受限会触发错误。添加--from-to S3Blob参数强制先下载到本地再上传:

azcopy copy "https://s3.eu-west-1.amazonaws.com/s3_bucket/dir/dir/dir/dir/" "https://[stg_container_name].blob.core.windows.net/raw-test?[SASTOKEN]" --recursive=true --from-to S3Blob

5. 检查S3桶/对象的ACL设置

确认S3桶或目标对象的ACL未限制对应IAM用户的访问,比如是否设置为私有且未授权该IAM用户。

6. 更新AzCopy到最新版本

旧版本AzCopy可能存在S3兼容性问题,前往Azure官方下载页面获取最新版本后重试。

内容的提问来源于stack exchange,提问作者Shoaib Maroof

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 02:22:11