オンプレミスインスタンスを登録するために登録コマンド (IAM ユーザー ARN) を使用 - AWS CodeDeploy

オンプレミスインスタンスを登録するために登録コマンド (IAM ユーザー ARN) を使用

重要

IAM ユーザーを使用してインスタンスを登録することは、認証に静的 (永続的) 認証情報を使用するため推奨されません。セキュリティ向上のため、認証には一時的な認証情報を使用してインスタンスを登録することをお勧めします。詳細については、「[register-on-premises-instance] コマンド (IAM セッション ARN) を使用してオンプレミスインスタンスを登録」を参照してください。

重要

IAM ユーザーのアクセスキー (永続的認証情報) をローテーションする計画を立ててください。アクセスキーのローテーションの詳細については、「アクセスキーの更新」を参照してください。

このセクションでは、最低限の労力でオンプレミスインスタンスを CodeDeploy で設定してタグ付けする方法を説明します。register コマンドは、単一の、または少数のオンプレミスインスタンスを処理する際に最も有用です。register のコマンドは、インスタンスを認証するために IAM ユーザー ARN を使用している場合のみ使用できます。register のコマンドは、認証のための IAM セッション ARN とは共に使用することはできません。

register のコマンドを使用すると、CodeDeploy で次の操作ができます。

  • コマンドを用いて指定しない場合、オンプレミスインスタンスのために、AWS Identity and Access Management の中に IAM ユーザーを作成します。

  • オンプレミスインスタンスの設定ファイルに IAM ユーザーの認証情報を保存します。

  • CodeDeploy でオンプレミスインスタンスを登録します。

  • コマンドの一部にタグを指定した場合、オンプレミスインスタンスにタグを追加します。

注記

register-on-premises-instance コマンドは、register コマンドの代わりです。CodeDeploy を用いてオンプレミスインスタンスの設定、登録、タグ付けのほとんどを自分で行いたい場合は、register-on-premises-instance のコマンドを使用します。また、register-on-premises-instance のコマンドを使うと、IAM ユーザー ARN の代わりに、IAM セッション ARN を使用してインスタンスを登録できます。このアプローチは、大量のオンプレミスインスタンスがある場合、大きな利点となります。具体的には、各オンプレミスインスタンスに 1 つずつ IAM ユーザーを作成するかわりに、単一の IAM セッション ARN を使用して複数のインスタンスを認証できます。詳細については、「[register-on-premises-instance] コマンド (IAM ユーザー ARN) を使用してオンプレミスインスタンスを登録します。」および「[register-on-premises-instance] コマンド (IAM セッション ARN) を使用してオンプレミスインスタンスを登録」を参照してください。

ステップ 1: オンプレミスインスタンスで AWS CLI をインストールして設定

  1. オンプレミスインスタンスに AWS CLI をインストールします。AWS CLI ユーザーガイドGetting set up with the AWS Command Line Interface の指示に従います。

    注記

    オンプレミスインスタンスで使用する CodeDeploy コマンドは、AWS CLI のバージョン 1.7.19 以降で使用できます。AWS CLI がすでにインストールしてある場合は、aws --version を呼び出してバージョンをチェックします。

  2. オンプレミスインスタンスに AWS CLI を設定します。AWS CLI ユーザーガイドConfiguring the AWS Command Line Interface の指示に従います。

    重要

    AWS CLI を設定するときに (例えば、aws configure のコマンドを呼び出す場合など)、AWS で指定されている許可に加えて少なくとも以下の オンプレミスインスタンスを設定するための前提条件 のアクセス権限を持つ IAM ユーザーのシークレットキー ID とシークレットアクセスキーを必ず指定します。これにより、オンプレミスインスタンスで CodeDeploy エージェントをダウンロードしてインストールすることができるようになります。アクセス権限は次のようになります。

    JSON
    { "Version":"2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "codedeploy:*", "iam:CreateAccessKey", "iam:CreateUser", "iam:DeleteAccessKey", "iam:DeleteUser", "iam:DeleteUserPolicy", "iam:ListAccessKeys", "iam:ListUserPolicies", "iam:PutUserPolicy", "iam:GetUser", "tag:getTagKeys", "tag:getTagValues", "tag:GetResources" ], "Resource" : "*" }, { "Effect" : "Allow", "Action" : [ "s3:Get*", "s3:List*" ], "Resource" : [ "arn:aws:s3:::amzn-s3-demo-bucket/*", "arn:aws:s3:::amzn-s3-demo-bucket1/*" ] } ] }
    注記

    前述の Amazon S3 バケットのいずれかにアクセスしようとしたときにアクセス拒否エラーが表示される場合は、バケットのリソース ARN の /* の部分 (例: arn:aws:s3:::aws-codedeploy-sa-east-1) を省略してみてください。

    JSON
    { "Version":"2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "codedeploy:*", "iam:CreateAccessKey", "iam:CreateUser", "iam:DeleteAccessKey", "iam:DeleteUser", "iam:DeleteUserPolicy", "iam:ListAccessKeys", "iam:ListUserPolicies", "iam:PutUserPolicy", "iam:GetUser", "tag:GetResources" ], "Resource" : "*" }, { "Effect" : "Allow", "Action" : [ "s3:Get*", "s3:List*" ], "Resource" : [ "arn:aws:s3:::amzn-s3-demo-bucket/*", "arn:aws:s3:::amzn-s3-demo-bucket2/*" ] } ] }

ステップ 2: 登録コマンドを呼び出す

このステップでは、オンプレミスインスタンス自体からオンプレミスインスタンスを登録していることを想定します。前のステップでの説明のとおり、AWS CLI がインストールされ設定された別のデバイスやインスタンスから、オンプレミスインスタンスを登録することもできます。

AWS CLI を使用し、register コマンドを呼び出して、以下を指定します。

  • CodeDeploy に対してオンプレミスインスタンスを一意に識別する名前 (--instance-name のオプションを用いて)。

    重要

    後でオンプレミスインスタンスを識別するために、特にデバッグのため、オンプレミスインスタンスの一意な特徴を示す名前 (例えば、もしあれば、シリアルナンバーや一意の内部アセット識別子など) を使用することを強くお勧めします。名前に MAC アドレスを指定した場合、MAC アドレスにはコロン (:) など、CodeDeploy が許可しない文字が含まれることに注意してください。許可された文字の一覧については、「CodeDeploy のクォータ」を参照してください。

  • 必要に応じて、このオンプレミスインスタンスと関連付ける既存の IAM ユーザーの ARN (--iam-user-arn のオプションを用いて) IAM ユーザーの ARN を取得するには、get-user コマンドを呼び出すか、IAM コンソールの [ユーザー] セクションで IAM ユーザー名を選択した後、[サマリー] セクションで [ユーザー ARN] の値を見つけます。このオプションが指定されていない場合は、CodeDeploy が代わりに ユーザーをAWS のアカウントに作成し、オンプレミスインスタンスと関連付けます。

    重要

    --iam-user-arn オプションを指定する場合は、「ステップ 4: オンプレミスインスタンスに設定ファイルを追加」の説明にあるとおり、オンプレミスインスタンスの設定ファイルを手動で作成することも必要です。

    1 つのオンプレミスインスタンスのみに対し、1 人の IAM ユーザーのみを関連付けることができます。複数のオンプレミスインスタンスに 1 人の IAM ユーザーを関連付けようとすると、エラー、オンプレミスインスタンスへのデプロイの失敗、またはオンプレミスインスタンスへのデプロイが無期限の保留状態のままとなります。

  • 必要に応じて、デプロイ先の Amazon EC2 インスタンスのセットを識別するために CodeDeploy が使用するオンプレミスインスタンスタグのセット (--tags の オプションを用いて)。各タグを Key=tag-key,Value=tag-value で指定します (例: Key=Name,Value=Beta Key=Name,Value=WestRegion)。このオプションを指定しない場合、タグは登録されません。後でタグを登録するには、add-tags-to-on-premises-instances コマンドを呼び出します。

  • 必要に応じて、CodeDeploy を用いてオンプレミスインスタンスを登録する AWS のリージョン (--region のオプションを用いて) これは、「AWS 全般のリファレンス」(例: us-west-2) の「リージョンエンドポイント」にリストされているサポートされたリージョンの 1 つである必要があります。このオプションを指定しない場合、IAM ユーザーの呼び出しに関連付けられているデフォルトの AWS のリージョンが使用されます。

例:

aws deploy register --instance-name AssetTag12010298EX --iam-user-arn arn:aws:iam::444455556666:user/CodeDeployUser-OnPrem --tags Key=Name,Value=CodeDeployDemo-OnPrem --region us-west-2

register コマンドは次のことを行います。

  1. 既存の IAM ユーザーを指定しない場合、IAM ユーザーを作成して必要なアクセス権限を付与し、対応するシークレットキーおよびシークレットアクセスキーを生成します。オンプレミスインスタンスは、この IAM ユーザーとアクセス権限および認証情報を使用して CodeDeploy との認証および操作を行います。

  2. CodeDeploy でオンプレミスインスタンスを登録します。

  3. 指定されている場合には、CodeDeploy 中で、--tags のオプションで指定したタグと、登録済みのオンプレミスインスタンスの名前を関連付けます。

  4. IAM ユーザーが作成されている場合、register のコマンドの呼び出し元と同じディレクトリに必要な設定ファイルも作成します。

このコマンドでエラーが発生した場合、エラーメッセージが表示され、手動で残りのステップを完了する方法について説明します。そうでない場合は、成功メッセージが表示され、次のステップに示すとおり、install コマンドを呼び出す方法について説明します。

ステップ 3: インストールコマンドを呼び出す

オンプレミスインスタンスから、AWS CLI を使用して install コマンドを呼び出し、以下を指定します。

  • 設定ファイルへのパス (--config-file オプションで指定)。

  • 必要に応じて、オンプレミスインスタンスにある既存の設定ファイルを置き換えるかどうか (--override-config オプションで指定)。指定しない場合、既存の設定ファイルは置き換えられません。

  • 必要に応じて、CodeDeploy を用いてオンプレミスインスタンスを登録する AWS のリージョン (--region のオプションを用いて) これは、「AWS 全般のリファレンス」(例: us-west-2) の「リージョンエンドポイント」にリストされているサポートされたリージョンの 1 つである必要があります。このオプションを指定しない場合、IAM ユーザーの呼び出しに関連付けられているデフォルトの AWS のリージョンが使用されます。

  • 必要に応じて、CodeDeploy エージェントのインストール元のカスタムロケーション (--agent-installer のオプションを用いて)。このオプションは、CodeDeploy が公式にはサポートしていない CodeDeploy エージェント のカスタムバージョンのインストールに使用できます (GitHub の CodeDeploy エージェント リポジトリに基づくカスタムバージョンなど)。値は、次のいずれかを含む Amazon S3 バケットへのパスである必要があります。

    • CodeDeploy エージェントのインストールスクリプト (GitHub の CodeDeploy agent エージェントリポジトリにあるインストールファイルと同様、Linux または Unix ベースの OS 用)。

    • CodeDeploy エージェントのインストーラパッケージ (.msi) ファイル (Windows ベースの OS 用)。

    このオプションを指定しない場合、CodeDeploy は独自の場所から、オンプレミスインスタンス上の OS と互換性のある正式にサポートされているバージョンの CodeDeploy エージェントをインストールしようとします。

例:

aws deploy install --override-config --config-file /tmp/codedeploy.onpremises.yml --region us-west-2 --agent-installer s3://aws-codedeploy-us-west-2/latest/codedeploy-agent.msi

install コマンドは次のことを行います。

  1. オンプレミスインスタンスが Amazon EC2 インスタンスかどうかを確認します。そうである場合は、エラーメッセージが表示されます。

  2. オンプレミスインスタンスの設定ファイルを、インスタンスの指定された場所から CodeDeploy エージェントが見つけやすい場所へ (まだその場所にない場合) コピーします。

    Ubuntu サーバーおよび Red Hat Enterprise Linux (RHEL)の場合、これは /etc/codedeploy-agent/conf/codedeploy.onpremises.yml になります。

    Windows サーバーの場合、これは C:\ProgramData\Amazon\CodeDeploy\conf.onpremises.yml になります。

    --override-config オプションを指定した場合は、ファイルを作成または上書きします。

  3. オンプレミスインスタンスに CodeDeploy エージェントをインストールし、起動します。

ステップ 4: デプロイアプリケーションリビジョンをオンプレミスインスタンスにデプロイする

登録され、タグ付けされたオンプレミスインスタンスにアプリケーションリビジョンをデプロイする準備ができました。

Amazon EC2 インスタンスにアプリケーションリビジョンをデプロイするのと同様の方法でオンプレミスインスタンスにアプリケーションリビジョンをデプロイします。手順については、「CodeDeploy でデプロイを作成する」を参照してください。これらの指示は、アプリケーションの作成、開発グループの作成、およびアプリケーションリビジョンの準備を含む前提条件と関連しています。シンプルなサンプルアプリケーションリビジョンをデプロイすることが必要な場合は、ステップ 2: サンプルのアプリケーションリビジョンを作成するチュートリアル: CodeDeploy (Windows サーバー、Ubuntu サーバー、または Red Hat エンタープライズ Linux) を使用してオンプレミスインスタンスにアプリケーションをデプロイします。 で説明してあるものを作成できます。

重要

オンプレミスインスタンスを対象としたデプロイグループの作成の一部として、既存の CodeDeploy サービスロールを再利用する場合は、Tag:get* をサービスロールのポリシーステートメントの Action の部分に含める必要があります。詳細については、「ステップ 2: CodeDeployのサービスのロールを作成する」を参照してください。

ステップ 5: オンプレミスインスタンスへのデプロイを追跡

登録されタグ付けされたオンプレミスインスタンスへアプリケーションリビジョンをデプロイした後、デプロイの進行状況を追跡できます。

Amazon EC2 インスタンスへのデプロイの追跡と同様の方法でオンプレミスインスタンスへのデプロイの追跡をします。手順については、「CodeDeploy デプロイの詳細を表示する 」を参照してください。

他のオプションについては、「CodeDeploy でのオンプレミスインスタンスのオペレーションの管理」を参照してください。