我正在尝试从 java lambda 函数连接到 DynamoDB,它在本地使用 aws profile ~/.aws/credentials。由于我无法在凭证文件中设置配置文件详细信息,这在 AWS 环境中将如何工作?
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
(或 AWS_ACCESS_KEY
),并且AWS_SECRET_KEY
(或AWS_SECRET_ACCESS_KEY
)环境变量。
所以你的两个选择是:
- 删除
.withCredentials(new EnvironmentVariableCredentialsProvider())
并为具有与函数逻辑匹配的权限的函数配置适当的角色。 - 向您的函数提供
AWS_ACCESS_KEY_ID
和AWS_SECRET_KEY
。
除非您有充分的理由,否则请选择选项 1。
关于java - 如何从 lambda 连接到 dynamodb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54166300/