ECS: OBS: La copia entre depósitos falla con HTTP 403-SignatureDoesNotMatch
Resumen: La copia de objetos entre dos depósitos dentro del mismo espacio de nombres falla con lo siguiente: 03 (SignatureDoesNotMatch): La firma de la solicitud que calculamos no coincide con la firma que proporcionó. Verifique su clave de acceso secreta y el método de firma. Para obtener más información, consulte Autenticación REST y Autenticación SOAP para obtener más información. ...
Síntomas
ERROR HTTP 403 (SignatureDoesNotMatch): The request signature we calculated does not match the signature you provided. Check your Secret Access Key and signing method. For more information, see REST Authentication and SOAP Authentication for details.)
Es posible que otros depósitos puedan copiar objetos entre los depósitos.
Error de muestra del cliente (s3cmd en el siguiente ejemplo)
user@ubuntu:~$ s3cmd cp s3://sourcebucket/0001.txt s3://destinationbucket/0001.txt --add-header=x-emc-copy-mode:deep ERROR: Copy failed for: 's3://sourcebucket/0001.txt' (403 (SignatureDoesNotMatch): The request signature we calculated does not match the signature you provided. Check your Secret Access Key and signing method. For more information, see REST Authentication and SOAP Authentication for details.)
Registros de svc_request Para esta sesión:
x.x.x.159 02-20 11:43:04 0a3c129f:195052e2352:383d:6d0 s3 GET - x.x.x.253 200 454 4 y-test sourcebucket/0001.txt?acl x.x.x.159 02-20 11:43:04 0a3c129f:195052e2352:37e3:1045 s3 HEAD - x.x.x.253 200 0 2 y-test sourcebucket/0001.txt x.x.x.159 02-20 11:43:04 0a3c129f:195052e2352:383d:6d3 s3 PUT No x.x.x.253 400 - 7 y-test destinationbucket/0001.txt x.x.x.159 02-20 11:43:04 0a3c129f:195052e2352:37e3:1048 s3 PUT No x.x.x.253 403 - 1 - destinationbucket/0001.txt
Los registros de ECS muestran lo siguiente:
varray mismatch: source bucket has urn:storageos:VirtualArray:IDb.urn:storageos:ReplicationGroupInfo:ID:global, dest bucket has urn:storageos:VirtualArray:ID.urn:storageos:ReplicationGroupInfo:ID:global
El seguimiento de las solicitudes HTTP 400 muestra "varray mismatch":
xxx.xxx.x.1 2025-02-20 11:43:04,682 0a3c129f:195052e2352:383d:6d3 x.x.x.159:9020 x.x.x.253:60062 y-test-1 - PUT y-test destinationbucket 0001.txt - HTTP/1.1 400 7 - - 6 - copy - - 'X-Forwarded-For: -' 'x-amz-meta-firstName: -' 'x-amz-meta-lastname: -' 'x-amz-meta-age: -' xxx.xxx.x.1 2025-02-20 11:43:04,682 0a3c129f:195052e2352:383d:6d3 x.x.x.159:9020 x.x.x.253:60062 y-test-1 - PUT y-test destinationbucket 0001.txt - HTTP/1.1 400 7 - - 6 - copy - - 'X-Forwarded-For: -' 'x-amz-meta-firstName: -' 'x-amz-meta-lastname: -' 'x-amz-meta-age: -' xxx.xxx.x.1 2025-02-20T11:43:04,675 [qtp2087040347-23314-0a3c129f:195052e2352:383d:6d3-s3-x.x.x.253] INFO V4Signer.java (line 118) credential: y-test-1/20250220/US-EAST-1/s3/aws4_request, amz_expires: null, amz_signed_headers: content-type;host;x-amz-content-sha256;x-amz-copy-source;x-amz-date;x-amz-meta-s3b-last-modified;x-amz-meta-sha256;x-amz-metadata-directive;x-amz-storage-class;x-emc-copy-mode;x-emc-mtime, amz_signature: 65edd5ab6e7b30a19993f88c160df46b826010f199583a41468272321c229ea0, payloadHash: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855, amz_date: 20250220T114323Z xxx.xxx.x.1 2025-02-20T11:43:04,678 [qtp2087040347-23314-0a3c129f:195052e2352:383d:6d3-s3-x.x.x.253] ERROR S3Exception.java (line 1733) got object access exception. RequestId 0a3c129f:195052e2352:383d:6d3 com.emc.storageos.objcontrol.object.exception.ObjectAccessException: varray mismatch: source bucket has urn:storageos:VirtualArray:<ID>.urn:storageos:ReplicationGroupInfo:<ID>:global, dest bucket has urn:storageos:VirtualArray:<ID>.urn:storageos:<ID>:global
Causa
La mayoría de las herramientas compatibles con AWS utilizan la opción de copia de s3 cuando se copia entre depósitos en el mismo origen. Esta opción no descarga ni carga el objeto mediante el cliente, sino que solicita al destino que realice la operación de copia.
Cuando el depósito de origen y destino se aloja en diferentes grupos de replicación, la copia falla, ECS permite la copia de S3 solo dentro del mismo grupo de replicación. El concepto de grupos de replicación no se utiliza en Amazon AWS, las herramientas del cliente no detectan que se utiliza un grupo de replicación diferente.
Cómo verificar que los depósitos estén en diferentes grupos de replicación:
Desde la CLI, ejecute lo siguiente:
svc_bucket list -n <namespace>
admin@ecsnode2:~> svc_bucket list -n y-test
svc_bucket v1.1.3 (svc_tools v2.24.0) Started 2025-07-29 07:18:45
Bucket Temp
Replication Owner Owner API FS Versioning Failed
Bucket Name Namespace Group User VDC Type Enabled Enabled (TSO)
destinationbucket y-test local_vdc y-test-1 VDC1 S3 False Disabled False
destinationiam y-test local_vdc urn:ec...t:root VDC1 S3 False Disabled False
destsamerg y-test RG1 y-test-1 VDC1 S3 False Disabled False
iam y-test RG1 urn:ec...t:root VDC1 S3 False Disabled False
iamsamerg y-test RG1 urn:ec...t:root VDC1 S3 False Disabled False
new-bucket-37494b67 y-test RG1 y-test-1 VDC1 S3 False Enabled False
s3 y-test RG1 y-test-1 VDC1 S3 False Disabled False
sourcebucket y-test RG1 y-test-1 VDC1 S3 False Disabled False
sourceiam y-test RG1 urn:ec...t:root VDC1 S3 False Disabled False
steve y-test RG1 y-test-1 VDC1 S3 False Disabled False
versioning-test y-test RG1 y-test-1 VDC1 S3 False Enabled False
En el ejemplo anterior, ambos depósitos con destino en su nombre pertenecen a local_vdc, mientras que los otros son RG1
Puede copiar entre todos los RG1 cubos, así como entre ambos local_vdc depósitos, pero no entre local_vdc y rg1 balde.
Resolución
Esto funciona según lo previsto.
Descargue el objeto de ECS al cliente y vuelva a cargarlo en el nuevo origen. Como alternativa, use depósitos dentro del mismo espacio de nombres y grupo de replicación.