Доступ к параметрам SSM из хранилища параметров
У меня есть шаблон SAM, который развертывает несколько лямбд, и я хотел бы использовать некоторые параметры, которые я создал в хранилище параметров SSM.
Я создал 2 параметра для своих тестов:
/test/param
которая является простой строкой/test/param/encrypt
который содержит ту же строку, что и/test/param
но зашифрован ключом KMS
В моем шаблоне SAM я пытаюсь получить значение /test/params
следуя этому сообщению в блоге. Вот снимок моего шаблона:
Parameters:
AuthPasswordPublic:
Type: AWS::SSM::Parameter::Value<String>
NoEcho: true
MinLength: 8
Description: Password for the "public" part of the website
Default: /test/param
...
Resources:
Auth:
Type: AWS::Serverless::Function
Properties:
Runtime: nodejs8.10
Handler: auth.handler
CodeUri: ./dist
Environment:
Variables:
PASSWORD_PUBLIC: !Ref AuthPasswordPublic
SEED: !Ref AuthSeed
Events:
GetResource:
Type: Api
Properties:
Path: /auth
Method: post
Теоретически это должно работать при развертывании на AWS. Тем не менее, я хотел бы сначала проверить его на месте. Я уже aws-sam-local
и мои учетные данные правильно настроены на моем локальном компьютере, так как я могу использовать интерфейс командной строки AWS. Но при запуске этого локально, значение envvar PASSWORD_PUBLIC
пустой. Я протестировал оба параметра SSM в простом текстовом и зашифрованном виде, но результаты совпадают.
Я подозреваю, что aws-sam-cli
пока не поддерживает параметры SSM, но не может найти никакой информации ни об этом в сети, ни о проблемах с GitHub /PR. Есть идеи о том, что здесь происходит?
1 ответ
aws-sam-cli
использует docker-lambda
контейнер, который в соответствии с документами создает:
Изолированная локальная среда, которая почти одинаково реплицирует живую среду AWS Lambda...
Это означает, что такие компоненты, как AWS SSM, не создаются заново в контейнере Docker. Вы можете проверить открытую проблему Github здесь.
Поэтому вам, возможно, придется прибегнуть к получению параметров SSM с хоста (с помощью aws cli
настроен), и передать их в контейнер при вызове sam-cli:
PASSWORD_PUBLIC=$(aws ssm get-parameter --with-decryption --name "/test/param/encrypt") sam local start-api