我在AWS中有一個Node 4.3 Lambda函數。我希望能夠向S3編寫一個文本文件,並閱讀了許多關於如何與S3集成的教程。然而,所有這些都是關於如何調用lambda函數編寫後,S3象下面這樣:AWS Lambda函數寫入S3
http://docs.aws.amazon.com/lambda/latest/dg/with-s3.html
如何創建在S3從LAMBDA使用節點的文本文件?這可能嗎?亞馬遜的文件似乎沒有涵蓋它。
我在AWS中有一個Node 4.3 Lambda函數。我希望能夠向S3編寫一個文本文件,並閱讀了許多關於如何與S3集成的教程。然而,所有這些都是關於如何調用lambda函數編寫後,S3象下面這樣:AWS Lambda函數寫入S3
http://docs.aws.amazon.com/lambda/latest/dg/with-s3.html
如何創建在S3從LAMBDA使用節點的文本文件?這可能嗎?亞馬遜的文件似乎沒有涵蓋它。
是的,這是絕對可能的!
var AWS = require('aws-sdk');
function putObjectToS3(bucket, key, data){
var s3 = new AWS.S3();
var params = {
Bucket : bucket,
Key : key,
Body : data
}
s3.putObject(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
}
確保你給你的lambda函數所需的寫入權限目標S3存儲/關鍵路徑選擇或更新IAM角色的拉姆達下執行。
IAM聲明補充:
{
"Sid": "Stmt1468366974000",
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::my-bucket-name-goes-here/optional-path-before-allow/*"
]
}
延伸閱讀:
AWS的JavaScript SDK: http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html
特定的 「將對象」 的詳細信息: http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#putObject-property
如果您正在使用IAM用戶,那麼你必須提供訪問密鑰和祕密密鑰,並確保你提供必要的許可,您可以使用
AWS-SDK
上傳在S3上的文件到IAM用戶。
var AWS = require('aws-sdk');
AWS.config.update({accessKeyId: "ACCESS_KEY",secretAccessKey: 'SECRET_KEY'});
var s3bucket = new AWS.S3({params: {Bucket: 'BUCKET_NAME'}});
function uploadFileOnS3(fileName, fileData){
var params = {
Key: fileName,
Body: fileData,
};
s3bucket.upload(params, function (err, res) {
if(err)
console.log("Error in uploading file on s3 due to "+ err)
else
console.log("File successfully uploaded.")
});
}
在這裏,我暫時硬編碼的AWS訪問和測試purposes.for最佳實踐密鑰參考以下鏈接。
https://docs.aws.amazon.com/AWSJavaScriptSDK/guide/node-configuring.html
問題中沒有任何內容特別要求訪問密鑰和祕密用於身份驗證。以這種方式進行身份驗證是非常糟糕的做法,因此我不認爲這是一個明智的解決方案。應爲Lambda函數配置IAM角色,該角色足以滿足Lambda函數執行其功能所需的訪問。 –
我知道我只是把祕密密鑰和訪問密鑰硬編碼,但這種方法只適用於小型個人腳本或用於測試目的。 –
如果你的lambda函數是一個VPC內執行,你將不得不爲它創建一個終結點。在找出之前,s3.putObject的回調從未被調用過。 請參閱關於S3 VPC端點的文章:https://aws.amazon.com/blogs/aws/new-vpc-endpoint-for-amazon-s3/ 請參閱關於從lambda:https:/ /aws.amazon.com/blogs/aws/new-access-resources-in-a-vpc-from-your-lambda-functions/ – vtellier