我们最近才开始在 Elastic Beanstalk 中使用不可变部署。更具体地说,我们启用了
我们将 CloudFormation 用于一切。例如,我们没有使用 UI(AWS 管理控制台)启用不可变部署,而是在我们的配置模板中添加了相应OptionSettings的ConfigurationTemplate。
但是,我们在使用这种方法时遇到了一些问题。每当我们更改 中的某些属性时ConfigurationTemplate,我们都会收到以下错误消息:
部署应用程序失败。
无法与不可变部署同时更新资源配置和实例配置。选择不同的部署策略并重新部署以进行此更改。
在深入搜索文档后,我们无法确切地找出我们可以对不可变部署进行哪些更改,以及导致上述错误的原因。当我们尝试操作以下OptionSettings属性时出现错误:
- Namespace: 'aws:autoscaling:asg'
OptionName: MinSize
Value: 6
- Namespace: 'aws:autoscaling:asg'
OptionName: MaxSize
Value: 6
Run Code Online (Sandbox Code Playgroud)
我们将非常感谢任何能就我们可能在 CloudFormation 模板中更改哪些选项而不会导致部署失败的人向我们提供提示。非常感谢!
deployment amazon-web-services aws-cloudformation amazon-elastic-beanstalk
我当前的 AWS 设置是一个 lambda 函数,每当我将对象放入 S3 存储桶时就会触发该函数。我用 Java 实现了 lambda 的处理函数。我想要做的只是访问已上传的文件并触发 lambda 函数的执行。例如,如果我上传sample.json到存储桶,我想在处理函数中访问该文件的内容。
我知道我可以做这样的事情:
public Void handleRequest(S3Event input, Context context) {
for (S3EventNotificationRecord record : input.getRecords()) {
String key = record.getS3().getObject().getKey();
String bucket = record.getS3().getBucket().getName();
AmazonS3 s3Client = new AmazonS3Client(credentials);
try {
S3Object s3Object = s3Client.getObject(new GetObjectRequest(bucket, key));
InputStream input = s3Object.getObjectContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(input));
while (true) {
String line = reader.readLine();
if (line == null) break;
// Do something with line...
}
// ... …Run Code Online (Sandbox Code Playgroud) 据我了解,在创建 Elastic Beanstalk 环境时,会自动创建 CloudFormation 模板来管理 env 的资源。然而---为了避免任何混淆---这不是我的意思/想要做的。我想使用 CloudFormation创建 Elastic Beanstalk 环境/应用程序本身。似乎找不到这样的例子。创建最简单的“Hello, world.”风格的 Elastic Beanstalk env/app 以及随附的 Java 代码的 CloudFormation 模板会是什么样子?
我会很高兴任何能引导我走向正确方向的建议。
java amazon-web-services aws-cloudformation amazon-elastic-beanstalk