0

CodeCommit からデプロイしているリビジョン (アーティファクト) のルートに appspec.yml ファイルがあります。

version: 0.0
os: linux
files:
  - source: /
    destination: /home/ec2-user/app/aws
file_exists_behavior: OVERWRITE
hooks:
  ApplicationStart:
    - location: /home/ec2-user/app/aws/update_wheel.sh
      timeout: 300
      runas: root

私はcodedeployagent.yml自分のec2インスタンスを変更しました(この問題に対処するために、:root_dir:手動で変更することは、たとえそれがうまくいったとしても理想的な解決策ではありません):

/etc/codedeploy-agent/conf/codedeployagent.yml
---
:log_aws_wire: false
:log_dir: '/var/log/aws/codedeploy-agent/'
:pid_dir: '/opt/codedeploy-agent/state/.pid/'
:program_name: codedeploy-agent
:root_dir: '/home/ec2-user/'
:verbose: false
:wait_between_runs: 1
:proxy_uri:
:max_revisions: 2

しかし、私はまだ次のようなエラーが発生しています:

/home/ec2-user/app/aws/update_wheel.sh
Script does not exist at specified location: /home/ec2-user/xxxxxx-cb84-4ef6-966b-xxxxxxxxx/d-xxxxx/deployment-archive/home/ec2-user/app/aws/update_wheel.sh

にコピーfilesしていて、destinationそれらのファイルを使用することが期待されていない理由、またはそれらの(シェルスクリプト)ファイルが元のパスを使用することを期待すべきではない理由がよくわかりません。を何destinationにコピーすればよいのですか? codeagent 構成で設定したものを期待source filesできないのはなぜですか?hooks:root_dir

4

1 に答える 1

0

バンドルlocationに関しては常に次のとおりです。

. リビジョンのスクリプト ファイルのバンドル内の場所。hooks セクションで指定するスクリプトの場所は、アプリケーション リビジョン バンドルのルートに相対的です。

すべての展開に変更したためroot_dir: '/home/ec2-user/'、そのフォルダーに保存されます。これには、 CodeDeploy に固有の値を使用する必要がDeployment IDあります。Execution ID

したがって、バンドルへの相対パスのみを使用する必要があります。あなたは試すことができます:

location: run_in_home_folder.sh

どこrun_in_home_folder.shですか

#!/bin/bash

cd /home/ec2-user/app/aws && sh ./update_wheel.sh
于 2021-09-13T01:49:38.580 に答える