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

最終更新日: 2019 年 11 月 19 日

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

解決方法

ユーザーアクセス許可を設定し、ユーザー変更プロセスを自動化し、そのプロセスを確認することで、ユーザープロファイルを使用してエージェントを実行できます。

手順を開始する前に、CodeDeploy エージェント が Amazon Elastic Compute Cloud (Amazon EC2) インスタンスにインストールされていることを確認してください。

注: 以下のステップは、Amazon Linux 1 または Amazon Linux 2 Amazon Machine Image (AMI) を使用するインスタンスに適用できます。

ユーザーを変更し、エージェントが実行されるユーザーのための許可を設定する

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

2.    CodeDeploy ホストエージェントを停止するには、次のコマンドを実行します。

sudo service codedeploy-agent stop

3.    CodeDeploy エージェント設定ファイルを変更するには、sed stream editor コマンドを実行します。

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

重要: Amazon Linux 2 AMI については、この追加のコマンドを実行します。

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

注: 前出のコマンドの ec2-user は、CodeDeploy ホストエージェントを実行させたいユーザー名に置き換えてください。

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

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

ユーザー変更プロセスを自動化する

新しいインスタンスが起動されるときに (スケーリングイベント中など) CodeDeploy エージェントがインストールされており、正しいユーザーで実行されていることを確認するには、以下のステップを完了してユーザー変更プロセスを自動化します。

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

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

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

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

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

6.    IAM ロールについては、Amazon Simple Storage Service (Amazon S3) リソースにアクセスする許可を EC2 インスタンスに付与する、事前設定された AWS Identity and Access Management (IAM) ロールを選択します。

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

8.    エージェント設定ファイルの [User data] セクションに、コマンドを入力して 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

注意: ec2-user は、CodeDeploy ホストエージェントを実行させたいユーザー名に置き換えてください。前出のコードは、この起動設定を使用する新しいインスタンスが起動されるときに自動で実行されます。

9.    起動ウィザードの残りの手順を必要に応じて実行し、[Create launch configuration] を選択します。

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

11.    次のように入力します。
Group name には、Auto Scaling グループの名前を入力してください。
Subnet には、インスタンスがインターネットにアクセスできるようにするサブネットを入力してください。

12.    [Next: Configure scaling policies] を選択し、ニーズに合わせてポリシーを選択します。

13.    起動ウィザードの残りの手順を完了して、[Create Auto Scaling Group] を選択します。

ユーザー変更プロセスを自動化するために作成したインスタンスで CodeDeploy エージェントが実行されていることを確認する

インスタンスが実行中であることを確認してから、以下のステップを実行します。

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

2.    次のコマンドを実行します。

sudo service codedeploy-agent status

3.    正しいユーザー名が使用されていることを確認するには、次のコマンドを実行します。

ps aux | grep codedeploy-agent

CodeDeploy エージェントが実行されている場合は、次のような出力が表示されます。

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

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

改善できることはありますか?


さらにサポートが必要な場合