我尝试将文件上传到我的 S3 存储桶托架,从 Ec 2 实例(该应用程序托管在 EC2 中)获取凭据。这是指令:
var credentials = new AWS.EC2MetadataCredentials();
var updateCredentials = Meteor.wrapAsync(credentials.get, credentials);
Slingshot.createDirective("achievementPhotoUpload", Slingshot.S3Storage.TempCredentials, {
bucket: "...",
acl: "public-read",
region: "...",
temporaryCredentials: function () {
if (credentials.needsRefresh()) {
updateCredentials();
}
return {
AccessKeyId: credentials.accessKeyId,
SecretAccessKey: credentials.secretAccessKey,
SessionToken: credentials.sessionToken
};
},
authorize: function () {
//Deny uploads if user is not logged in.
if (!this.userId) {
var message = "Please login before posting files";
throw new Meteor.Error("Login Required", message);
}
return true;
},
key: function (file) {
return "achievement-photos/" + file.name;
}
});
但是不会上传。当我检查日志时,我发现了这个:
Session terminated, terminating shell... ...terminated.
`Meteor.addCollectionExtension` is deprecated, please use `CollectionExtensions.addExtension`
Exception while invoking method 'slingshot/uploadRequest' SyntaxError: Unexpected token <
at Object.Future.wait (/opt/kwabackend/app/programs/server/node_modules/fibers/future.js:420:15)
at packages/meteor/helpers.js:119:1
at Object.temporaryCredentials (server/uploaders/AchievementPhotosAccess.js:21:7)
at Object.Slingshot.S3Storage.TempCredentials._.defaults.applySignature (packages/edgee_slingshot/packages/edgee_slingshot.js:776:$
at Object.Slingshot.S3Storage.upload (packages/edgee_slingshot/packages/edgee_slingshot.js:696:1)
at [object Object]._.extend.getInstructions (packages/edgee_slingshot/packages/edgee_slingshot.js:343:1)
at [object Object].Meteor.methods.slingshot/uploadRequest (packages/edgee_slingshot/packages/edgee_slingshot.js:425:1)
at packages/check/match.js:103:1
at [object Object]._.extend.withValue (packages/meteor/dynamics_nodejs.js:56:1)
at Object.Match._failIfArgumentsAreNotAllChecked (packages/check/match.js:102:1)
- - - - -
at Object.parse (native)
at /opt/kwabackend/app/programs/server/npm/peerlibrary_aws-sdk/node_modules/aws-sdk/lib/metadata_service.js:115:38
at IncomingMessage.<anonymous> (/opt/kwabackend/app/programs/server/npm/peerlibrary_aws-sdk/node_modules/aws-sdk/lib/metadata_serv$
at IncomingMessage.emit (events.js:117:20)
at _stream_readable.js:944:16
at process._tickDomainCallback (node.js:492:13)
知道发生了什么吗?
第 21 行AchievementPhotosAccess.js
:
updateCredentials();