绝对SSM noob在这里,目前我们在lambda函数中使用SSM,要使用它,我们只需导入SSM类并实例化一个实例,构造函数执行env var注入。
from aws_ssm import SSM
ssm = SSM()虽然这在AWS Lambda上运行时可以正常工作,但它在我们的本地计算机上不能很好地工作,通常我们的本地帐户不使用SSM设置。
为了绕过SSM并从实际的现有环境变量加载var,我必须添加一个开关:
if not os.environ.get('NO_SSM'):
from aws_ssm import SSM
ssm = SSM()这对我来说似乎是一个黑客(特别是错误的,错误的条件,以使其正确),我只是想知道是否有一个适当的方式来做这件事,以促进当地的发展?
再想一想,如果最初只在定义了USE_SSM环境时使用SSM会更好:
if os.environ.get('USE_SSM'):
from aws_ssm import SSM
ssm = SSM()发布于 2018-08-31 12:14:14
只需创建一个如下所示的策略并授予您的用户,然后您可以继续使用相同的策略本地或在lambda中。
附言:我在这里检查了一下,它就像一个护身符!
您还可以检查我的PoC Lambda SSM项目。在这个项目中,我使用serverless来开发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"
}
]
}https://stackoverflow.com/questions/50613219
复制相似问题