root プロファイル以外のユーザープロファイルで CodeDeploy エージェントを実行するにはどうしたらよいですか。

最終更新日: 2022 年 2 月 7 日

root プロファイル以外のユーザープロファイルで AWS CodeDeploy エージェントを実行するにはどうしたらよいですか。設定する方法を教えてください。

簡単な説明

ルートプロファイルではないユーザープロファイルで CodeDeploy エージェントを実行するには、以下の操作を行います。

1.    (前提条件) CodeDeploy エージェントが Amazon Elastic Compute Cloud (Amazon EC2) インスタンスにインストールされていることを確認します。

2.    CodeDeploy エージェント設定ファイルでユーザーを変更し、必要な許可をユーザーに付与します。

3.    Amazon EC2 起動設定テンプレートと Auto Scaling グループを作成して、ユーザー変更プロセスを自動化する。

4.    CodeDeploy エージェントがインストールされ、Amazon EC2 インスタンスに正しいユーザーで実行されていることを確認して、セットアップをテストします。

注: これらのステップは、Amazon Linux 1 または Amazon Linux 2 Amazon マシンイメージ (AMI) を使用するインスタンスに適用できます。ただし、Amazon Linux 1 AMI はメンテナンスサポートステータスになっています。このステータスでは、AMI が受け取るのは、削減されたパッケージセットに対するクリティカルかつ重要なセキュリティアップデートのみです。AMI は、EC2 プラットフォームの新機能や AWS の新機能のサポートも保証されなくなりました。

解決方法

注: AWS Command Line Interface (AWS CLI) コマンドの実行中にエラーが発生した場合は、最新の AWS CLI バージョンを使用していることを確認してください

(前提条件) Amazon EC2 インスタンスに CodeDeploy エージェントがインストールされていることを確認します

CodeDeploy ユーザーガイドの 「Verify the CodeDeploy agent is running」(CodeDeploy エージェントが実行されていることを確認する) の手順に従います。

CodeDeploy エージェントのインストール方法については、「Install the CodeDeploy agent」(CodeDeploy エージェントのインストール) を参照してください。

CodeDeploy エージェント設定ファイルでユーザーを変更し、必要な許可をユーザーに付与します

1.    SSH を使用して Amazon EC2 インスタンスに接続します

2.    次のコマンドを実行して、インスタンスにインストールされている CodeDeploy ホストエージェントを停止します。

sudo service codedeploy-agent stop

3.    次の sed stream editor コマンドを実行して、CodeDeploy エージェント設定ファイルでユーザーを変更します。

重要: ec2-user は、CodeDeploy ホストエージェントを実行させたいユーザー名に置き換えてください。

sudo sed -i 's/""/"ec2-user"/g' /etc/init.d/codedeploy-agent

重要: Amazon Linux 2 AMI の場合は、次の 2 つのコマンドも実行する必要があります。

sudo sed -i 's/#User=codedeploy/User=ec2-user/g' /usr/lib/systemd/system/codedeploy-agent.service
sudo systemctl daemon-reload

4.    次の 2 つのコマンドを実行して、必要なディレクトリに対する新しいユーザー許可を付与します。

重要: ec2-user は、CodeDeploy ホストエージェントを実行させたいユーザー名に置き換えてください。

sudo chown ec2-user:ec2-user -R /opt/codedeploy-agent/
sudo chown ec2-user:ec2-user -R /var/log/aws/

5.    CodeDeploy エージェントを再起動し、設定ファイルへの更新が成功したことを確認するには、次のコマンドを実行します。

sudo service codedeploy-agent start
sudo service codedeploy-agent status

正常に実行されたコマンド出力の例

The AWS CodeDeploy agent is running as PID ####

6.    次のコマンドを実行して、どのプロセスが実行されており、どのユーザーがそれらのプロセスを実行しているのかを確認します。

ps aux | grep codedeploy-agent

Amazon EC2 起動設定テンプレートと Auto Scaling グループを作成して、ユーザー変更プロセスを自動化する

新しいインスタンスの起動時に CodeDeploy エージェントがインストールされ、正しいユーザーで実行されていることを確認するには、以下の操作を行います。

1.    Amazon EC2 コンソールを開きます。

2.    ナビゲーションペインで、[Launch Configurations] を選択します。

3.    [Create launch configuration] を選択します。

4.    [Amazon Linux AMI] を選択します。

5.    [Next: Configure details] を選択します。

6.    [IAM ロール] で、事前設定された AWS Identity and Access Management (IAM) ロールを選択します。ロールは、Amazon Simple Storage Service (Amazon S3) リソースへのアクセス許可を EC2 インスタンスに付与する必要があります。

7.    [Advanced Details] を選択します。

8.    エージェント設定ファイルの [User data] セクションに、コマンドを入力して CodeDeploy エージェントをインストールします。次に、特定のユーザーを使用するようにファイルを更新します。

エージェント設定ファイルの例

重要: ec2-user は、CodeDeploy ホストエージェントを実行させたいユーザー名に置き換えてください。次のサンプルコードは、定義済みの起動設定を使用する新しいインスタンスが起動されると自動的に実行されます。

#!/bin/bash
REGION=$(curl 169.254.169.254/latest/meta-data/placement/availability-zone/ | sed 's/[a-z]$//')
yum -y update
yum install ruby wget -y
cd /home/ec2-user
wget https://aws-codedeploy-$REGION.s3.amazonaws.com/latest/install
chmod +x ./install
./install auto
service codedeploy-agent stop
#adduser username <--- this is only required if you use a username that does not already exist
sed -i 's/""/"ec2-user"/g' /etc/init.d/codedeploy-agent
#sed -i 's/#User=codedeploy/User=ec2-user/g' /usr/lib/systemd/system/codedeploy-agent.service  <--- Uncomment this line for Amazon Linux 2
systemctl daemon-reload
chown ec2-user:ec2-user -R /opt/codedeploy-agent/
chown ec2-user:ec2-user -R /var/log/aws/
service codedeploy-agent start

9.    必要に応じて AWS Launch Wizard の残りのステップを完了します。次に、[Create launch configuration] を選択します。

10.    [Create an Auto Scaling group using this launch configuration] を選択します。

11.    Group name には、Auto Scaling グループの名前を入力してください。

12.    Subnet には、インスタンスがインターネットにアクセスできるようにするサブネットを入力してください。

13.    [Next: Configure scaling policies] を選択します。次に、必要に応じてポリシーを選択します。

14.    Launch Wizard の残りのステップを完了します。次に [Create Auto Scaling Group] を選択します。

CodeDeploy エージェントがインストールされ、新しい Amazon EC2 インスタンスに正しいユーザーで実行されていることを確認して、セットアップをテストします

Amazon EC2 インスタンスが実行中であることを確認します。その後、以下を実行します。

1.    SSH を使用して Amazon EC2 インスタンスに接続します。

2.    以下のコマンドを実行して、CodeDeploy エージェントが Amazon EC2 インスタンスで実行されていることを確認します。

sudo service codedeploy-agent status

3.    以下のコマンドを実行して、CodeDeploy エージェントが正しいユーザー名で実行されていることを確認します。

ps aux | grep codedeploy-agent

正常に実行されたコマンド出力の例

The AWS CodeDeploy agent is running as PID ####

この記事はお役に立ちましたか。


請求に関するサポートまたは技術サポートが必要ですか?