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

VMをAWSにインポートするには、以下が必要です:

  • 指定されたロール、vmimportを使用する。
  • S3バケットへの特定のアクセス許可(読み込み、リストなど) が、vmimportロールに付与されている。
  • コマンドがバケットを読み取り、AWS内でインポートジョブを作成できるように、vmimportロールをvmimport コマンドに割り当てる。
情報

メモ

コマンドラインvmimportコマンドと同等のAWSコンソールはありません。
vmimportのコマンドライン タブを参照してください。

  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"} } }] }

      trust-policy.json

    2. ターミナルウィンドウで、aws iam create-roleコマンドを使用し、以下のように新規信用ポリシーを使用するIAM ID ロールを作成します:

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

      以下のような結果が返されます:
      { "Role": { AssumeRolePolicyDocument": {. . . } ... "Arn": "arn:aws:iam::809227661992:role/vmimport" } }

  3. 事前に作成したバケットを使用してロールポリシーを新しいIAM IDに関連付けます。

    { "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":"*" } ] }
    role-policy.json

    BUCKET_NAMEを事前作成したバケット名に置き換えます。

  4. aws iam put-role-policyコマンドを使用して、インラインロールポリシーをvmimport IDに付与し、S3バケットにアクセスしec2オペレーションを実行する様々な権限を付与します。例:

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

    メモ:aws iam put-role-policyコマンドは成功しても値を返しません。

関連項目

  • VMインポートコマンドを実行するために必要なロールについては、Amazon Web Services資料の「IAMで必要な権限」を参照してください。