root プロファイル以外のユーザープロファイルで CodeDeploy エージェントを実行する方法を教えてください。

所要時間3分
0

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 エージェント設定ファイルで、ユーザーを変更し、必要なアクセス許可をそのユーザーに付与します。

次の手順を実行します。

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

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

    sudo service codedeploy-agent stop
  3. CodeDeploy エージェント設定ファイル内のユーザーを変更するには、次のストリームエディタコマンド sed を実行します。

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

    注: ec2-user は、CodeDeploy ホストエージェントを実行するユーザー名に置き換えます。sed コマンドの詳細については、GNU のウェブサイトで「概要」を参照してください。

  4. systemd 設定を再ロードするには、次のコマンドを実行します。

    sudo sed -i 's/#User=codedeploy/User=ec2-user/g' /usr/lib/systemd/system/codedeploy-agent.service
    sudo systemctl daemon-reload
  5. 必要なディレクトリへのアクセス許可を新しいユーザーに付与するには、次のコマンドを実行します。

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

    注: ec2-user は、CodeDeploy のホストエージェントを実行するユーザー名に置き換えます。

  6. CodeDeploy エージェントを再起動するには、次のコマンドを実行します。

    sudo service codedeploy-agent start
  7. 設定ファイルが更新されたことを確認するには、次のコマンドを実行します。

    sudo service codedeploy-agent status

    出力例

    The AWS CodeDeploy agent is running as PID ####
  8. 実行中のプロセスと、そのプロセスを実行しているユーザーを確認するには、次のコマンドを実行します。

    ps aux | grep codedeploy-agent

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

次の手順を実行します。

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

  2. ナビゲーションペインで [起動設定] を選択します。

  3. [起動設定の作成] を選択します。

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

  5. [次へ: 詳細の設定] を設定します。

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

  7. [詳細情報] を選択します。

  8. エージェント設定ファイルの [ユーザーデータ] セクションに、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 のホストエージェントを実行するユーザー名に置き換えます。上記のサンプルコードは、定義した起動設定を使用する新しいインスタンスを起動する際に、自動的に実行されます。

  9. 起動ウィザードで、残りのステップを完了します。次に、[起動設定の作成] を選択します。

  10. [この起動設定を使用して AWS Auto Scaling グループを作成する] を選択します。

  11. [グループ名] に Auto Scaling グループの名前を入力します。

  12. [サブネット] に、インスタンスがインターネットにアクセスすることを許可するサブネットを入力します。

  13. [次へ: スケーリングポリシーの設定] を選択し、ポリシーを選択します。

  14. 起動ウィザードの残りのステップを完了し、[AWS Auto Scaling グループの作成] を選択します。

新しいインスタンスに CodeDeploy エージェントがインストールされており、正しいユーザーで実行されていることを確認する

まず、インスタンスが実行中であることを確認します。次に、以下の操作を実行します。

  1. SSH を使用してインスタンスに接続します
  2. CodeDeploy エージェントがインスタンスで実行されていることを確認するには、次のコマンドを実行します。
    sudo service codedeploy-agent status
    コマンドがエラーを返す場合は、CodeDeploy エージェントはインストールされていません。CodeDeploy エージェントをインストールします
  3. CodeDeploy エージェントが正しいユーザー名で実行されていることを確認するには、次のコマンドを実行します。
    ps aux | grep codedeploy-agent
    出力例
    The AWS CodeDeploy agent is running as PID ####
AWS公式
AWS公式更新しました 2ヶ月前
コメントはありません

関連するコンテンツ