AWS Boto3:请参阅成功运行代码所需的权限



假设我在AWS上有一个lambda函数,运行一些boto3代码。这个boto3代码与各种AWS资源交互,如CloudWatch、S3、SNS、Lambda等。在执行角色中,我显然需要添加某些权限,例如Lambda::CreateFunction。

现在我想为这个函数添加一个权限策略,并添加所有必要的权限。目前,实现这一点的唯一方法似乎是运行代码,读取关于它无权访问某个权限的错误,然后将该权限添加到权限策略中。这可能会变得非常乏味和耗时,尤其是当代码与各种不同的AWS资源交互时。

所以我的问题是,在运行boto3代码之前,有没有什么方法可以看看它需要什么权限?也许之前有人为此编写了一个脚本,可以读取代码并打印出运行它所需的权限?

如果您使用AWS云开发工具包(CDK(构建服务,那么您可以简化向正确服务授予Lambda权限的过程。

举个简单的例子,假设您有一个Lambda函数和一个DynamoDB表。你用这样的东西设计CDK中的基础设施:

const someTable = new dynamodb.Table(this, 'someTable', {
tableName: 'someTable',
billingMode: dynamodb.BillingMode.PAY_PER_REQUEST,
partitionKey: {name: 'id', type: dynamodb.AttributeType.STRING},
});
const someLambdaFunction = new lambda.Function(this, 'someLambdaFunction', {
functionName: 'someLambdaFunction',
runtime: lambda.Runtime.NODEJS_16_X,
handler: 'index.handler',
memorySize: 128,
timeout: cdk.Duration.seconds(10),
code: lambda.Code.fromAsset(path.join(__dirname, '../yourpath')),
});

然后您可以在一行中授予权限:

someTable.grantFullAccess(someLambdaFunction);

然后,CDK生成具有正确角色和权限的CloudFormation模板。

最新更新