我们正在尝试启用DAX以在我们的NodeJS Lambdas中使用。我们已经创建了VPC,并将DAX和Lambda添加到VPC中,但是现在当lambda函数引发错误时:
Failed to pull from xxxxx (xxx.xx.xx.122): { Error: Client does not have permission to invoke Endpoints
code: undefined,
retryable: false,
requestId: null,
statusCode: -1,
_tubeInvalid: true,
waitForRecoveryBeforeRetrying: false,
_message: 'Client does not have permission to invoke Endpoints',
codeSeq: [ 4, 23, 31, 34 ],
cancellationReasons: undefined }
这是Lambda代码:
const daxOptions = {
endpoint: 'xxx.apse2.cache.amazonaws.com:8111',
region: 'ap-southeast-2',
};
const daxClient = new AmazonDaxClient(daxOptions);
const dynamoDb = new DynamoDB.DocumentClient({ service: daxClient, convertEmptyValues: true });
...
const payload = {
RequestItems: {
['tableName']: {
Keys: items.map(itemId => ({
id: itemId,
})),
},
},
};
const response = await dynamoDb.batchGet(payload).promise();
DAX群集似乎运行良好。我们可以使用以下命令列出DAX群集:aws dax describe-clusters --r ap-southeast-2 --profile tst
答案 0 :(得分:0)
我遇到了同样的问题,这就是我的解决方法。 涉及2个权限。 DAX到DynamoDB和客户端以运行CRUD操作。
步骤1.删除您创建的DAX群集。这可能是错误的。让我们从一个干净的DAX群集开始。
步骤2。创建集群时,输入以下详细信息
步骤3.使用“ AmazonDynamoDBFullAccess”策略创建另一个角色,将其称为“ jeffb-dynamodb-role”
第4步。在客户端中使用“ jeffb-dynamodb-role”角色。
对我有用。