为什么在使用 AWSJavaScriptSDK 时忽略 ElasticBeanstalk .ebextensions?
Why are ElasticBeanstalk .ebextensions ignored when using AWSJavaScriptSDK?
当使用 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
个文件。
VersionLabel
不能包含逗号。
在 Lambda 中,我使用的是 new Date().toUTCString()
,它被附加到静态版本标签。这会产生类似 "myVersionString Mon, 09 Sep 2019 08:16:23 GMT"
的字符串。包含的逗号导致 .ebextensions
无法被 Elastic Beanstalk 正确提取。
我现在只附加一个不包含任何逗号的 ISO 字符串。
const versionLabel = "myVersionString" + (new Date().toISOString());
当使用 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
个文件。
VersionLabel
不能包含逗号。
在 Lambda 中,我使用的是 new Date().toUTCString()
,它被附加到静态版本标签。这会产生类似 "myVersionString Mon, 09 Sep 2019 08:16:23 GMT"
的字符串。包含的逗号导致 .ebextensions
无法被 Elastic Beanstalk 正确提取。
我现在只附加一个不包含任何逗号的 ISO 字符串。
const versionLabel = "myVersionString" + (new Date().toISOString());