首页 > 解决方案 > SAM 模板中的 AWS AppConfig 验证 Lambda 策略

问题描述

我正在尝试向 lambda 添加策略以允许 AppConfig 调用它。我可以使用以下命令通过终端执行此操作:

aws lambda add-permission --function-name ConfigValidator.Arn --action lambda:InvokeFunction --statement-id appconfig --principal appconfig.amazonaws.com --output json --region eu-west-1

但是如何通过 SAM 模板自动完成呢?

标签: amazon-web-servicesaws-serverlessaws-app-config

解决方案


这是我如何做到的:

  1. 创建可访问您的 AppConfig 的托管策略
  2. 将该托管策略附加到您的 lambda 配置为使用的角色

这是使用 CDK 的代码(CDK 是创建 AWS 资源的最新最好的工具,我强烈推荐使用它!)。

如果您不想使用 CDK,您可以手动手动设置相同的托管策略。

详细示例如下:

创建可访问您的 AppConfig 的托管策略

const resourceArn = `arn:aws:appconfig:${props.region}:${props.accountId}:application/${this.appConfigApplication.ref}*`
this.appConfigReaderManagedPolicy = new ManagedPolicy(this, `AppConfigReader-${id}`, {
    managedPolicyName: `AppConfigReader-${id}`,
    description: `Readonly access to ${id}`,
    statements: [
        new PolicyStatement({
            resources: [resourceArn],
            actions: [
                'appconfig:GetConfiguration',
                'appconfig:GetApplication',
            ]
        })
    ]
})

将该托管策略附加到您的 lambda 配置为使用的角色

//assuming your lambda is already configured somewhere

this.lambdaFunction.role.addManagedPolicy(this.appConfigReaderManagedPolicy)

推荐阅读