2016-12-26 1 views
1

J'essaie de déplacer un compartiment S3 d'un compte (A) à un autre (B). J'ai réussi avec cette opération et retirer le seau du compte A. J'essaie de déplacer le nouveau compartiment du compte B vers un autre compartiment du compte B, mais en apprenant qu'à côté du compartiment lui-même, je n'ai pas accès aux fichiers. Après beaucoup de combats avec s3 cli et ses autorisations, j'ai vérifié s3api commandes et a découvert que les fichiers (surprise surprise) détient toujours l'ancienne propriété. J'essaie maintenant de le changer, mais est venu à une position encore avec le put-bucket-acl, le fichier JSON ne fonctionne pas pour la commande s3api. J'ai essayé d'exécuter la commande dans le débogage, mais je n'en ai pas fait trop. Quelqu'un sait quoi faire? Peut-être une meilleure façon de résoudre ce problème?Autorisations AWS S3 - erreur avec put-bucket-acl

ce que je l'ai fait jusqu'à présent: la commande:

aws s3api put-bucket-acl --bucket my-bucket --cli-input-json file://1.json 

(même avec-acl mis-objet)

fichier 1.json:

"Grantee": { 
"DisplayName": "account_B", 
"EmailAddress": "[email protected]", 
"ID": "111111hughalphnumericnumber22222", 
"Type": "CanonicalUser", 
"Permission": "FULL_CONTROL" 
} 

Les erreurs que je reçois :

Paramètre inconnu dans l'entrée: "Donataire", doit être: ACL, AccessControlPolicy, seau, ContentMD5, GrantFullControl, GrantRead, GrantReadACP, GrantWrite, GrantWriteACP Paramètre inconnu en entrée: "autorisation", doit être l'un: ACL, AccessControlPolicy, seau, ContentMD5, GrantFullControl, GrantRead, GrantReadACP, GrantWrite, GrantWriteACP

MISE à JOUR: AssumeRole entre les 2 comptes ne fonctionne pas dans mon cas. cli (s3cmd, s3api) GUI (MCSTools, bucketexplorer), ACL en utilisant les en-têtes, le corps (Postman) n'a pas aidé aussi bien .. Je me connecte support AWS et espère le meilleur. Je vais mettre à jour quand j'ai une solution.

Répondre

1

Ainsi, le soutien AWS est venu à la rescousse ... Je laisse cela pour les autres à voir, donc ils auront pas à perdre 2 jours comme je n'essayer de comprendre ce que l'enfer a mal tourné ...

aws s3api get-object-acl --bucket <bucket_on_B> --key <Key_on_B_Owned_by_A> --profile IAM_User_A > A_to_B.json 

appliquer le résultat de:

aws s3api get-bucket-acl --bucket <Bucket_on_B> --profile IAM_User_B 

sur le fichier JSON qui a été créé, puis exécutez

aws s3api put-object-acl --bucket <Bucket_on_B> --key <Key_on_B_Owned_by_A> --access-control-policy file://A_to_B.json --profile IAM_User_A 
1

Votre JSON est erroné. Selon to the documentation pour l'option put-bucket-acl, vous pouvez générer un modèle JSON valide ('squelette') en utilisant --generate-cli-skeleton. Par exemple:

aws s3api put-bucket-acl --bucket BUCKETNAME --generate-cli-skeleton 

Et voici la sortie:

{ 
    "ACL": "", 
    "AccessControlPolicy": { 
     "Grants": [ 
      { 
       "Grantee": { 
        "DisplayName": "", 
        "EmailAddress": "", 
        "ID": "", 
        "Type": "", 
        "URI": "" 
       }, 
       "Permission": "" 
      } 
     ], 
     "Owner": { 
      "DisplayName": "", 
      "ID": "" 
     } 
    }, 
    "Bucket": "", 
    "ContentMD5": "", 
    "GrantFullControl": "", 
    "GrantRead": "", 
    "GrantReadACP": "", 
    "GrantWrite": "", 
    "GrantWriteACP": "" 
} 
+0

Je suis au courant de cette option, mais je ne suis pas clair sur le Paramètres- ai-je besoin de les insérer tous? Comment obtenir l'URI si je ne veux pas que ce soit public?Où puis-je obtenir le "ContentMD5" I le "propriétaire" - puis-je insérer l'ancien propriétaire? Que faire si j'ai un utilisateur sans adresse e-mail? comment lui donner accès? Merci! – Busted

+0

Il existe de bons exemples avec une structure minimale à http://docs.aws.amazon.com/cli/latest/reference/s3api/put-bucket-acl.html et http://docs.aws.amazon.com /AmazonS3/latest/API/RESTBucketPUTacl.html. Vous pouvez omettre 'ContentMD5'. Et vous pouvez omettre l'e-mail de l'utilisateur si vous n'utilisez pas AmazonCustomerByEmail et utilisez plutôt CanonicalUser ou Group. –