此问题可能与使用了未授权的操作类型或缺少所需的IAM权限有关。
一种可能的解决方案是在Lambda函数中添加必需的IAM权限。例如,如果您的GraphQL API需要对DynamoDB表执行查询操作,则需要在Lambda函数的IAM角色中添加DynamoDB权限。
以下是一个示例Lambda函数,它使用AWS Amplify CLI和GraphQL API调用查询操作并添加了必要的IAM权限:
const AWS = require('aws-sdk');
const appsync = new AWS.AppSync();
const gql = require('graphql-tag');
exports.handler = async (event, context, callback) => {
const request = {
query: gql`
query getItems {
getItems {
id
name
description
}
}
`,
variables: {}
};
// Add DynamoDB permission to IAM role
const IAMRole = new AWS.IAM();
const policyParams = {
PolicyDocument: {
Version: '2012-10-17',
Statement: [{
Effect: 'Allow',
Action: [
'dynamodb:GetItem',
'dynamodb:Query',
'dynamodb:Scan'
],
Resource: 'arn:aws:dynamodb:us-east-1:123456789012:table/MyTable'
}]
},
PolicyName: 'dynamodb'
};
await IAMRole.putRolePolicy(policyParams).promise();
// Call GraphQL API
try {
const response = await appsync.graphql(request).promise();
console.log(response);
callback(null, response);
} catch (error) {
console.error(error);
callback(error);
}
};
在以上示例中,必需的IAM权限是在Lambda函数的IAM角色中添加的,以允许对名为“MyTable”的DynamoDB表执行查询操作。函数还使用AWS Amplify CLI和GraphQL API调用查询操作。
如果以上解决方案不适用于您的情况,请确保您的GraphQL API中的每个操作类型都已授权,并检查您的IAM角色是否具有必要的权限。