使用AWS Lambda仅使用角色访问S3

Yoa*_*nda 2 amazon-s3 amazon-web-services aws-sdk aws-lambda serverless-framework

我有一个用Java I编写的Lambda函数,我想让它访问S3(putObject).

我不想在我的Lambda函数中使用或存储凭据以访问S3.相反,我想使用IAM角色.

如何在我的Java代码(将由Lambda运行)中编写AWS S3客户端,该代码不需要任何凭据并假设Lambda具有适当的角色?

E.J*_*nan 5

您不需要在lambda函数中存储凭据.所有功能都以角色运行 - 您在创建功能时设置的角色.由于lambda函数具有角色,因此您可以根据需要在此角色中添加或删除权限,而无需更改函数本身

管理权限:使用IAM角色(执行角色)

每个Lambda函数都具有与之关联的IAM角色(执行角色).您在创建Lambda函数时指定IAM角色.您授予此角色的权限决定了AWS Lambda在担任角色时可以执行的操作.您授予IAM角色有两种类型的权限:

如果您的Lambda函数代码访问其他AWS资源(例如从S3存储桶读取对象或将日志写入CloudWatch Logs),则需要向该角色授予相关Amazon S3和CloudWatch操作的权限.如果事件源是基于流的(Amazon Kinesis Streams和DynamoDB流),则AWS Lambda代表您轮询这些流.AWS Lambda需要权限轮询流并读取流上的新记录,因此您需要为此角色授予相关权限.

http://docs.aws.amazon.com/lambda/latest/dg/intro-permission-model.html