可以使用AWS Lambda函数获取调用方的身份,然后将其作为堆栈标签或AWS CloudFormation输出。
以下是将调用者ARN添加为堆栈标签的示例代码:
from aws_cdk import (core, aws_lambda as lambda_)
class MyStack(core.Stack):
def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:
super().__init__(scope, id, **kwargs)
# 创建Lambda函数
function = lambda_.Function(self, 'MyFunction',
code=lambda_.Code.from_inline('def handler(event, context): pass'),
handler='index.handler',
runtime=lambda_.Runtime.PYTHON_3_7)
# 将调用方ARN添加为堆栈标记
stack_tag_key = 'DeployedBy'
stack_tag_value = core.Fn.select(6, core.Fn.split(':', core.Fn.get_att('MyFunction', 'Arn')))
core.Tags.of(self).add(stack_tag_key, stack_tag_value)
在这个例子中,被调用的AWS Lambda函数的ARN被分割成子字符串并选择其中的第七个元素,该元素包含调用方的ARN。然后,使用Core.Tags.of
方法将调用方ARN添加为堆栈标记。
请注意,这只会在使用AWS CDK进行部署时有效,对于手动创建的堆栈无效。