AWS Lambda 함수에서 작업하고 있습니다. 나는 성공적으로 NASA APOD에 API 호출을하고 값을 되찾고있다. 이미지 URL을 가져 와서 해당 이미지를 다운로드 한 다음 S3에 업로드하고 싶습니다. "test.jpg"이미지에 액세스하려고 할 때 오류가 발생합니다. "오류 : EACCES : 권한이 거부되었습니다. 'test.jpg'"을 엽니 다. S3bucket.putObject를 http.request 외부로 이동하면 데이터가 null과 같습니다. 나는 간단한 것을 놓치고 있다는 것을 압니다. 생각?AWS Lambda 이미지 가져 오기 및 S3로 업로드
function GetAPOD(intent, session, callback) {
var nasa_api_key = 'demo-key'
, nasa_api_path = '/planetary/apod?api_key=' + nasa_api_key;
var options = {
host: 'api.nasa.gov',
port: 443,
path: nasa_api_path,
method: 'GET'
};
var req = https.request(options, function (res) {
res.setEncoding('utf-8');
var responseString = '';
res.on('data', function (data) {
responseString += data;
});
res.on('end', function() {
console.log('API Response: ' + responseString);
var responseObject = JSON.parse(responseString)
, image_date = responseObject['date']
, image_title = responseObject['title']
, image_url = responseObject['url']
, image_hdurl = responseObject['hdurl']
, image_desc = responseObject['explanation'];
var s3Bucket = new AWS.S3({ params: {Bucket: 'nasa-apod'} });
var fs = require('fs');
var file = fs.createWriteStream("test.jpg");
var request = http.get(image_url, function(response) {
response.pipe(file);
var data = {Key: "test.jpg", Body: file};
s3Bucket.putObject(data, function(err, data) {
if (err) {
console.log('Error uploading data: ', data);
}
else {
console.log('succesfully uploaded the image!');
}
});
});
});
});
req.on('error', function (e) {
console.error('HTTP error: ' + e.message);
});
//req.write();
req.end();
}
어떻게 이미지에 액세스하려고합니까? 또는 이미지에 액세스하는 데 사용하는 방법은 무엇입니까? – error2007s
s3Bucket.putObject의 file 변수에 데이터 객체의 Body로 액세스하고 있습니다. – Kris