Aws lambda AWS Lambda->;DAX->;DynamoDB:';客户端没有调用端点的权限';

Aws lambda AWS Lambda->;DAX->;DynamoDB:';客户端没有调用端点的权限';,aws-lambda,amazon-dynamodb,amazon-dynamodb-dax,Aws Lambda,Amazon Dynamodb,Amazon Dynamodb Dax,我们正在尝试启用DAX以便在我们的NodeJS Lambdas中使用。我们已经创建了VPC,在VPC中添加了DAX和Lambda,但是现在当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, statusCod

我们正在尝试启用DAX以便在我们的NodeJS Lambdas中使用。我们已经创建了VPC,在VPC中添加了DAX和Lambda,但是现在当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描述集群--r ap-Southest-2--profile tst

我遇到了同样的问题,下面是我如何解决它的。 涉及2个权限。DAX到DynamoDB和客户端,以运行CRUD操作

第一步。删除您创建的DAX群集。它可能有毛病。让我们从一个干净的DAX集群开始

第二步。创建集群时,请输入以下详细信息

  • DynamoDB访问的IAM服务角色->新建
  • IAM角色名称->输入新的唯一角色名称,可能是“jeffb-dax-09-role”
  • IAM策略名称->输入新的唯一策略名称,可能是“jeffb-dax-09-policy”
  • IAM角色策略->“读/写”
  • 目标DynamoDB表格->所有表格(稍后使用IAM控制台进行自定义)
第三步。使用“AmazondynamodFullAccess”策略创建另一个角色,称之为“jeffb dynamodb角色”

第四步。使用“jeffb dynamodb角色”作为客户机中的角色


它对我起作用。

您能检查一下您是否对与lambda函数相关联的策略拥有任何dax:权限吗?可能重复:您的意思是这样的:{“操作”:[“dax:*”],“资源”:[“arn:aws:dax:ap-southest-2:887018866993:cache/*”],“效果”:“允许”}@AbdelrahmanElhaddad我只找到了关于服务角色的文档,但没有找到关于运行试图连接到DAX的代码的实际lamdba的权限的字。是的。请参阅文档中的“允许DAX群集访问的IAM策略”部分,您链接的权限是根据文档配置的。还不走运。你不应该为此使用AmazondynamodFullAccess策略。它开得太大了。应始终使用新的客户管理IAM策略。