[register-on-premises-instance] コマンド (IAM セッション ARN) を使用してオンプレミスインスタンスを登録 - AWS CodeDeploy

[register-on-premises-instance] コマンド (IAM セッション ARN) を使用してオンプレミスインスタンスを登録

オンプレミスインスタンスの認証と登録を最大限にコントロールするには、register-on-premises-instance コマンド、および、AWS Security Token Service (AWS STS)を用いて定期的に更新される一時的な認証情報を使用できます。インスタンスの静的 IAM ロールは、CodeDeploy デプロイオペレーションを実行するための、これらの更新された AWS STS の認証情報のロールを想定しています。

多数のインスタンスを登録する必要がある場合は、このメソッドが最も役に立ちます。これにより、CodeDeploy での登録処理を自動化できます。自分の ID と認証システムを使用して、オンプレミスインスタンスを認証でき、CodeDeploy で使用するためにインスタンス IAM セッション認証情報をサービスからインスタンスへ配布できます。

注記

または、AWS STS AssumeRole API を呼び出してオンプレミスインスタンスのセッション認証情報を取得するために、すべてのオンプレミスインスタンスに分散した共有 IAM ユーザーを使用することもできます。このメソッドは安全性が低いため、本番稼働用またはミッションクリティカルな環境での使用は推奨しません。

以下のトピックにある情報を参照し、AWS STS で生成された一時的なセキュリティ認証情報を使用してオンプレミスインスタンスを設定します。

IAM セッション ARN 登録前提条件

オンプレミスインスタンスを設定するための前提条件 にリストされている前提条件に加えて、次の追加の要件を満たす必要があります。

IAM アクセス許可

オンプレミスインスタンスを登録するのに使用する IAM 識別子には、CodeDeploy オペレーションを実行するためのアクセス権限が付与される必要があります。AWSCodeDeployFullAccess 管理ポリシーが IAM ID に添付されていることを確認します。詳細については、 IAM ユーザーガイドAWS マネージドポリシー を参照してください。

一時的な認証情報を更新するシステム

IAM セッション ARN を使用してオンプレミスインスタンスを登録する場合、一時的な認証情報を定期的に更新する適切なシステムが必要です。一時的な認証情報は 1 時間後、または認証情報が生成されたときより短い時間が指定されていればそれより早く期限切れになります。認証情報を更新するためのメソッドは 2 つあります。

  • メソッド 1: 企業ネットワーク内で ID および認証システムを適切に使用し、CRON スクリプトを使って ID および認証システムを定期的にポーリングし、最新のセッション認証情報をインスタンスへコピーするようにします。これにより、組織で使用する認証タイプをサポートするために CodeDeploy エージェントまたはサービスを変更することなく、AWS を用いて認証および 構成を統合できます。

  • メソッド 2: 定期的に CRON ジョブをインスタンスで実行し、AWS STS AssumeRole アクションを呼び出し、CodeDeploy エージェントがアクセスできるファイルにセッション認証情報を書き込みます。このメソッドでは、IAM ユーザーの使用、およびオンプレミスインスタンスへの認証情報のコピーをする必要はありますが、多くのオンプレミスインスタンスで同じ IAM ユーザーおよび認証情報を使用できます。

注記

メソッド 1 と 2 のどちらを使用しているかにかかわらず、一時的なセッション認証情報が更新された後に CodeDeploy エージェントを再起動するプロセスを設定して、新しい認証情報が有効になるようにする必要があります。

AWS STS の認証情報を用いての作成および使用の詳細については、AWS Security Token Service API Reference および Using temporary security credentials to request access to AWS resources を参照してください。

ステップ 1: オンプレミスインスタンスが引き受ける IAM ロールを作成

AWS CLI または IAM コンソールを使用して、CodeDeploy との認証および操作を行うためのオンプレミスインスタンスによって使われる IAM ロールを作成できます。

単一の IAM ロールのみを作成する必要があります。各オンプレミスインスタンスは、このロールに付与されたアクセス権限を提供する一時認証情報を取得するためにこのロールを引き受けることができます。

作成するロールは、CodeDeploy エージェントをインストールするのに必要なファイルにアクセスするために、次の権限が必要です。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Action": [ "s3:Get*", "s3:List*" ], "Effect": "Allow", "Resource": "*" } ] }

このポリシーを、オンプレミスインスタンスがアクセスする必要のある Amazon S3 バケットにのみ制限することをお勧めします。このポリシーを制限する場合、CodeDeploy エージェントを含む Amazon S3 バケットへのアクセスを許可することを確認します。そうしない場合、CodeDeploy エージェントがオンプレミスインスタンスにインストールされる、または更新されるたびに、エラーが発生する可能性があります。Amazon S3 リソースへのアクセスコントロールの詳細については、Managing access permissions to your Amazon S3 resources を参照してください。

IAM ロールを作成するには
  1. オプションを使用して create-role--role-name コマンドを呼び出し、IAM ロールの名前 (例: CodeDeployInstanceRole) と --assume-role-policy-document オプションを指定してアクセス権限を提供します。

    このインスタンスの IAM ロールを作成するときは、CodeDeployInstanceRole という名前を付け、CodeDeployRolePolicy.json という名前のファイルに必要なアクセス権限を含めます。

    aws iam create-role --role-name CodeDeployInstanceRole --assume-role-policy-document file://CodeDeployRolePolicy.json
  2. create-role コマンドを呼び出した出力で、ARN フィールドの値をメモします。例:

    arn:aws:iam::123456789012:role/CodeDeployInstanceRole

    AWS STS AssumeRole API を使用して各インスタンスに短期的な認証情報を生成するには、ロール ARN が必要です。

    IAM ロールの作成についてのさらなる情報については、IAM ユーザーガイドCreating a role to delegate permissions to an AWS service を参照してください。

    既存のロールにアクセス権限を割り当てる方法については、AWS CLI Command Referenceput-role-policy を参照してください。

ステップ 2: AWS STS を使用して各インスタンスに一時認証情報を生成

オンプレミスインスタンスの登録に使用する一時認証情報を生成する前に、一時認証情報を生成する IAM ID (ユーザーまたはロール) を作成または選択する必要があります。sts:AssumeRole アクセス権限は、この IAM ID のポリシーの設定に含める必要があります。

IAM アイデンティティへの sts:AssumeRole の権限の付与の詳細については、Creating a role to delegate permissions to an AWS service および AssumeRole を参照してください。

一時認証情報を生成するには、2 とおりの方法があります。

  • AWS CLI を用いて assume-role コマンドを使用します。例:

    aws sts assume-role --role-arn arn:aws:iam::12345ACCOUNT:role/role-arn --role-session-name session-name

    コードの説明は以下のとおりです。

    注記

    ID と認証システムを定期的にポーリングして最新のセッション認証情報をインスタンスにコピーする CRON スクリプトを使用している場合 (IAM セッション ARN 登録前提条件 で説明している一時認証情報を更新するメソッド 1)、代わりに、サポートされている AWS のSDK を使用して AssumeRole を呼び出せます。

  • AWS が提供しているツールを使用します。

    aws-codedeploy-session-helper ツールは、AWS STS 認証情報を生成しインスタンスに配置するファイルに書き込みます。このツールは、IAM セッション ARN 登録前提条件 で説明している一時認証情報を更新するメソッド 2 に最適です。このメソッドでは、aws-codedeploy-session-helper ツールは、各インスタンスに配置され、IAM ユーザーのアクセス権限を使用してコマンドを実行します。各インスタンスは、このツールとともに同じ IAM ユーザーの認証情報を使用します。

    詳細については、aws-codedeploy-session-helper GitHub リポジトリを参照してください。

    注記

    IAM セッション認証情報を作成した後、オンプレミスインスタンスの任意の場所に保存します。次のステップで、CodeDeploy エージェントがこの場所の認証情報にアクセスできるように設定します。

続ける前に、定期的に一時認証情報を更新するために使用するシステムを確認します。一時認証情報が更新されていない場合、オンプレミスインスタンスへのデプロイは失敗します。詳細については、IAM セッション ARN 登録前提条件 にある「一時認証情報を更新するシステム」を参照してください。

ステップ 3: オンプレミスインスタンスに設定ファイルを追加

ルートまたは管理者権限を使用して、オンプレミスインスタンスに設定ファイルを追加します。この設定ファイルは、IAM の認証情報、および CodeDeploy のために使われる AWS のリージョンを宣言するために使用されます。ファイルは、オンプレミスインスタンスの指定の場所に追加する必要があります。ファイルには、IAM の一時セッション ARN、そのシークレットキー ID とシークレットアクセスキー、および、ターゲットの AWS のリージョンが含まれている必要があります。

設定ファイルを追加するには
  1. オンプレミスインスタンスの以下の場所に、codedeploy.onpremises.yml (Ubuntu サーバーまたは RHEL オンプレミスインスタンスの場合)、または、conf.onpremises.yml (Windows サーバーオンプレミスインスタンスの場合) という名前のファイルを作成します。

    • Ubuntu サーバーの場合:/etc/codedeploy-agent/conf

    • Windows サーバーについて:C:\ProgramData\Amazon\CodeDeploy

  2. テキストエディタを使用して、新しく作成した codedeploy.onpremises.yml ファイル (Linux) または conf.onpremises.yml ファイル (Windows) に次の情報を追加します。

    --- iam_session_arn: iam-session-arn aws_credentials_file: credentials-file region: supported-region

    コードの説明は以下のとおりです。

ステップ 4:CodeDeploy デプロイのためオンプレミスインスタンスを準備します。

のインストールと設定AWS CLI

オンプレミスインスタンスに AWS CLI をインストールして設定します。(AWS CLI は、CodeDeploy エージェントをダウンロードしてオンプレミスインスタンス上にインストールするために使用されます。)

  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 のコマンドの呼び出しなど)、少なくとも IAM セッション ARN 登録前提条件 に説明のある権限を持つ IAM ユーザーのシークレットキー ID とシークレットアクセスキーを必ず指定します。

AWS_REGION 環境変数を設定する (Ubuntu Server および RHEL のみ)

Ubuntu サーバーまたは RHEL をオンプレミスインスタンスで実行していない場合は、このステップをスキップして「CodeDeploy エージェントをインストールする」へ進んでください。

Ubuntu サーバーまたは RHEL オンプレミスインスタンスに CodeDeploy エージェントをインストールし、新しいバージョンが使用可能になったらいつでも CodeDeploy エージェントを更新するようにインスタンスを有効にします。これを行うには、インスタンス上の AWS_REGION の環境変数を、CodeDeploy がサポートしているリージョンのうちの 1 つの識別子に設定します。CodeDeploy アプリケーション、デプロイグループ、およびアプリケーションリビジョンのある (us-west-2 など)リージョンの値に設定することをお勧めします 。リージョンのリストについては、「AWS 全般のリファレンス」の「リージョンエンドポイント」を参照してください。

環境変数を設定するには、端末から以下を呼び出します。

export AWS_REGION=supported-region

supported-region がリージョンの識別子である場所 (例:us-west-2)。

CodeDeploy エージェントをインストール

ステップ 5: CodeDeploy でオンプレミスインスタンスを登録します。

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

AWS CLI を使用して、CodeDeploy を用いてンプレミスインスタンスを登録し、デプロイで使用できるようにします。

AWS CLI を使用するには、「ステップ 3: オンプレミスインスタンスに設定ファイルを追加」で作成した一時セッション認証情報の ARN が必要です。例えば、AssetTag12010298EX と指定したインスタンスの場合:

arn:sts:iam::123456789012:assumed-role/CodeDeployInstanceRole/AssetTag12010298EX

register-on-premises-instance コマンドを呼び出し、以下を指定します。

  • オンプレミスインスタンスを一意に識別する名前 (--instance-name オプションで指定)。

    重要

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

  • 複数のオンプレミスインスタンスを認証するために ステップ 1: オンプレミスインスタンスが引き受ける IAM ロールを作成 で設定した IAM セッション ARN。

例:

aws deploy register-on-premises-instance --instance-name name-of-instance --iam-session-arn arn:aws:sts::account-id:assumed-role/role-to-assume/session-name

コードの説明は以下のとおりです。

  • name-of-instance は、オンプレミスインスタンスを識別するのに使用する名前です (例:AssetTag12010298EX)。

  • account-id は、組織の 12 桁のアカウント IDです (例: 111222333444)。

  • role-to-assume は、インスタンス用に作成した IAM ロールの名前です (例: CodeDeployInstanceRole)。

  • session-name は、ステップ 2: AWS STS を使用して各インスタンスに一時認証情報を生成 で指定したセッションロールの名前です。

ステップ 6: オンプレミスインスタンスにタグ付け

オンプレミスインスタンスにタグ付けするには、次の AWS CLI または CodeDeploy コンソールのいずれかを使用できます。(CodeDeploy はオンプレミスインスタンスタグを使用してデプロイ中にデプロイターゲットを識別します。)

オンプレミスインスタンスにタグ付けするには (CLI)
  • add-tags-to-on-premises-instances コマンドを呼び出し、以下を指定します。

    • オンプレミスインスタンスを一意に識別する名前 (--instance-names オプションで指定)。

    • 使用するオンプレミスインスタンスのタグキーの名前とタグ値 (--tags オプションで指定)。名前と値はいずれも指定する必要があります。CodeDeploy は値のみがあるオンプレミスインスタンスタグを許可しません。

      例:

      aws deploy add-tags-to-on-premises-instances --instance-names AssetTag12010298EX --tags Key=Name,Value=CodeDeployDemo-OnPrem
オンプレミスインスタンスにタグ付けするには (コンソール)
  1. AWS マネジメントコンソール にサインインして、CodeDeploy コンソール https://console.aws.amazon.com/codedeploy を開きます。

    注記

    CodeDeploy の開始方法」で設定したのと同じユーザーでサインインします。

  2. ナビゲーションペインで、Deploy を展開し、On-premises instances を選択します。

  3. オンプレミスインスタンスのリストで、タグ付けするオンプレミスインスタンスの名前を選択します。

  4. タグのリストで、目的のタグキーとタグ値を選択または入力します。タグキーとタグ値を入力するたびに、別の行が表示されます。最大 10 個のタグにこれを繰り返すことができます。タグを削除するには[削除] を選択してください。

  5. タグを追加したら、[Update Tags] を選択します。

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

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

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

重要

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

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

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

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