Я пишу свою первую лямбда-функцию (в 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
, который включает разрешения на доступ к диспетчеру секретов), что все будет установлено. Нужно ли предоставлять явные учетные данные (например, ключ доступа и секрет) для лямбда-функции?