相关疑难解决方法(0)

14
推荐指数
2
解决办法
8913
查看次数

AWS Elastic Beanstalk - 为什么我会使用leader_only作为命令?

我正在编写一个django应用程序,我计划通过Elastic Beanstalk部署到AWS.我试图理解为什么我需要为我想要为我的应用运行的容器命令指定'leader_only'.有关这方面的更多细节可以在这里找到.

它说:

此外,您可以使用leader_only.选择一个实例作为Auto Scaling组的领导者.如果leader_only值设置为true,则该命令仅在标记为leader的实例上运行.

如果我有几个实例运行我的应用程序,因为我想缩放它,不会使用'leader_only'只在一个实例上运行命令,而不影响其余的?我可能误解了它的目的,但这看起来并不理想,因为领导者的环境可能与其他实例不同,最终用户可能会得到不同的结果,具体取决于他们碰巧连接到哪个实例.

amazon-web-services amazon-elastic-beanstalk

13
推荐指数
1
解决办法
3801
查看次数

.config 文件被弹性 beantalk AWS 忽略

我有一个在弹性 beantalk 上运行的网络应用程序。出于某种原因,我能够安装 Composer 文件以运行我的 Laravel 应用程序。问题是没有其他配置文件有效。我已将 newrelic.config 放入 .ebextensions/ 目录,但该文件被忽略了。

我最近尝试使用AWS Elastic Beanstalk创建一个 cron 作业,运行一个 cronjob,但它不起作用。

.config 文件示例:

container_commands:
  01_some_cron_job:
    command: "cat .ebextensions/some_cron_job.txt > /etc/cron.d/some_cron_job && chmod 644 /etc/cron.d/some_cron_job"
    leader_only: true
Run Code Online (Sandbox Code Playgroud)

当我通过 ssh 进入 ec2 实例时,没有像 some_cron_job 这样的目录。

源被提交到 beanstalk,但 beanstalk 没有运行命令。

如何让 beanstalk 确认 .config 文件。修复这个 cronjob 也将修复安装新的遗物,因为这两个配置都被忽略了,我不知道为什么。

configuration amazon-web-services amazon-elastic-beanstalk

5
推荐指数
1
解决办法
719
查看次数

在aws弹性豆茎上运行cron作业 - django

我无法让我的cron作业执行.

建立:

Django - 1.9

Elastic beanstalk - 运行Python 3.4的64位Amazon Linux 2016.03 v2.1.3

到目前为止,我已尝试过几种方法:

  1. 使用cron.yaml文件:没有碰到其他任何东西 - 只是将cron.yaml文件添加到我的项目根文件夹

    
    version: 1
    cron:
    - name: "test" url: "http://website.com/workers/test" schedule: "*/10 * * * *"
    Run Code Online (Sandbox Code Playgroud)
  2. 使用容器命令和单独的cron.txt文件:

在我的.ebextensions/development.config文件中添加了这一行

05_some_cron:
    command: "cat .ebextensions/crontab.txt > /etc/cron.d/crontab && chmod 644 /etc/cron.d/crontab"
    leader_only: true
Run Code Online (Sandbox Code Playgroud)

在.ebextensions/crontab.txt中

*/10 * * * * source /opt/python/run/venv/bin/activate && python mysite/manage.py test
Run Code Online (Sandbox Code Playgroud)

该应用程序在两种情况下都能成功部署.

  1. 手动(在浏览器中)访问http://website.com/workers/test有预期的结果(在第一种情况下).
  2. 添加source /opt/python/run/venv/bin/activate && python mysite/manage.py test为管理命令会在部署时运行一次正确的脚本.

日志不会在该URL上显示任何GETS.

我究竟做错了什么?我是否错过了流程的一些步骤或EBS上的一些设置步骤?

另外,为EBS托管的django应用程序运行cron作业的最佳方法是什么? - django apps可以在命令行中运行管理命令,如尝试2中所示,也可以通过扩展GET或POST URL来进行尝试1.

django cron amazon-ec2 amazon-elastic-beanstalk

5
推荐指数
2
解决办法
1861
查看次数

如何在 Amazon Redshift 上执行预定的 SQL 脚本?

我在 Redshift 中每小时自动执行一系列 ~10 个查询(可能报告成功/失败)。

大多数查询都是在我的表上聚合的。

我曾尝试将 AWS Lambda 与CloudWatch Events 结合使用,但 Lambda 函数最多只能存活 5 分钟,而我的查询可能需要长达 25 分钟。

etl amazon-web-services amazon-redshift aws-lambda

5
推荐指数
1
解决办法
1万
查看次数

Amazon Elastic Beanstalk中的Crontab

我正在使用Ruby on Rails 3在AWS中执行cron选项卡 - Elastic Beanstalk,但我不知道出了什么问题.

我在.ebextensions/default.config中有这段代码

container_commands:
  01remove_old_cron_jobs:
    command: "crontab -r || exit 0"
  02send_test_email:
    command: crontab */2 * * * * rake send_email:test
    leader_only: true
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

Failed on instance with return code: 1 Output: Error occurred during build: Command 02send_test_email failed .
Run Code Online (Sandbox Code Playgroud)

更新1

我试过下一个:

crontab.txt

*/2 * * * * rake send_email:test > /dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)

default.config

02_crontab:
  command: "cat .ebextensions/crontab.txt | crontab"
  leader_only: true
Run Code Online (Sandbox Code Playgroud)

结果:没有错误,但它不起作用.

更新2

crontab.sh

crontab -l > /tmp/cronjob
#CRONJOB RULES
echo "*/2 …
Run Code Online (Sandbox Code Playgroud)

cron ruby-on-rails amazon-web-services rake-task amazon-elastic-beanstalk

4
推荐指数
2
解决办法
3292
查看次数

弹性豆茎 cron 运行两次

我有一个关于弹性 beantalk 和 cron 作业的应用程序。

设置cron的代码是

container_commands:
  01_some_cron_job:
    command: "echo '*/5 * * * * wget -O - -q -t 1 http://site.com/cronscript/' | crontab"
  leader_only: true
Run Code Online (Sandbox Code Playgroud)

此脚本调用邮件发件人。我每次收到两条消息。

代码 http://site.com/cronscript/看起来像(php代码)

require_once('ses.php');
$ses = new SimpleEmailService(EMAIL_SHORTKEY, EMAIL_LONGKEY);
$m = new SimpleEmailServiceMessage();
$m->addTo('user@domain.com');
$m->setFrom('response_service@domain.com');
$m->setSubject('test message');
$m->setMessageFromString('', 'message content');
$send_emails=($ses->sendEmail($m));
Run Code Online (Sandbox Code Playgroud)

当我http://site.com/cronscript/从浏览器的地址栏呼叫时,我会根据需要收到一条消息。

cron response amazon-elastic-beanstalk

2
推荐指数
1
解决办法
1381
查看次数