EC 2 インスタンスから認証情報を取得して、S3 バケット ベイにファイルをアップロードしようとしました (アプリは 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();