gpt4 book ai didi

python - AWS Cloudformation,使用 Python 3 从键获取值的最佳方式

转载 作者:行者123 更新时间:2023-12-03 07:31:43 25 4
gpt4 key购买 nike

我有一个 Cloudformation 模板,它定义了以下输出值:

Outputs:
AccessKeyForUser:
Value:
!Ref CFNKeys
SecretAccessKeyForUser:
Value: !GetAtt CFNKeys.SecretAccessKey

在带有 boto3 的 Python 3 中,我目前以这种方式获取输出值:

session = boto3.session.Session()
cf_resource = session.resource('cloudformation')
stack = cf_resource.Stack(stackname)

code_commit_access_key = next(filter(lambda x: x['OutputKey'] == 'AccessKeyForUser', stack.outputs))['OutputValue']
code_commit_access_secret = next(filter(lambda x: x['OutputKey'] == 'SecretAccessKeyForUser', stack.outputs))['OutputValue']

我认为这不是最好的方法。有没有更好的方法来获取输出值?

最佳答案

因此,您真正想要的是拥有一本可以查询您感兴趣的所有键的字典。因此,让我们使用 dict comprehension 创建一个字典。 ,这可能是实现这一点的最短但仍然是Python式的方法:

cf_resource = boto3.resource("cloudformation")
stack = cf_resource.Stack(stackname)

outputs = {output["OutputKey"]: output["OutputValue"] for output in stack.outputs}

code_commit_access_key = outputs["AccessKeyForUser"]
code_commit_access_secret = outputs["SecretAccessKeyForUser"]

请注意,如果 stack.outputs 包含具有相同 OutputKey 的多个项目,这可能会导致意外结果,因为您只能获得代表的最新此类项目在字典里。不过,我相信在这种特殊情况下这不需要担心,因为 CloudFormation 输出值名称无论如何都必须是唯一的。

关于python - AWS Cloudformation,使用 Python 3 从键获取值的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62502245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com