AWS SSM是否有本地开发模式?

时间:2018-05-30 20:54:52

标签: python amazon-web-services

绝对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()

1 个答案:

答案 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"
        }
    ]
}