我有一个状态机的名称(例如,定制状态机),我想要这个的statemachinearn,我该如何实现。
有函数,list_state_machines(),但它提供了所有状态机的详细信息。 另外,我看到了descripte_state_machine()的函数,但需要statemachinearn.我的目标是从国家机器人的名字中获得statemachinearn
import boto3
name = 'HelloWorld'
sfn_arn = None
client = boto3.client('stepfunctions')
response = client.list_state_machines()['stateMachines']
for sfn in response:
if sfn['name'] == name:
sfn_arn = sfn['stateMachineArn']
client = boto3.client('stepfunctions')
response = client.list_state_machines()['stateMachines']
可以工作,但请记住有分页。默认情况下,它将一次仅返回100个。 如果您有100多个但少于1000,则可以这样更新通话:
response = client.list_state_machines(maxResults=1000)
如果您有超过1000,或者期望可能有1000多个,则需要实施分页:
state_machines = []
response = client.list_state_machines()
state_machines.extend(response["stateMachines"])
while "nextToken" in response:
response = client.list_state_machines(nextToken=response["nextToken"])
state_machines.extend(response["stateMachines"])
另一个选项是手动构造ARN,因为它遵循一种模式,如@fedonev所述:
:
arn:aws:states:<region>:<account id>:stateMachine:<state machine name>
如果您需要其他数据以外的其他数据,则可以使用Boto的Descibe_state_machine方法获取细节。