绝对SSM noob,目前我们在lambda函数中使用SSM,并且使用它我们简单地导入SSM类并实例化一个实例,构造函数执行env var injections。
from aws_ssm import SSM
ssm = SSM()
虽然在AWS Lambda上运行时按预期工作,但在本地计算机上运行不正常,但通常我们的本地帐户未使用SSM设置。
为了绕过SSM并从实际现有的env vars加载vars,我将不得不添加一个开关:
if not os.environ.get('NO_SSM'):
from aws_ssm import SSM
ssm = SSM()
这对我来说似乎是一种黑客攻击(特别是虚假的错误使其成功),我只是想知道是否有适当的方法来进行本地开发?
再想一想,在定义USE_SSM
env时最好将最初的情况转换为仅使用SSM:
if os.environ.get('USE_SSM'):
from aws_ssm import SSM
ssm = SSM()
答案 0 :(得分:0)
只需创建以下策略并授予您的用户,您就可以继续在本地或lambda中使用相同的策略。
PS:我在这里检查了一下,它就像一个吊饰!
您还可以检查我的PoC Lambda SSM项目。在这个项目中,我使用无服务器来开发lambda,它通过使用invoke local -f hello_ssm在本地调用。
政策
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"ssm:GetParameter"
],
"Resource": [
"arn:aws:ssm:us-east-1:139486740103:parameter/my-secure-param"
],
"Effect": "Allow"
},
{
"Action": [
"kms:Decrypt"
],
"Resource": [
"arn:aws:kms:us-east-1:139486740103:key/alias/aws/ssm"
],
"Effect": "Allow"
}
]
}