AWSロールを作成して関連付ける

仮想マシン(VM)をAWSにインポートする場合、次のものが必要となります:

  • 指定されたロールvmimportの使用、
  • vmimportロールに付与されたS3バケットで固有のアクセス許可、(例:参照、リストなど)。
  • コマンドがバケットを参照、AWS内にインポートジョブを作成できるように、vmimportロールをvmimport commandに割り当てます。
  1. ターミナルウィンドウを開きます。
  2. イメージをインポートする際に、必要なvmimport IAM IDロールを作成します:
    1. vmimport IAM IDロールの信頼ポリシーを示すJSONファイルを作成します:
      {
          "Version": "2012-10-17",
          "Statement":[ {
              "Effect": "Allow",
              "Principal": { "Service": "vmie.amazonaws.com" },
              "Action": "sts:AssumeRole",
              "Condition": {
              "StringEquals":{ "sts:Externalid": "vmimport"}
                  }
            }]
      }
    2. 信頼ポリシーを使って IAM IDロールを作成します。
      aws iam create-role --role-name vmimport --assume-role-policy-document "file://~/Downloads/trust-policy.json"
  3. 予め作成されたバケットと新規IAM IDを関連付けるロールポリシーを作成します。次の例では、BUCKET_NAMEをバケットの名前と置換します:
    {
        "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. S3バケットにアクセスし、ec2オペレーションを実行するためのさまざまな権限が含まれるvmimportIDにインラインロールポリシーを付与します。次のコマンドは、成功の値を返しません:

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