kinesisストリームのレコードに基づいてdynamodbテーブルを更新するラムダ関数を作成しようとしていますが、ストリームからレコードを正しく取得できますが、awsclientを取得できません。したがって、ダイナモテーブルの変更を行います。AWSラムダ関数でAmazonDynamoDBClientを取得できません
私のコードのクライアントを取得するために:私はクライアントを取得し、私のシステムに変更を加えるために、このコードを実行すると
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
、それが正常に動作しているが、ラムダの内部で実行している間、それは確認ラインに達していませんクライアントの初期化。 私はこの部分をtry catchブロックに入れていますが、例外はありません。関数呼び出しのタイムアウトが発生しています。実行時間を10秒に設定しようとしました。
「ラムダコンテナはあなたの資格情報と一緒に直接出荷されます」という資格情報は?あなたの提案したコードを試し、返された資格情報のためのアクセスキーとIDを印刷しました。それらは私のIAMユーザーとは異なります。これらの資格情報にテーブルを変更するためのダイナミックアクセスがあることをどのように知っていますか。私は依然としてこれらの資格情報からクライアントを取得していませんが、関数呼び出しのタイムアウトのみです。 –
lambdaを実行するIAMの役割(ユーザーではない)を定義し、関数の設定を確認します(https://console.aws.amazon.com/lambda/home?region=<あなたの地域に置き換えてください)#/ functions/<あなたの関数名>?tab = configuration)このロールにテーブルを修正するためのダイナミックアクセスがあることを確認してください。 –
環境変数とIAMロールを自動的にチェックするので、次のこともできます。 ' –