AWS Code Pipeline Error: Script at specified location: scripts/install_dependencies run as user oracle failed with exit code 127

AWS Code Pipeline Error: Script at specified location: scripts/install_dependencies run as user oracle failed with exit code 127

我在 ec2 实例上安装了一个 Oracle 数据库,我想 运行 该服务器上的一个脚本,这样每当我将脚本放入 s3 存储桶时,代码管道就会触发并将脚本部署到部署组中的实例。 我的 s3 存储桶版本控制已启用,我的源是 s3,部署是代码部署

但是我的 shell 脚本由于权限错误而不断失败,sqlplus 需要脚本 运行 作为 oracle 用户,但它给了我以下错误!

下面是 install_dependencies.sh 文件中的代码:

rm -rf /oracle/backup/*
echo "oracle" | sudo -S sleep 2 && sudo su - oracle
sqlplus -s "/ as sysdba" <<EOF
whenever sqlerror exit sql.sqlcode;
set echo on;
set serveroutput on;

create table demo01 id(a number);
insert into demo01 values(1);
commit;

exit;
EOF

我的 appspec 文件代码:

version: 0.0
os: linux
files:
  - source: /db.dmp
    destination: /oracle/backup/
hooks:
  BeforeInstall:
    - location: scripts/install_dependencies
      timeout: 3000
      runas: oracle

我已经在 /etc/sudoers 文件中为 Oracle 创建了一个条目,但也没有成功。那么我如何 运行 作为非根用户使用 ec2 的代码部署代理的 shell 脚本?

问题已解决,在我更新 shell 脚本后:

echo "oracle" | sudo -S sleep 2 && sudo su - oracle -c 'sqlplus / as sysdba'  <<EOF
whenever sqlerror exit sql.sqlcode;
set echo on;
set serveroutput on;
create table demo02 (a number);
insert into demo02 values(1);
commit;
exit;
EOF