当使用 AWS JavaScript SDK 更新 ElasticBeanstalk 环境时,我.ebextensions/*
被忽略了。我将应用程序源包作为 .zip 文件上传到 S3,这会触发 Lambda 使用以下代码部署新的应用程序版本:
const elasticbeanstalk = new AWS.ElasticBeanstalk();
exports.handler = async (event) => {
const versionLabel = "myVersionString" + (new Date().toUTCString());
// elasticbeanstalk.createApplicationVersion [...]
elasticbeanstalk.updateEnvironment({
"EnvironmentName": "myEBEnvironment",
"VersionLabel": versionLabel
});
};
在 AWS 管理控制台中上传相同的源包时,我的所有内容.ebextensions
都按预期执行。
*.config 文件内部没有什么特别之处。我只是根据环境变量创建一些文件以供以后使用,例如
files:
"/home/ec2-user/prepare_key.sh":
mode: "000777"
content: |
#!/bin/bash
if [ -z ${MY_KEY+x} ]
then
echo "MY_KEY is not set. skip."
else
echo "prepare MY_KEY ..."
echo $MY_KEY > /home/ec2-user/key
fi
container_commands:
set_up:
command: "/home/ec2-user/prepare_key.sh"
因此,/home/ec2-user/prepare_key.sh
不会生成(或更新)文件,并且set_up
不会在 Lambda 部署期间执行命令。
我仔细检查了源包。我所有的.ebextensions/*.config
文件都在那里。我的项目目录中没有.ebignore
文件。