Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
root プロファイル以外のユーザープロファイルで CodeDeploy エージェントを実行する方法を教えてください。
root プロファイル以外のユーザープロファイルで AWS CodeDeploy エージェントを実行したいです。
解決策
Amazon Linux 1 Amazon マシンイメージ (AMI) は、Amazon Linux 2 と Amazon Linux 2023 に置き換えられました。今後、Amazon Linux 1 AMI を Amazon Elastic Compute Cloud (Amazon EC2) インスタンスとして起動することはできません。次の解決策は、CodeDeploy エージェントのサポートされているすべての RPM および Debian ベースの Linux ディストリビューションと互換性があります。
前提条件: EC2 インスタンスに CodeDepoly エージェントをインストールするか、インスタンスで CodeDepoly エージェントが実行中であることを確認します。
CodeDeploy エージェント設定ファイルで、ユーザーを変更し、必要なアクセス許可をそのユーザーに付与します。
次の手順を実行します。
-
インスタンスにインストールされている CodeDeploy ホストエージェントを停止するには、次のコマンドを実行します。
sudo service codedeploy-agent stop
-
CodeDeploy エージェント設定ファイル内のユーザーを変更するには、次のストリームエディタコマンド sed を実行します。
sudo sed -i 's/""/"ec2-user"/g' /etc/init.d/codedeploy-agent
注: ec2-user は、CodeDeploy ホストエージェントを実行するユーザー名に置き換えます。sed コマンドの詳細については、GNU のウェブサイトで「概要」を参照してください。
-
systemd 設定を再ロードするには、次のコマンドを実行します。
sudo sed -i 's/#User=codedeploy/User=ec2-user/g' /usr/lib/systemd/system/codedeploy-agent.service sudo systemctl daemon-reload
-
必要なディレクトリへのアクセス許可を新しいユーザーに付与するには、次のコマンドを実行します。
sudo chown ec2-user:ec2-user -R /opt/codedeploy-agent/ sudo chown ec2-user:ec2-user -R /var/log/aws/
注: ec2-user は、CodeDeploy のホストエージェントを実行するユーザー名に置き換えます。
-
CodeDeploy エージェントを再起動するには、次のコマンドを実行します。
sudo service codedeploy-agent start
-
設定ファイルが更新されたことを確認するには、次のコマンドを実行します。
sudo service codedeploy-agent status
出力例
The AWS CodeDeploy agent is running as PID ####
-
実行中のプロセスと、そのプロセスを実行しているユーザーを確認するには、次のコマンドを実行します。
ps aux | grep codedeploy-agent
起動設定テンプレートと AWS Auto Scaling グループを作成してユーザー変更プロセスを自動化する
次の手順を実行します。
-
Amazon EC2 コンソールを開きます。
-
ナビゲーションペインで [起動設定] を選択します。
-
[起動設定の作成] を選択します。
-
Amazon Linux AMI を選択します。
-
[次へ: 詳細の設定] を設定します。
-
[IAM ロール] で事前設定済みの AWS Identity and Access Management (IAM) ロールを選択します。このロールにより、Amazon Simple Storage Service (Amazon S3) リソースに対するアクセス許可をインスタンスに付与する必要があります。
-
[詳細情報] を選択します。
-
エージェント設定ファイルの [ユーザーデータ] セクションに、CodeDeploy エージェントをインストールするためのコマンドを入力します。次に、特定のユーザーを使用するようにファイルを更新します。
IMDSv1 では、次のスクリプトを実行します。#!/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 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
IMDSv2 では、次のスクリプトを実行します。
#!/bin/bash TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` REGION=$(curl -H "X-aws-ec2-metadata-token: $TOKEN" http://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 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 のホストエージェントを実行するユーザー名に置き換えます。上記のサンプルコードは、定義した起動設定を使用する新しいインスタンスを起動する際に、自動的に実行されます。
-
起動ウィザードで、残りのステップを完了します。次に、[起動設定の作成] を選択します。
-
[この起動設定を使用して AWS Auto Scaling グループを作成する] を選択します。
-
[グループ名] に Auto Scaling グループの名前を入力します。
-
[サブネット] に、インスタンスがインターネットにアクセスすることを許可するサブネットを入力します。
-
[次へ: スケーリングポリシーの設定] を選択し、ポリシーを選択します。
-
起動ウィザードの残りのステップを完了し、[AWS Auto Scaling グループの作成] を選択します。
新しいインスタンスに CodeDeploy エージェントがインストールされており、正しいユーザーで実行されていることを確認する
まず、インスタンスが実行中であることを確認します。次に、以下の操作を実行します。
- SSH を使用してインスタンスに接続します。
- CodeDeploy エージェントがインスタンスで実行されていることを確認するには、次のコマンドを実行します。
コマンドがエラーを返す場合は、CodeDeploy エージェントはインストールされていません。CodeDeploy エージェントをインストールします。sudo service codedeploy-agent status
- CodeDeploy エージェントが正しいユーザー名で実行されていることを確認するには、次のコマンドを実行します。
出力例ps aux | grep codedeploy-agent
The AWS CodeDeploy agent is running as PID ####
関連するコンテンツ
- 質問済み 4ヶ月前lg...
- 質問済み 1ヶ月前lg...
- AWS公式更新しました 6ヶ月前
- AWS公式更新しました 3年前