gpt4 book ai didi

amazon-web-services - 适用于 SSM 获取参数的 AWS SAM 托管策略

转载 作者:行者123 更新时间:2023-12-05 01:16:32 25 4
gpt4 key购买 nike

对于 Lambda 函数的 ssm:GetParameter* 权限,是否有任何类似于 DynamoDBReadPolicy 的托管策略?我正在使用 aws-sam-cli 并尝试关注 this ,但是当我尝试使用 sam local start-api 获取参数时,出现以下错误:

InvalidAction:请求的 Action 或操作无效。验证操作是否正确键入。

这是我尝试获取参数的片段:

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

最佳答案

可用的 SAM 策略模板是 listed in their Github repository .这些策略模板均未授予任何 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 添加策略模板,因为这样的模板当然是表达此类权限的更方便的方式。根据我的经验,开发人员非常友好,并且总是欢迎这样的添加。

更新:AWS SAM 中现在提供了一个SSMParameterReadPolicy,因此您现在可以简单地执行以下操作,而不是使用解决方法:

LambdaFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: ../
Handler: app.lambda
Runtime: nodejs8.10
Policies:
- DynamoDBReadPolicy:
TableName: !Ref Table
- KMSDecryptPolicy:
KeyId: !Ref Key
- SSMParameterReadPolicy:
ParameterName: parameter_name

关于amazon-web-services - 适用于 SSM 获取参数的 AWS SAM 托管策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53361664/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com