Ich habe eine Node 4.3-Lambda-Funktion in AWS. Ich möchte in der Lage sein, eine Textdatei in S3 zu schreiben und habe viele Tutorials zur Integration mit S3 gelesen. Bei allen geht es jedoch darum, wie man Lambda-Funktionen nach dem Schreiben in S3 wie folgt aufruft:
http://docs.aws.Amazon.com/lambda/latest/dg/with-s3.html
Wie kann ich eine Textdatei in S3 aus Lambda mit Knoten erstellen? Ist das möglich? Amazons Dokumentation scheint es nicht zu behandeln.
Ja, das ist absolut möglich!
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
});
}
Stellen Sie sicher, dass Sie Ihrer Lambda-Funktion die erforderlichen Schreibberechtigungen für den Ziel-S3-Bucket-/Schlüsselpfad geben, indem Sie die IAM-Rolle auswählen oder aktualisieren, unter der Ihr Lambda ausgeführt wird.
IAM-Anweisung zum Hinzufügen:
{
"Sid": "Stmt1468366974000",
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::my-bucket-name-goes-here/optional-path-before-allow/*"
]
}
Weiterführende Literatur:
AWS JavaScript SDK: http://docs.aws.Amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html
Die spezifischen "Put Object" -Details: http://docs.aws.Amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#putObject-property
Sie können eine Datei auf S3 mit hochladen
aws-sdk
Wenn Sie den Benutzer IAM verwenden, müssen Sie den Zugangsschlüssel und den geheimen Schlüssel angeben und sicherstellen, dass Sie die erforderliche Berechtigung für den Benutzer IAM erteilt haben.
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.")
});
}
Hier habe ich temporär einen hard-codierten aws-Zugang und einen geheimen Schlüssel zu Testzwecken.
https://docs.aws.Amazon.com/AWSJavaScriptSDK/guide/node-configuring.html
IAM-Anweisung für serverless.com - In einen bestimmten Bucket in S3 schreiben
service: YOURSERVICENAME
provider:
name: aws
runtime: nodejs8.10
stage: dev
region: eu-west-1
timeout: 60
iamRoleStatements:
- Effect: "Allow"
Action:
- s3:PutObject
Resource: "**BUCKETARN**/*"
- Effect: "Deny"
Action:
- s3:DeleteObject
Resource: "arn:aws:s3:::**BUCKETARN**/*"