0

Je tente de télécharger un fichier à partir d'un compartiment S3 vers une instance via la propriété userdata du exemple. Cependant, je reçois l'erreur:Impossible d'accéder à S3 à partir de l'instance EC2 dans Cloudformation - Une erreur client (301) s'est produite lors de l'appel de l'opération HeadObject:

A client error (301) occurred when calling the HeadObject operation: Moved Permanently.

J'utilise un rôle IAM, politique géré, et l'instance Profil de donner l'accessibilité de l'instance dans le seau s3:

"Role": { 
     "Type": "AWS::IAM::Role", 
     "Properties": { 
      "AssumeRolePolicyDocument": { 
       "Statement": [ 
        { 
         "Effect": "Allow", 
         "Principal": { 
          "Service": [ 
           "ec2.amazonaws.com", 
           "s3.amazonaws.com" 
          ] 
         }, 
         "Action": [ 
          "sts:AssumeRole" 
         ] 
        } 
       ] 
      }, 
      "Path": "/", 
      "ManagedPolicyArns": [ 
       { 
        "Ref": "ManagedPolicy" 
       } 
      ] 
     }, 
     "Metadata": { 
      "AWS::CloudFormation::Designer": { 
       "id": "069d4411-2718-400f-98dd-529bb95fd531" 
      } 
     } 
    }, 
    "RolePolicy": { 
     "Type": "AWS::IAM::Policy", 
     "Properties": { 
      "PolicyName": "S3Download", 
      "PolicyDocument": { 
       "Statement": [ 
        { 
         "Action": [ 
          "s3:*" 
         ], 
         "Effect": "Allow", 
         "Resource": "arn:aws:s3:::mybucket/*" 
        } 
       ] 
      }, 
      "Roles": [ 
       { 
        "Ref": "Role" 
       } 
      ] 
     }, 
     "Metadata": { 
      "AWS::CloudFormation::Designer": { 
       "id": "babd8869-948c-4b8a-958d-b1bff9d3063b" 
      } 
     } 
    }, 
    "InstanceProfile": { 
     "Type": "AWS::IAM::InstanceProfile", 
     "Properties": { 
      "Path": "/", 
      "Roles": [ 
       { 
        "Ref": "Role" 
       } 
      ] 
     }, 
     "Metadata": { 
      "AWS::CloudFormation::Designer": { 
       "id": "890c4df0-5d25-4f2c-b81e-05a8b8ab37c4" 
      } 
     } 
    }, 

Et je tente de télécharger le fichier en utilisant cette ligne dans la propriété userdata:

aws s3 cp s3://mybucket/login.keytab destination_directory/

Une réflexion sur ce qui ne va pas? Je peux télécharger le fichier avec succès si je le rend public, puis utiliser wget à partir de la ligne de commande, mais pour une raison quelconque le compartiment/fichier ne peut pas être trouvé lors de l'utilisation de cp et le fichier n'est pas accessible au public.

Répondre

2

Moved Permanently indique normalement que vous êtes redirigé vers l'emplacement de l'objet. Cela est normalement dû au fait que la demande est envoyée à un noeud final situé dans une zone différente.

Ajoutez un paramètre --region où la région correspond à la région du compartiment. Par exemple:

aws s3 cp s3://mybucket/login.keytab destination_directory/ --region ap-southeast-2 
+0

Merci! Ce changement a fonctionné –