Amazon s3 什么会导致';BotoServerError:400错误请求';调用创建应用程序版本时?

Amazon s3 什么会导致';BotoServerError:400错误请求';调用创建应用程序版本时?,amazon-s3,boto,amazon-elastic-beanstalk,Amazon S3,Boto,Amazon Elastic Beanstalk,我已经包含了一些将war文件上传到s3 bucket中的代码(如果不存在,则首先创建bucket)。然后,它使用刚刚上传的war文件创建一个弹性beanstalk应用程序版本 假设/tmp/server\u war存在并且是有效的war文件。以下代码将失败,出现boto.exception.BotoServerError:BotoServerError:400错误请求: #!/usr/bin/env python import time import boto BUCKET_NAME =

我已经包含了一些将war文件上传到s3 bucket中的代码(如果不存在,则首先创建bucket)。然后,它使用刚刚上传的war文件创建一个弹性beanstalk应用程序版本

假设
/tmp/server\u war
存在并且是有效的war文件。以下代码将失败,出现
boto.exception.BotoServerError:BotoServerError:400错误请求

#!/usr/bin/env python

import time

import boto

BUCKET_NAME = 'foo_bar23498'

s3 = boto.connect_s3()
bucket = s3.lookup(BUCKET_NAME)
if not bucket:
  bucket = s3.create_bucket(BUCKET_NAME, location='')

version_label = 'server%s' % int(time.time())

# uplaod the war file
key_name = '%s.war' % version_label
s3key = bucket.new_key(key_name)
print 'uploading war file...'
s3key.set_contents_from_filename('/tmp/server.war',
                                 headers={'Content-Type' : 'application/x-zip'})

# uses us-east-1 by default
eb = boto.connect_beanstalk()

eb.create_application_version(
  application_name='TheApp', 
  version_label=version_label, 
  s3_bucket=BUCKET_NAME, 
  s3_key=key_name, 
  auto_create_application=True)

什么原因会导致此错误?

此错误的一个可能原因是存储桶名称。显然,可以使用包含下划线的s3存储桶名称,但不能使用这些存储桶中的键创建应用程序版本

如果您将上面的第四行更改为

BUCKET_NAME='foo-bar23498'

它应该会起作用


是的,回答我自己的问题感觉很奇怪……显然这是针对堆栈溢出这种情况的推荐方法。我希望我能为其他人节省大量调试时间。

导致此错误的一个可能原因是存储桶名称。显然,可以使用包含下划线的s3存储桶名称,但不能使用这些存储桶中的键创建应用程序版本

如果您将上面的第四行更改为

BUCKET_NAME='foo-bar23498'

它应该会起作用


是的,回答我自己的问题感觉很奇怪……显然这是针对堆栈溢出这种情况的推荐方法。我希望我能为其他人节省大量调试时间。

我很高兴你这么做了;我似乎遇到了这个错误,调试结果令人费解;我似乎遇到了这个错误,它的调试输出令人费解。