Créer et associer des rôles AWS

Pour importer une machine virtuelle (VM) dans AWS, vous devez disposer des éléments suivants :

  • l'utilisation du rôle désigné, vmimport,
  • autorisations spécifiques sur le compartiment S3, accordées au rôle vmimport (par exemple, lecture seule, liste, etc.).
  • Affectez le rôle vmimport à vmimport command pour que la commande puisse lire (en lecture seule) le compartiment et créer une tâche d'importation dans AWS.
  1. Ouvrez une fenêtre de terminal.
  2. Créez le rôle d'identité IAM vmimport requis pour importer des images :
    1. Créez un fichier json, qui représente la politique de confiance pour le rôle d'identité IAM vmimport :
      {
          "Version": "2012-10-17",
          "Statement":[ {
              "Effect": "Allow",
              "Principal": { "Service": "vmie.amazonaws.com" },
              "Action": "sts:AssumeRole",
              "Condition": {
              "StringEquals":{ "sts:Externalid": "vmimport"}
                  }
            }]
      }
    2. Créez le rôle d'identité IAM à l'aide de la politique de confiance :
      aws iam create-role --role-name vmimport --assume-role-policy-document "file://~/Downloads/trust-policy.json"
  3. Créez une politique de rôle pour associer la nouvelle identité IAM au compartiment précédemment créé. Dans l'exemple suivant, remplacez BUCKET_NAME par le nom du compartiment :
    {
        "Version":"2012-10-17",
        "Statement":[{
            "Effect":"Allow",
                     "Action":[
                      "s3:GetBucketLocation",
                      "s3:GetObject",
                      "s3:ListBucket" 
                      ],
             "Resource":[
                 "arn:aws:s3:::BUCKET_NAME",
                 "arn:aws:s3:::BUCKET_NAME/*"
              ]
           }, {
            "Effect":"Allow",
                    "Action":[
                      "s3:GetBucketLocation",
                      "s3:GetObject",
                      "s3:ListBucket",
                      "s3:PutObject",
                      "s3:GetBucketAcl"
                      ],
                "Resource":[
                 "arn:aws:s3:::BUCKET-NAME",
                 "arn:aws:s3:::BUCKET-NAME/*"
                 ]
           }, {
             "Effect":"Allow",
                      "Action":[
                       "ec2:ModifySnapshotAttribute",
                       "ec2:CopySnapshot",
                       "ec2:RegisterImage",
                       "ec2:Describe*"],
                "Resource":"*"
            }
        ]
    }
  4. Accordez une politique de rôle en ligne à vmimport identity, y compris divers droits pour accéder au compartiment S3 et effectuer des opérations ec2. La commande suivante ne renvoie pas de valeur en cas de réussite :

    aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document "file://~/Downloads/role-policy.json"