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

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

  • 指定されたロールvmimportの使用、
  • vmimportロールに付与されたS3バケットで固有のアクセス許可、(例:参照、リストなど)。
  • コマンドがバケットを参照、AWS内にインポートジョブを作成できるように、vmimportロールをvmimport コマンドに割り当てます。

vmimportコマンドに相当するAWSコンソールはありません。vmimportの[Command Line(コマンドライン)]タブを確認します。

  1. ターミナルウィンドウを開きます。
  2. イメージをインポートする際に、必要なvmimport IAM IDロールを作成します:
    1. vmimport IAM IDロールの信頼ポリシーを示すJSONファイルを作成します:
      コピー

      trust-policy.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をバケットの名前と置換します:
    コピー
    role-policy.json
    {
    "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"

関連項目

VMインポートコマンドの実行に必要なロールに関する詳細については、「IAMに必要な権限」をご参照ください。