我该如何从Secrets Manager中获取一个秘密,并通过lambda将其传递给我的SSM Run Command文档?

时间:2019-06-28 16:43:49

标签: python-3.x aws-lambda aws-secrets-manager

我在密钥管理器中存储了一个密钥(AWS访问密钥,密钥,区域)。现在,我必须从lambda检索它,并将其作为参数传递给我的lambda触发的SSM Run命令文档。尝试时,我无法使用lambda从Secret中获取值。这是我下面的代码。

import base64
client = boto3.client('secretsmanager')

def lambda_handler(event, context):
  response = client.get_secret_value(
    SecretId = 'arn:aws:secretsmanager:eu-west-1:*************:secret:aws/credentials/******'
   )
  return response```

When I execute this I got this error (earlier even without error it gives null response or identation issues) 

```Response:
{
  "errorMessage": "Unable to marshal response: datetime.datetime(2019, 6, 28, 13, 28, 47, 798000, tzinfo=tzlocal()) is not JSON serializable",
  "errorType": "Runtime.MarshalError"
}``` 


**What am I missing here?**

1 个答案:

答案 0 :(得分:2)

errorMessage似乎与实际问题无关。如果要使用lambda函数中的RunCommand API,只需将IAM role与具有适当SSM权限的lambda函数相关联即可。 Secrets Manager用于存储长期凭证,并不旨在存储AWS API密钥。暂时使用IAM角色,因为它们是短暂的/短暂的。