无法在 AWS lambda 函数中获取 AmazonDynamoDBClient

Not able to get AmazonDynamoDBClient in AWS lambda function

我正在尝试创建一个 lambda 函数来根据运动流中的记录更新 dynamodb table,它能够从流中正确获取记录,但无法获取 awsclient,因此无法进行任何操作dynamodb 的变化 table.

我获取客户的代码:

AWSCredentials awsCreds = new BasicAWSCredentials("accessid", "accesskey");
AmazonDynamoDBClient  client = new AmazonDynamoDBClient(awsCreds).withRegion(Regions.US_WEST_2);
System.out.println("got the dbclient for uswest2");
DynamoDB dynamoDB = new DynamoDB(client);
//code to update tables in dynamodb

当我 运行 此代码获取客户端并在我的系统中进行更改时,它工作正常,但是当 运行 在 lambda 中使用时,它没有到达确认初始化的行客户。 我在 try catch 块中有这部分,我没有收到任何异常,函数调用超时,我尝试将 运行time 设置为 10 秒。

对于 lamdba 函数,您的凭据可从 EnvironmentVariableCredentialsProvider 获得。 lambda 容器直接随附您的凭据,您可以从环境变量中检索它们

以下代码应该适合您

AWSCredentials awsCreds = new EnvironmentVariableCredentialsProvider().getCredentials();
AmazonDynamoDBClient client = new AmazonDynamoDBClient(awsCreds).withRegion(Regions.US_WEST_2);
System.out.println("got the dbclient for uswest2");
DynamoDB dynamoDB = new DynamoDB(client);
//code to update tables in dynamodb

甚至这个还有另一个构造函数

AmazonDynamoDBClient client = 
    new AmazonDynamoDBClient(new EnvironmentVariableCredentialsProvider());

确保在您的 lambda 配置中,您 select 具有必要权限的 IAM 角色 运行 insert on dynamo