java - How to connect to dynamodb from lambda
问题描述
I'm trying to connect to DynamoDB from a java lambda function, it works locally with aws profile ~/.aws/credentials. How will this work in AWS environment as I can't set profile details in the credentials file?
private static AmazonDynamoDB dynamoClient = AmazonDynamoDBClientBuilder.standard()
.withEndpointConfiguration(
new AwsClientBuilder.EndpointConfiguration("https://dynamodb.us-west-2.amazonaws.com", "us-west-2"))
.withCredentials(new EnvironmentVariableCredentialsProvider()).build();
解决方案
默认情况下,您的函数使用其角色来运行和进行 API 调用。在这种情况下,您设置.withCredentials(new EnvironmentVariableCredentialsProvider())
表示 Lambda 正在查看AWS_ACCESS_KEY_ID
(or AWS_ACCESS_KEY
) 和AWS_SECRET_KEY
(or AWS_SECRET_ACCESS_KEY
) 环境变量。
所以你的两个选择是:
- 删除
.withCredentials(new EnvironmentVariableCredentialsProvider())
并为具有与您的函数逻辑匹配的权限的函数配置适当的角色。 - 提供
AWS_ACCESS_KEY_ID
和AWS_SECRET_KEY
你的功能。
除非您有充分的理由,否则请选择选项 1。
推荐阅读
- snowflake-cloud-data-platform - 雪花选择查询以 json 格式返回数据
- python - 预测XGboost时python中的“列表索引超出范围”错误
- python - 使用 AWS API Gateway 进行 JWT 身份验证和转发
- sql - 查询只追加表;不同的内部连接问题
- go - 无法访问同一包中的私有方法进行测试
- c# - 如何在给定时间后根据数据库触发功能?
- arrays - 在 where 子句中拆分查询
- sqlite - react-native-sqlite-storage 如何打开指定目录的文件?
- scala - 为什么 UDF 在流式查询中抛出 NotSerializableException?
- amazon-web-services - 如何编写用于在 AWS 中创建 API 网关的 shell 脚本