Я пишу свою первую лямбда-функцию (на Python), и меня немного смущает то, как учетные данные должны работать в среде лямбда. Я пытаюсь получить секрет (для доступа к базе данных Aurora) из api секретов aws, используя их примерный код, который выглядит примерно так (я вырезал всю обработку ошибок для краткости):
def get_secret():
secret_name = 'dbtest-postgres-secret'
region_name = 'us-east-2'
session = boto3.session.Session()
client = session.client(
service_name='secretsmanager',
region_name=region_name
)
get_secret_value_response = client.get_secret_value(
SecretId=secret_name
)
secret = get_secret_value_response['SecretString']
return secret
Это отлично работает локально в среде, в которой у меня есть обычные учетные данные AWS, но возвращает None без каких-либо ошибок при работе как часть лямбда-функции. Я использую это так:
def handler(event, context):
secret = get_secret()
assert secret is not None
И он терпит неудачу в этом assert
заявлении:
{
"errorType": "AssertionError",
"stackTrace": [
" File \"/var/task/dbtest.py\", line nn, in handler\n assert secret is not None\n"
]
}
Я предполагал, что, назначив роль лямбда-функции с соответствующими разрешениями (AmazonRDSDataFullAccess
, включая разрешения на доступ к диспетчеру секретов), все будет установлено. Нужно ли мне предоставлять явные учетные данные (например, ключ доступа и секрет) для лямбда-функции?