我正在尝试在用Java编写的Lambda中加载属性文件。我知道我可以传递环境变量,例如env dev,test,stage,prod等,并在lambda中根据运行lambda的环境加载相应的属性文件。但是,该Lambda还将在中国区域的多个AWS账户下运行,目前不支持将env变量传递给Lambda。
我当时想我可以从API找出AWS帐号,然后根据帐号我可以为该环境加载正确的属性文件,这将是解决此问题的正确方法。假设稍后我必须在另一个需要更改代码的环境中运行Lambda代码。
[更新]
好像我可以从处理程序可用的上下文变量中提取帐号
context.getInvokedFunctionArn()
e.g. arn:aws:lambda:us-east-1:999999999999:function:my_lambda_function
答案 0 :(得分:0)
您可以使用AWS服务STS
并使用GetCallerIdentity
API调用。这将为您提供帐号。使用帐号,您可以在代码中加载配置。
使用策略创建新角色:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "sts:GetCallerIdentity",
"Resource": "*"
}
]
}