首页 > 解决方案 > 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();

标签: javaaws-lambdaamazon-dynamodb

解决方案


默认情况下,您的函数使用其角色来运行和进行 API 调用。在这种情况下,您设置.withCredentials(new EnvironmentVariableCredentialsProvider())表示 Lambda 正在查看AWS_ACCESS_KEY_ID(or AWS_ACCESS_KEY) 和AWS_SECRET_KEY(or AWS_SECRET_ACCESS_KEY) 环境变量。

所以你的两个选择是:

  1. 删除.withCredentials(new EnvironmentVariableCredentialsProvider())并为具有与您的函数逻辑匹配的权限的函数配置适当的角色。
  2. 提供AWS_ACCESS_KEY_IDAWS_SECRET_KEY你的功能。

除非您有充分的理由,否则请选择选项 1。


推荐阅读