2

boto で CloudFormation を実装していて、奇妙な例外が発生しました。

[sebastian ~/test_project (develop)]$ ./manage.py --template cf-templates/test_project.json --stack labs --validate
Validating template cf-templates/test_project.json..
Template cf-templates/test_project.json is valid!
[sebastian ~/test_project (develop)]$ ./manage.py --template cf-templates/test_project.json --stack labs --start
Creating stack labs with template cf-templates/test_project.json..
Traceback (most recent call last):
  File "./manage.py", line 311, in <module>
    main()
  File "./manage.py", line 113, in main
    start_stack(cf_con, parser, args, config)
  File "./manage.py", line 261, in start_stack
    template_body=get_json_from_template(args.template))
  File "/usr/local/lib/python2.7/site-packages/boto/cloudformation/connection.py", line 208, in create_stack
    raise self.ResponseError(response.status, response.reason, body)
boto.exception.BotoServerError: BotoServerError: 400 Bad Request
None

ご覧のとおり、2 つのコマンドを実行しています。最初の 1 つが呼び出さvalidate_templateれ、OK です。2番目のものは次のように呼び出しますstart_stack

cf_con = cloudformation.connect_to_region(
    args.region,
    aws_access_key_id=config.get(
        args.config_section, 'aws_access_key_id'),
    aws_secret_access_key=config.get(
        args.config_section, 'aws_secret_access_key'))

cf_con.create_stack(
    args.stack,
    template_body=get_json_from_template(args.template))

Nonebotoから返されるのはエラーメッセージだけなので、何が問題なのかよくわかりません。しかし、それは何かの兆候でしょうか?

正しい方向へのポインタは高く評価されます!

PS。同じテンプレートを使用して AWS コンソールからスタックを開始すると問題なく動作します。DS。

4

1 に答える 1

9

ヘルプ garnaat に感謝します。デバッグ時に次のように表示されました。

2012-10-14 19:18:58,377 foo [ERROR]:400 Bad Request
2012-10-14 19:18:58,377 foo [ERROR]:{"Error":{"Code":"InsufficientCapabilitiesException","Message":"Requires capabilities : [CAPABILITY_IAM]","Type":"Sender"},"RequestId":"389d102d-1623-11e2-b536-cb51e58a0a52"}

だから私はコードに機能を追加しました:

cf_con.create_stack(
    args.stack,
    template_body=get_json_from_template(args.template),
    capabilities=['CAPABILITY_IAM'])
于 2012-10-14T19:50:46.670 に答える