首页 > 解决方案 > AWS 代码管道错误:指定位置的脚本:scripts/install_dependencies 以用户身份运行 oracle 失败,退出代码为 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 的 code-deploy-agent 以非 root 用户身份运行 shell 脚本?

标签: oracleamazon-web-servicesamazon-s3aws-code-deployaws-codepipeline

解决方案


问题已解决,在我更新了 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

推荐阅读