在 AWS Redshift 中使用 boto 创建集群

Posted

技术标签:

【中文标题】在 AWS Redshift 中使用 boto 创建集群【英文标题】:Creating a Cluster using boto in AWS Reshift 【发布时间】:2013-09-30 06:03:59 【问题描述】:
obj = boto.redshift.layer1.RedshiftConnection()
obj.create_cluster(
    cluster_identifier='bototest',
    node_type='dw.hsl.xlarge',
    master_username='suresh',
    master_user_password='Suresh123',
    db_name='dev',
    cluster_type='single-node',
    cluster_security_groups='None',
    vpc_security_group_ids='None',
    cluster_subnet_group_name='None',
    availability_zone='us-east-1',
    preferred_maintenance_window='None',
    cluster_parameter_group_name='None',
    automated_snapshot_retention_period='None',
    port=5439,
    cluster_version='None',
    allow_version_upgrade='None',
    number_of_nodes=1,
    publicly_accessible='None',
    encrypted='None')

为什么会出现这个错误?

File "/usr/local/lib/python2.7/dist-packages/boto-2.13.3-py2.7.egg/boto/redshift/layer1.py", line 577, in create_cluster
    path='/', params=params)
File "/usr/local/lib/python2.7/dist-packages/boto-2.13.3-py2.7.egg/boto/redshift/layer1.py", line 2189, in _make_request
    body=json_body)
**boto.exception.JSONResponseError: JSONResponseError: 400 Bad Request**
u'RequestId': u'76d9f16d-2994-11e3-85df-a5bac8eed36b', u'Error': u'Message': u'boolean must follow xsd1.1 definition', u'Code': u'MalformedInput', u'Type': u'Sender'

【问题讨论】:

【参考方案1】:

参数allow_version_upgradepublicly_accessibleencrypted 期望bool 值,TrueFalse。您正在传递一个包含值 None 的字符串。此外,对于cluster_version,您还传递了一个包含值 None 而不是特殊常量 None 的字符串。

create_cluster 方法的在线文档非常完整。你可以在这里找到它们:http://docs.pythonboto.org/en/latest/ref/redshift.html#boto.redshift.layer1.RedshiftConnection.create_cluster。

【讨论】:

以上是关于在 AWS Redshift 中使用 boto 创建集群的主要内容,如果未能解决你的问题,请参考以下文章

无法连接到 aws redshift

如何使用更改表查询在 AWS Redshift 中添加多列

如何在 AWS Datapipeline 中的 Python 脚本中提供 Redshift 数据库密码?

AWS Redshift 中嵌套游标的替代方案

在 AWS Redshift 中使用 % JOIN 进行 LIKE

使用 AWS Redshift 进行地理空间分析