我有一个用Java I编写的Lambda函数,我希望它访问S3(putObject)。
我不想在Lambda函数中使用或存储凭据以访问S3。相反,我想使用IAM角色。
如何在不需要任何凭证并假定Lambda具有适当角色的Java代码(由Lambda运行)中编写一个AWS S3客户端?
最佳答案
您无需在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