Amazon web services AWS Cloudformation为ec2用户数据调用bash脚本

Amazon web services AWS Cloudformation为ec2用户数据调用bash脚本,amazon-web-services,tomcat,amazon-cloudformation,Amazon Web Services,Tomcat,Amazon Cloudformation,我已经为EC2实例创建了一个cloudformation模板,它将在用户数据中设置Tomcat。当脚本嵌入到模板中时,模板可以正常工作。但是我想在一个单独的bash脚本(名为tomcat.sh)中移动该脚本,并使用userdata作为AWS CLI中的cfn参数调用该脚本。但是得到了错误 aws cloudformation create-stack --stack-name EC2Instance2 --template-url s3://cfn04012021/14-01-CFN-EC2-I

我已经为EC2实例创建了一个cloudformation模板,它将在用户数据中设置Tomcat。当脚本嵌入到模板中时,模板可以正常工作。但是我想在一个单独的bash脚本(名为tomcat.sh)中移动该脚本,并使用userdata作为AWS CLI中的cfn参数调用该脚本。但是得到了错误

aws cloudformation create-stack --stack-name EC2Instance2 --template-url s3://cfn04012021/14-01-CFN-EC2-Instance2.yml --parameters ParameterKey=UserData,ParameterValue=$(base64 -w0 tomcat)

usage: aws [options] <command> <subcommand> [<subcommand> ...] [parameters]
To see help text, you can run:

  aws help
  aws <command> help
  aws <command> <subcommand> help

Unknown options: -w0, tomcat)
bash脚本是

#!/bin/bash|
sudo amazon-linux-extras install java-openjdk11
sudo groupadd --system tomcat 
sudo useradd -d /usr/share/tomcat -r -s /bin/false -g tomcat tomcat
getent passwd tomcat
getent group tomcat
export VER="9.0.41"
wget https://archive.apache.org/dist/tomcat/tomcat-9/v${VER}/bin/apache-tomcat-${VER}.tar.gz
sudo tar xvf apache-tomcat-${VER}.tar.gz -C /usr/share/
sudo ln -s /usr/share/apache-tomcat-$VER/ /usr/share/tomcat
sudo chown -R tomcat:tomcat /usr/share/tomcat
sudo chown -R tomcat:tomcat /usr/share/apache-tomcat-$VER/ 
sudo tee /etc/systemd/system/tomcat.service<<EOF
[Unit]
Description=Tomcat Server
After=syslog.target network.target

[Service]
Type=forking
User=tomcat
Group=tomcat

Environment=JAVA_HOME=/usr/lib/jvm/jre
Environment='JAVA_OPTS=-Djava.awt.headless=true'
Environment=CATALINA_HOME=/usr/share/tomcat
Environment=CATALINA_BASE=/usr/share/tomcat
Environment=CATALINA_PID=/usr/share/tomcat/temp/tomcat.pid
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M'
ExecStart=/usr/share/tomcat/bin/catalina.sh start
ExecStop=/usr/share/tomcat/bin/catalina.sh stop

[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl start tomcat
sudo systemctl enable tomcat
#/bin/bash|
SudoAmazonLinuxExtras安装java-openjdk11
sudogroupadd——系统tomcat
sudo useradd-d/usr/share/tomcat-r-s/bin/false-g tomcat
野猫
野猫
导出版本=“9.0.41”
wgethttps://archive.apache.org/dist/tomcat/tomcat-9/v${VER}/bin/apachetomcat-${VER}.tar.gz
sudo tar xvf apache tomcat-${VER}.tar.gz-C/usr/share/
sudo ln-s/usr/share/apachetomcat-$VER//usr/share/tomcat
sudo chown-R tomcat:tomcat/usr/share/tomcat
sudochown-rtomcat:tomcat/usr/share/apachetomcat-$VER/

sudo-tee/etc/systemd/system/tomcat.service您在哪个平台和shell上运行aws cli命令?我正在使用Windows 10使用aws cli运行cloudformation Windows 10的cmd不支持bash的
$()
语法。我不知道有什么方法可以做同样的事情。就我个人而言,如果您使用的是Windows 10,我会考虑使用WSL编写脚本,但可能其他人知道cmd特定的答案。另外:您的脚本在
|
上有一个额外的
|
行。错误来自
base64-w0 tomcat
“未知选项:-w0,tomcat)”
#!/bin/bash|
sudo amazon-linux-extras install java-openjdk11
sudo groupadd --system tomcat 
sudo useradd -d /usr/share/tomcat -r -s /bin/false -g tomcat tomcat
getent passwd tomcat
getent group tomcat
export VER="9.0.41"
wget https://archive.apache.org/dist/tomcat/tomcat-9/v${VER}/bin/apache-tomcat-${VER}.tar.gz
sudo tar xvf apache-tomcat-${VER}.tar.gz -C /usr/share/
sudo ln -s /usr/share/apache-tomcat-$VER/ /usr/share/tomcat
sudo chown -R tomcat:tomcat /usr/share/tomcat
sudo chown -R tomcat:tomcat /usr/share/apache-tomcat-$VER/ 
sudo tee /etc/systemd/system/tomcat.service<<EOF
[Unit]
Description=Tomcat Server
After=syslog.target network.target

[Service]
Type=forking
User=tomcat
Group=tomcat

Environment=JAVA_HOME=/usr/lib/jvm/jre
Environment='JAVA_OPTS=-Djava.awt.headless=true'
Environment=CATALINA_HOME=/usr/share/tomcat
Environment=CATALINA_BASE=/usr/share/tomcat
Environment=CATALINA_PID=/usr/share/tomcat/temp/tomcat.pid
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M'
ExecStart=/usr/share/tomcat/bin/catalina.sh start
ExecStop=/usr/share/tomcat/bin/catalina.sh stop

[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl start tomcat
sudo systemctl enable tomcat