我最近一直在研究Django应用程序,试图让它与Amazon Elastic Beanstalk一起使用.
在我的.ebextensions/python.config文件中,我设置了以下内容:
option_settings:
- namespace: aws:elasticbeanstalk:application:environment
option_name: ProductionBucket
value: s3-bucket-name
- namespace: aws:elasticbeanstalk:application:environment
option_name: ProductionCache
value: memcached-server.site.com:11211
Run Code Online (Sandbox Code Playgroud)
但是,每当我查看服务器时,都没有设置这样的环境变量(因此,当我尝试时无法访问) os.getenv('ProductionBucket')
我遇到了这个页面似乎试图记录所有命名空间.我也尝试使用PARAM1作为选项名称,但有类似的结果.
如何在Amazon Elastic Beanstalk中设置环境变量?
编辑:
我还尝试在所有其他命令之前添加命令,这些命令只会导出一个环境变量:
commands:
01_env_vars:
command: "source scripts/env_vars"
Run Code Online (Sandbox Code Playgroud)
......这也不成功
python environment-variables amazon-web-services amazon-elastic-beanstalk
如何从我在此处找到的AWS Elastic Beanstalk应用程序中读取环境属性:
Configuration > Software Configuration > Environment Properties
Run Code Online (Sandbox Code Playgroud)
以下方法均不起作用:
ConfigurationManager.AppSettings["MyServiceUrl"]
ConfigurationManager.AppSettings["aws:elasticbeanstalk:application:environment.MyServiceUrl"]
Environment.GetEnvironmentVariable("MyServiceUrl")
Environment.GetEnvironmentVariable("aws:elasticbeanstalk:application:environment.MyServiceUrl")
Run Code Online (Sandbox Code Playgroud)
"完全限定"名称尝试来自AWS EB文档.
有任何想法吗?
目前使用Elastic Beanstalk运行Docker容器,我需要将重要信息作为环境变量传递给我的容器.
我目前的Dockerrun.aws.json看起来像这样:
{
"AWSEBDockerrunVersion": "1",
"Image": {
"Name": "b2boost/rabbitelasticdockstash",
"Update": "true"
},
"Ports": [
{
"ContainerPort": "80"
}
],
"environment": [
{
"name": "RABBITMQ_HOST",
"value": "RABBITMQ_HOST"
},
{
"name": "RABBITMQ_PASSWORD",
"value": "RABBITMQ_PASSWORD"
},
{
"name": "RABBITMQ_USER",
"value": "RABBITMQ_USER"
},
{
"name": "RABBITMQ_VHOST",
"value": "RABBITMQ_VHOST"
},
{
"name": "ELASTICSEARCH_HOST",
"value": "ELASTICSEARCH_HOST"
},
{
"name": "ELASTICSEARCH_PASSWORD",
"value": "ELASTICSEARCH_PASSWORD"
},
{
"name": "ELASTICSEARCH_PORT",
"value": "ELASTICSEARCH_PORT"
},
{
"name": "ELASTICSEARCH_PROTOCOL",
"value": "ELASTICSEARCH_PROTOCOL"
},
{
"name": "ELASTICSEARCH_USER",
"value": "ELASTICSEARCH_USER"
}
],
"Volumes": [
], …Run Code Online (Sandbox Code Playgroud) 我有一个spring-boot应用程序,我需要指定石墨服务器和端口(发送指标).要做到这一点,我必须安装和配置statsd.我这样做是使用该ebextensions文件.
commands:
01_nodejs_install:
command: sudo yum -y install nodejs npm --enablerepo=epel
ignoreErrors: true
02_mkdir_statsd:
command: mkdir /home/ec2-user/statsd
ignoreErrors: true
03_fetch_statsd:
command: git clone https://github.com/etsy/statsd.git /home/ec2-user/statsd
ignoreErrors: true
04_change_example_config:
command: "cat exampleConfig.js | sed 's/2003/<graphite-port>/g' | sed 's/graphite.example.com/<my-graphite-server>/g' > config.js"
cwd: /home/ec2-user/statsd
05_run_statsd:
command: setsid node stats.js config.js >/dev/null 2>&1 < /dev/null &
cwd: /home/ec2-user/statsd
Run Code Online (Sandbox Code Playgroud)
这种配置的问题是我可以在这里为所有环境仅指定1个石墨服务器.
所以我决定将命令04和05移入container_commands.我想定义叫做环境变量的ENV_NAME 使用魔豆控制台/ UI,并将其设置为dev,qa或prod根据环境.然后我可以使用test选项container_commands仅基于此特定环境运行04和05命令ENV_NAME.
所以我的问题是 - …
java environment-variables amazon-web-services amazon-elastic-beanstalk ebextensions
如何使用create-environment或其他子命令创建RDS实例aws elasticbeanstalk?我尝试了几种参数组合无济于事.以下是一个例子.
APP_NAME="randall-railsapp"
aws s3api create-bucket --bucket "$APP_NAME"
APP_VERSION="$(git describe --always)"
APP_FILE="deploy-$APP_NAME-$APP_VERSION.zip"
git archive -o "$APP_FILE" HEAD
aws s3 cp "$APP_FILE" "s3://$APP_NAME/$APP_FILE"
aws --region us-east-1 elasticbeanstalk create-application-version \
--auto-create-application \
--application-name "$APP_NAME" \
--version-label "$APP_VERSION" \
--source-bundle S3Bucket="$APP_NAME",S3Key="$APP_FILE"
aws --region us-east-1 elasticbeanstalk create-environment \
--application-name "$APP_NAME" \
--version-label "$APP_VERSION" \
--environment-name "$APP_NAME-env" \
--description "randall's rails app environment" \
--solution-stack-name "64bit Amazon Linux 2014.03 v1.0.0 running Ruby 2.1 (Puma)" \
--cname-prefix "$APP_NAME-test" \
--option-settings file://test.json
Run Code Online (Sandbox Code Playgroud)
以及内容 …
amazon-web-services amazon-rds aws-cli amazon-elastic-beanstalk
在我的Elastic Beanstalk中 - 容器选项.RACK_ENV设置为staging.
事实上,如果我SSH到EC2实例和做rails console的/var/app/current/,然后键入Rails.env返回staging.
阅读http://www.modrails.com/documentation/Users指南Nginx.html#RackEnv
它表示要设置RACK_ENV变量,因为默认情况下,值为production.
你会认为一切都会有效,除了在Elastic Beanstalk日志中,它说:
[ 2013-11-18 14:28:26.4677 8061/7fb5fe01a700 Pool2/Implementation.cpp:1274 ]: [App 7428 stdout] PG::ConnectionBad (FATAL: database "foobar_production" does not exist
Run Code Online (Sandbox Code Playgroud)
foobar_production数据库不存在,但foobar_staging确实存在.那么为什么Passenger仍然在关注生产环境,何时应该关注分期.
了解如何在AWS Elastic Beanstalk上设置自定义环境变量,我想知道环境名称是否有默认环境属性。如果有,文档中在哪里对此进行了描述?
例如,假设我的 EB 环境名为“my_env”,是否有某种默认环境属性(例如“AWS_EB_ENV_NAME”)可供我访问以获取此名称?
environment-variables amazon-web-services amazon-elastic-beanstalk
我正在尝试在 AWS 上建立一个项目。我正在使用 CodePipeline 将代码部署到 Elastic Beanstalk,源代码来自 git 存储库。这很好用。
该项目有一些我不想包含在 git 存储库中的配置文件(密码和设置等)。由于它们不在 git 存储库中,因此它们不由 CodePipeline 部署。
如何将配置文件包含在 CodePipeline 中而不将它们包含在 git 存储库中?
想法:我尝试在 CodePipeline 中添加额外的 S3 源,其中包含配置文件。然后,我必须添加额外的部署操作来部署新的 S3 源。但随后这两个部署过程会发生冲突,并且只有其中一个成功。如果我重试失败的那个,成功的那个部署的任何内容都会被再次删除。似乎不可能将两个输入工件(源)添加到单个部署操作中。
.net ×1
amazon-rds ×1
asp.net ×1
aws-cli ×1
docker ×1
ebextensions ×1
java ×1
passenger ×1
python ×1