第2章 AMI イメージの準備と AWS へのアップロード


RHEL Image Builder を使用すると、AWS クラウド上でカスタムイメージを作成し、手動または自動で更新できます。

2.1. AWS AMI イメージを手動でアップロードする準備

Amazon Web Services (AWS) に Amazon Machine Image (AMI) をアップロードする前に、イメージをアップロードするためのシステムを設定する必要があります。

前提条件

  • 書き込み可能な S3 バケット が準備済みである。
  • AWS の認証が以下のいずれかの方法で設定されている。

    • 静的認証情報: AWS IAM アカウントマネージャーで設定するアクセスキー ID とシークレットアクセスキー。AWS IAM アカウントマネージャー でアクセスキー ID が設定されている必要があります。
    • 動的認証情報: AWS IAM Identity Center (SSO) を使用して管理する有効期限の短い認証情報。

手順

  1. Python 3 と pip ツールをインストールします。

    # dnf install python3 python3-pip
  2. pip を使用して AWS コマンドラインツール をインストールします。

    $ pip3 install awscli
  3. AWS CLI 認証プロファイルを設定します。

    • 静的認証情報 (AWS アクセスキー) の設定: コマンドラインで、認証情報、リージョン、および出力形式を入力するように求められます。

      $ aws configure
      AWS Access Key ID [None]:
      AWS Secret Access Key [None]:
      Default region name [None]:
      Default output format [None]:
    • 動的認証情報の設定 (AWS SSO / IAM Identity Center): 組織で有効期限の短い動的認証情報を使用している場合は、別のプロファイルにログインします。リモートの SSH セッションで CLI を実行する場合は、--remote フラグを含めます。

      $ aws login --region eu-central-1 --profile auth --remote

      ブラウザーで認証を行うには、プロンプトに表示されるリンクにアクセスします。これにより、~/.aws/config ファイルにエントリーが作成されます。

      [profile auth]
      region = eu-central-1
      login_session = arn:aws:sts::12345678910:assumed-role/12345678910-admin/<username>
      重要

      image-builder は AWS SDK for Go v2 を使用していますが、これは動的認証情報をネイティブにサポートしていません。上記のプロファイルのみを使用してアップロードしようとすると、認証情報が通知なく無視され、"Getting: operation error S3: CreateMultipartUpload, get identity: get credentials: failed to refresh cached credentials, no EC2 IMDS role found…​" というエラーが発生します。この制限を回避するには、[default] または別の専用プロファイルを設定して credential_process を使用してください。これにより、動的なセッショントークンが、image-builder が読み取ることのできる静的スタイルの認証情報にマッピングされます。~/.aws/config ファイルに以下を追加してください。

      [default]
      region = eu-central-1
      credential_process = aws configure export-credentials --profile auth --format process
  4. バケットの名前を定義し、バケットを作成します。

    $ BUCKET=<bucketname>
    $ aws s3 mb s3://$BUCKET

    <bucketname> は、実際のバケット名に置き換えます。この名前は、グローバルで一意となるように指定する必要があります。

  5. Simple Storage Service (S3) へのアクセス権限を付与するには、AWS Identity and Access Management (IAM) で vmimport ロールを作成します (まだ作成していない場合)。

    1. 信頼ポリシー設定を含む trust-policy.json ファイルを JSON 形式で作成します。以下に例を示します。

      {
          "Version": "2012-10-17",
          "Statement": [{
              "Effect": "Allow",
              "Principal": {
                  "Service": "vmie.amazonaws.com"
              },
              "Action": "sts:AssumeRole",
              "Condition": {
                  "StringEquals": {
                      "sts:Externalid": "vmimport"
                  }
              }
          }]
      }
    2. ロールポリシーの設定を含む role-policy.json ファイルを JSON 形式で作成します。

      {
          "Version": "2012-10-17",
          "Statement": [{
              "Effect": "Allow",
              "Action": ["s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket"],
              "Resource": ["arn:aws:s3:::%s", "arn:aws:s3:::%s/"] }, { "Effect": "Allow", "Action": ["ec2:ModifySnapshotAttribute", "ec2:CopySnapshot", "ec2:RegisterImage", "ec2:Describe"],
              "Resource": "*"
          }]
      }
      $BUCKET $BUCKET
    3. trust-policy.json ファイルを使用して、Amazon Web Services アカウントのロールを作成します。

      $ aws iam create-role --role-name vmimport --assume-role-policy-document \file://trust-policy.json
    4. role-policy.json ファイルを使用して、インラインポリシードキュメントを埋め込みます。

      $ aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document \file://role-policy.json

検証

  • バケットが作成されたことを確認します。

    $ aws s3 ls | grep $BUCKET
  • vmimport ロールが作成されたことを確認します。

    $ aws iam get-role --role-name vmimport
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

Red Hat ドキュメントについて

Legal Notice

Theme

© 2026 Red Hat
トップに戻る