Meteor サーバーから API 経由でファイルをダウンロードするリクエストを送信しています。次に、そのファイルを S3 にアップロードします。「NoSuchKey: 指定されたキーは存在しません。」というメッセージが表示され続けます。最初は、AcessKey/SecretKey フォーム AWS に問題があるのではないかと考えていましたが、しばらくの間これをグーグル検索した後、他の人がこのエラーを取得した唯一の例は、S3 からファイルをダウンロードしようとしたときです。
cfs:s3 のセットアップ
var imageStore = new FS.Store.S3("images", {
accessKeyId: "MyAcessKeyId", //required if environment variables are not set
secretAccessKey: "MySecretAcessKey", //required if environment variables are not set
bucket: "BucketName", //required
});
Images = new FS.Collection("images", {
stores: [imageStore]
});
APIからファイル転送を開始し、S3にアップロード
client.get_result(id, Meteor.bindEnvironment(function(err, result){ //result is the download stream and id specifies which file to download.
if (err !== null){
return;
}
var file = new FS.File(result);
Images.insert(file, function (err, fileObj) {
if (err){
console.log(err);
}
});
}));
注:次のエラーが発生したため、Meteor.bindEnvironment を追加しました。 「Meteor コードは常にファイバー内で実行する必要があります。非 Meteor ライブラリに渡すコールバックを Meteor.bindEnvironment でラップしてみてください。」
API ドキュメントの Node.js の例
client.get_result(id, function(err, result){
if (err != null) {
return;
}
file.writeFile(path.join('public', path.join('results', filename)), result, 'binary');
});