通常,AWS Lambda被拒绝访问API请求可能是因为它未获得访问API的权限,这可能是由于AWS Identity and Access Management(IAM)策略限制导致的。以下是一个示例Lambda函数,以AWS SDK for JavaScript v3和IAM角色为例,以说明如何在Lambda中授予API访问权限:
const { S3Client, GetObjectCommand } = require("@aws-sdk/client-s3");
exports.handler = async (event, context, callback) => { const s3 = new S3Client({ region: "us-west-2", credentials: { accessKeyId: "ACCESS_KEY", secretAccessKey: "SECRET_KEY", }, });
const getObjectParams = { Bucket: "my-bucket", Key: "my-file.txt", };
try {
const data = await s3.send(new GetObjectCommand(getObjectParams));
console.log(File contents: ${data.Body.toString()}
);
} catch (err) {
console.log(Error retrieving file: ${err.message}
);
}
};
在这个示例Lambda函数中,我们创建了一个S3Client对象,用于访问Amazon S3服务。我们还将IAM凭证传递给客户端,以便Lambda有权访问我们指定的S3桶。
在实际应用中,您需要根据您的实际用例更新代码示例中使用的区域和凭据,以确保Lambda函数有权访问您需要的资源。