GVKun编程网logo

如何在elasticbeanstalk worker tomcat中获取SQS消息属性?(elasticsearch获取所有数据)

8

在本文中,我们将详细介绍如何在elasticbeanstalkworkertomcat中获取SQS消息属性?的各个方面,并为您提供关于elasticsearch获取所有数据的相关解答,同时,我们也将为

在本文中,我们将详细介绍如何在elasticbeanstalk worker tomcat中获取SQS消息属性?的各个方面,并为您提供关于elasticsearch获取所有数据的相关解答,同时,我们也将为您带来关于amazon-web-services – 为什么我得到ElasticBeanstalk :: ExternalInvocationError?、amazon-web-services – 在Elastic Beanstalk上设置Docker容器主机名、asp.net – 如何在.net中读取Elastic Beanstalk环境属性?、AWS Elastic Beanstalk-Java平台和Tomcat平台有什么区别?的有用知识。

本文目录一览:

如何在elasticbeanstalk worker tomcat中获取SQS消息属性?(elasticsearch获取所有数据)

如何在elasticbeanstalk worker tomcat中获取SQS消息属性?(elasticsearch获取所有数据)

我有一个带有Worker层和tomcat 7.0的弹性beantalk应用程序,它运行良好。但是我不知道如何从aws-sqsd
1.1执行的POST调用中获取消息属性,我已经检查了所有标头,属性,参数和主体,但没有检查任何内容。

经过一会儿,我发现aws-sqsd 1.1于2014-02-19发行,但SQS消息属性支持的新功能于2014-05-06发行。因此,aws-sqsd
1.1不支持消息属性功能似乎是合理的,对吗?我们是否有任何解决方案来支持EB worker中的消息属性?

答案1

小编典典

似乎已在aws-sqsd 1.2中添加了此功能!

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features-
managing-env-
tiers.html

amazon-web-services – 为什么我得到ElasticBeanstalk :: ExternalInvocationError?

amazon-web-services – 为什么我得到ElasticBeanstalk :: ExternalInvocationError?

我的应用程序构建在RubyOnRails上,并使用乘客部署为弹性beanstalk应用程序,我正在尝试将标头添加到Nginx服务器并重新启动它,这是我的配置文件,来自aws弹性beanstalk的.ebextensions文件夹中的脚本:

packages: 
    yum:
        Nginx: [] 

files:
    "/etc/Nginx/conf.d/webapp.conf" :
        mode: "000644"
        owner: root
        group: root
        content: |
            server {

                location /assets {
                  alias /var/app/current/public/assets;
                  gzip_static on;
                  gzip on;
                  expires max;
                  add_header Cache-Control public;
                }

                location /public {
                  alias /var/app/current/public;
                  gzip_static on;
                  gzip on;
                  expires max;
                  add_header Cache-Control public;
                }

            }

# This reloads the server,which will both make the changes take affect and makes sure the config is valid when you deploy
container_commands:
  01_reload_Nginx:
    command: "sudo service Nginx reload"

但是我收到了这个错误:

[2017-12-13T06:23:48.635Z] ERROR [17344] : Command CMD-AppDeploy Failed!
[2017-12-13T06:23:48.635Z] INFO  [17344] : Command processor returning results: 
{"status":"FAILURE","api_version":"1.0","results":[{"status":"FAILURE","msg":"container_command 01_reload_Nginx in .ebextensions/01_elastic_beanstalk_webapp.config Failed. For more detail,check /var/log/eb-activity.log using console or EB CLI","returncode":7,"events":[]}]}

/var/log/eb-activity.log:

[2017-12-13T06:23:48.584Z] INFO  [17344] - [Application update fix-command-Nginx-reload-hope@2/AppDeployStage0/EbExtensionPostBuild/Infra-EmbeddedPostBuild/postbuild_0_myapp_website/Command 01_reload_Nginx] : Starting activity...
[2017-12-13T06:23:48.619Z] INFO  [17344] - [Application update fix-command-Nginx-reload-hope@2/AppDeployStage0/EbExtensionPostBuild/Infra-EmbeddedPostBuild/postbuild_0_myapp_website/Command 01_reload_Nginx] : Activity execution Failed,because:  (ElasticBeanstalk::ExternalInvocationError)


[2017-12-13T06:23:48.619Z] INFO  [17344] - [Application update fix-command-Nginx-reload-hope@2/AppDeployStage0/EbExtensionPostBuild/Infra-EmbeddedPostBuild/postbuild_0_myapp_website/Command 01_reload_Nginx] : Activity Failed.

虽然如果我ssh到实例并执行sudo服务Nginx重新加载它将正常执行..
任何的想法?

编辑

$cat /proc/version
Linux version 4.9.43-17.39.amzn1.x86_64 (mockbuild@gobi-build-64011) (gcc version 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC) ) #1 SMP Fri Sep 15 23:39:41 UTC 2017

部署命令:

eb deploy my-app -v

请求资产的标题:

Connection: keep-alive
content-encoding: gzip
Content-Type: application/x-javascript
Date: Fri,24 Aug 2018 11:03:50 GMT
ETag: W/"12cd8ea0-20db3"
Last-Modified: Mon,31 Dec 1979 04:08:00 GMT
Server: Nginx/1.12.1
transfer-encoding: chunked
Via: 1.1 8cc9957dff77c27e9931ab0aaf344ec9.cloudfront.net (CloudFront)
X-Amz-Cf-Id: 0NlE-figgzczadHYeK7HMMsDsGRmaB8Sefvo89phHWw3LSx01t5rgQ==
X-Cache: Miss from cloudfront

缺少标题:

   access-control-max-age: 3000
   age: 48214

服务器上的更新conf文件

$cat /etc/Nginx/conf.d/webapp.conf
server {

    location /assets {
      alias /var/app/current/public/assets;
      gzip_static on;
      gzip on;
      expires max;
      add_header Cache-Control public;
      add_header 'Access-Control-Allow-Origin' '*';
    }

    location /public {
      alias /var/app/current/public;
      gzip_static on;
      gzip on;
      expires max;
      add_header Cache-Control public;
      add_header 'Access-Control-Allow-Origin' '*';
    }

}

编辑

service Nginx configtest结果:

$sudo service Nginx configtest
Nginx: the configuration file /etc/Nginx/Nginx.conf Syntax is ok
Nginx: configuration file /etc/Nginx/Nginx.conf test is successful
最佳答案
命令:“sudo service Nginx reload”不是必需的,因为Nginx服务在每次成功部署后自动重启.您可以从配置文件中删除它.

您可能会遇到CDN服务到期的延迟,请尝试刷新缓存或直接对EB网址进行测试.

amazon-web-services – 在Elastic Beanstalk上设置Docker容器主机名

amazon-web-services – 在Elastic Beanstalk上设置Docker容器主机名

我想手动设置部署在AWS Elastic Beanstalk上的Docker容器的主机名.您可以在使用docker run -h HOSTNAME旋转容器时设置主机名,但我无法弄清楚如何(或者甚至是)将自定义参数传递给docker run命令.

Dockerrun.aws.json文件似乎是一个可能的候选者,但是没有记录的密钥能够满足我的需求.

有谁知道这是否可能?

最佳答案
据我所知,开箱即用不支持.

这里可能的黑客攻击是利用EB对环境变量的不良解析.您可以设置环境变量,例如:
ParaM1 =哑-h MYHOSTNAME
EB不引用参数,因此您的-h部分将嵌入到docker run命令中.
我自己没试过.

另一个选择是创建一个ebextension文件来修补/opt/elasticbeanstalk/hooks/appdeploy/pre/04run.sh脚本,将-h MYHOST行注入其中.

asp.net – 如何在.net中读取Elastic Beanstalk环境属性?

asp.net – 如何在.net中读取Elastic Beanstalk环境属性?

如何从我在此处找到的AWS Elastic Beanstalk应用程序中读取环境属性:
Configuration > Software Configuration > Environment Properties

以下方法均无效:

ConfigurationManager.AppSettings["MyServiceUrl"]
ConfigurationManager.AppSettings["aws:elasticbeanstalk:application:environment.MyServiceUrl"]
Environment.GetEnvironmentvariable("MyServiceUrl")
Environment.GetEnvironmentvariable("aws:elasticbeanstalk:application:environment.MyServiceUrl")

“完全合格”的名称尝试来自AWS EB documentation.

有任何想法吗?

解决方法

在.ebextensions / myoptions.config文件中:
option_settings:
  - option_name: MyServiceUrl
    value: change me

这将在您的EB环境属性部分中添加“MyServiceUrl”选项(正如您已经看到的那样).部署后,这会将以下内容添加到Web.Config文件中:

<appSettings>
  <add key="MyServiceUrl" value="change me" />
</appSettings>

如果你进入你的EC2实例,你会看到这个.

使用EB控制台更改属性时,将在Web.Config文件中修改该设置.

因此,您使用标准AppSettings方法访问此属性:

string value = ConfigurationManager.AppSettings["MyServiceUrl"];

抓住:

您需要确保您的Web.Config文件不包含此设置,否则EB不会替换它.如果您的Visual Studio部署包中包含此设置,则EB不会替换它,并且当您通过代码访问该属性时,您将始终收到已部署的值.

解决方案:

在Web.Release.config文件中,在Visual Studio部署期间删除了该设置:

<appSettings>
  <add key="MyServiceUrl" xdt:Transform="Remove" xdt:Locator="Match(key)" />
</appSettings>

这将在Visual Studio部署期间从Web.Config中删除该设置,并允许EB在EB部署期间将值添加到文件中.

AWS Elastic Beanstalk-Java平台和Tomcat平台有什么区别?

AWS Elastic Beanstalk-Java平台和Tomcat平台有什么区别?

来自the documentation:

AWS Elastic Beanstalk支持两个适用于Java应用程序的平台。

Tomcat –基于Apache Tomcat(开源Web)的平台 使用Java Servlet和JavaServer Pages的应用程序的容器 (JSP)来处理HTTP请求。 Tomcat促进Web应用程序 提供多线程声明式安全性进行开发 配置和广泛的自定义。 Elastic Beanstalk有 Tomcat当前每个主要版本的平台分支。对于 有关更多信息,请参阅Tomcat平台。

Java SE –一个不使用Web容器的应用程序平台, 或使用除Tomcat外的其他产品,例如Jetty或GlassFish。您可以 将您的应用程序使用的所有库Java归档文件(JAR)包含在 您部署到Elastic Beanstalk的源包。欲了解更多 有关信息,请参阅Java SE平台。

回答您的问题:

我想了解背景情况。当我 选择“ Tomcat”是Elastic Beanstalk进行配置 tomcat自动为我安装并安装我们的.war来使用它吗?

是的,这正是Elastic Beanstalk所做的。

在选择怎么样的Java?什么是servlet容器 以及如何设置?是Java时尝试建立Nginx吗? 选择了吗?

期望您提供不依赖Tomcat的Java部署工件,例如Spring Boot可运行的Jar。

今天关于如何在elasticbeanstalk worker tomcat中获取SQS消息属性?elasticsearch获取所有数据的讲解已经结束,谢谢您的阅读,如果想了解更多关于amazon-web-services – 为什么我得到ElasticBeanstalk :: ExternalInvocationError?、amazon-web-services – 在Elastic Beanstalk上设置Docker容器主机名、asp.net – 如何在.net中读取Elastic Beanstalk环境属性?、AWS Elastic Beanstalk-Java平台和Tomcat平台有什么区别?的相关知识,请在本站搜索。

本文标签: