要解决这个问题,可以使用AWS CLI命令来手动删除S3中的文件。以下是一个可以在Node.js中使用的示例代码:
const AWS = require('aws-sdk');
AWS.config.update({ region: 'your-region' });
const amplify = new AWS.Amplify();
async function deleteFileFromS3() {
try {
const listJobsResponse = await amplify.listJobs({ appId: 'your-app-id' }).promise();
const jobId = listJobsResponse.jobSummaries[0].jobId; // 获取最新的jobId
const getJobResponse = await amplify.getJob({ appId: 'your-app-id', jobId }).promise();
const jobIdData = getJobResponse.job;
const jobIdArtifacts = jobIdData.artifacts; // 获取jobId的artifacts
for (const artifact of jobIdArtifacts) {
if (artifact.artifactType === 'S3') {
const s3Bucket = artifact.artifactId.split('/')[0];
const s3Key = artifact.artifactId.split('/')[1];
const s3 = new AWS.S3();
const deleteObjectParams = {
Bucket: s3Bucket,
Key: s3Key
};
await s3.deleteObject(deleteObjectParams).promise();
console.log(`Deleted file: ${artifact.artifactId}`);
}
}
console.log('All files deleted successfully from S3.');
} catch (error) {
console.error('Error deleting files from S3:', error);
}
}
deleteFileFromS3();
上面的代码首先使用AWS Amplify SDK获取最新的jobId和该job的artifacts。然后,它循环遍历artifacts数组并检查文件类型是否为S3。如果是S3文件,它会使用AWS S3 SDK删除文件。最后,它会打印出已删除的文件列表。
请确保将your-region替换为正确的AWS区域,your-app-id替换为正确的Amplify应用程序ID,并根据需要自定义代码。
上一篇:Amplify js在Next.js中无法使用“responseType: code”进行用户认证。
下一篇:amplify push导致错误:在推送操作期间发生错误 \app\src\main\res\raw 包含无效的WIN32路径字符。