7

Ansible で boto3 から届いた結果をフィルタリングしようとしています。

"[?starts_with(...)]" を使用せずに結果に対して json クエリを使用すると、うまく機能しますが、starts_with 構文を追加すると、次のようになります。

"state_machines[?starts_with(name,'hello')].state_machine_arn"

結果をフィルタリングするには:

{u'boto3': u'1.4.4', u'state_machines': 
[{u'state_machine_arn': u'<state machine arn 1>', u'name': u'hello_world_sfn', u'creation_date': u'2017-05-16 14:26:39.088000+00:00'}, 
{u'state_machine_arn': u'<state machine arn 2>', u'name': u'my_private_sfn', u'creation_date': u'2017-06-08 07:25:49.931000+00:00'}, 
{u'state_machine_arn': u'<state machine arn 3>', u'name': u'alex_sfn', u'creation_date': u'2017-06-14 08:35:07.123000+00:00'}], 
u'changed': True}" }

最初の state_machine_arn 値を取得することを期待しています: "state machine arn 1"

しかし、代わりに、例外が発生します。

An exception occurred during task execution. To see the full traceback, use -vvv. The error was: JMESPathTypeError: In function contains(), invalid type for value: <lamdba_name>, expected one of: ['array', 'string'], received: "unknown" fatal: [localhost]: FAILED!
=> {"failed": true, "msg": "Unexpected failure during module execution.", "stdout": ""}

何が問題になる可能性がありますか?

4

2 に答える 2