Search code examples
oracle-databaseamazon-web-servicesamazon-s3aws-code-deployaws-codepipeline

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


I have an Oracle DB installed on an ec2 instance and I want to run a script on that server so that whenever I put a script into the s3 bucket then code pipeline will trigger and deploy the script to instances in deployment group. my s3 bucket versioning is enabled, my source is s3 and deployment is code deploy

but my shell script is keeps getting failed due to permission error, sqlplus needs the script to run as oracle user but it's giving me following error!

enter image description here Below is the code inside install_dependencies.sh file:

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

My appspec file code:

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

I've already made an entry for Oracle in /etc/sudoers file but it also didn't work out. So how can I run a shell script as a non-root user using code-deploy-agent for ec2?


Solution

  • issue resolved, after i updated the shell script:

    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