Политика управления AWS SAM для параметра get SSM
Существует ли какая-либо управляемая политика, аналогичная DynamoDBReadPolicy
для ssm:GetParameter*
разрешение для лямбда-функции? Я использую aws-sam-cli и пытаюсь следовать этому, но когда я пытаюсь получить параметры при использовании sam local start-api
Я получаю следующую ошибку:
InvalidAction: The action or operation requested is invalid. Verify that the action is typed correctly.
Вот фрагмент, где я пытаюсь получить параметр:
const ssm = new AWS.SSM();
const param = {
Name: "param1",
WithDecryption: true
};
const secret = await ssm.getParameter(param).promise();
Соответствующие разделы шаблона находятся ниже. Спасибо!
KeyAlias:
Type: AWS::KMS::Alias
Properties:
AliasName: 'param1Key'
TargetKeyId: !Ref Key
Key:
Type: AWS::KMS::Key
Properties:
KeyPolicy:
Id: default
Statement:
- Effect: Allow
Principal:
AWS: !Sub arn:aws:iam::${AWS::AccountId}:root
Action:
- 'kms:Create*'
- 'kms:Encrypt'
- 'kms:Describe*'
- 'kms:Enable*'
- 'kms:List*'
- 'kms:Put*'
- 'kms:Update*'
- 'kms:Revoke*'
- 'kms:Disable*'
- 'kms:Get*'
- 'kms:Delete*'
- 'kms:ScheduleKeyDeletion'
- 'kms:CancelKeyDeletion'
Resource: '*'
Sid: Allow root account all permissions except to decrypt the key
Version: 2012-10-17
LambdaFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: ../
Handler: app.lambda
Runtime: nodejs8.10
Policies:
- DynamoDBReadPolicy:
TableName: !Ref Table
- KMSDecryptPolicy:
KeyId: !Ref Key
# I think I need the ssm policy here
1 ответ
Доступные шаблоны политик SAM перечислены в их репозитории Github. Ни один из этих шаблонов политики не предоставляет разрешения для какой-либо операции SSM, поэтому вы не можете использовать шаблон политики SAM для предоставления вашей функции AWS Lambda доступа к параметрам SSM на данный момент.
В качестве обходного пути вы можете вручную добавить требуемое утверждение политики в свои политики. Это будет выглядеть так:
LambdaFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: ../
Handler: app.lambda
Runtime: nodejs8.10
Policies:
- DynamoDBReadPolicy:
TableName: !Ref Table
- KMSDecryptPolicy:
KeyId: !Ref Key
- Statement:
- Action:
- ssm:GetParameter
Effect: Allow
Resource: arn:aws:ssm:region:account-id:parameter/parameter_name
Вам также следует рассмотреть возможность открытия запроса на добавление шаблона политики для доступа к параметрам SSM в SAM, поскольку такой шаблон, конечно, будет более удобным способом выражения таких разрешений. По моему опыту разработчики очень дружелюбны и всегда приветствуют такие дополнения.