66 votes

Écriture de la fonction AWS Lambda sur S3

J'ai un Nœud 4.3 fonction Lambda dans AWS. Je veux être capable d'écrire un fichier texte pour S3 et avoir lu de nombreux tutoriels sur la façon d'intégrer avec S3. Cependant, elles sont toutes sur la façon d'appeler les Lambda fonctions après avoir écrit à S3 comme ci-dessous:

http://docs.aws.amazon.com/lambda/latest/dg/with-s3.html

Comment puis-je créer un fichier texte dans S3 à partir de Lambda à l'aide d'un noeud? Est-ce possible? Les amazones de la documentation ne semble pas couvrir.

105voto

Xavier Hutchinson Points 1194

Oui, il est tout à fait possible!

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
        });
}

Assurez-vous que vous donnez à votre fonction Lambda requis autorisations d'écriture à la cible compartiment s3 / chemin d'accès clé en sélectionnant ou de mettre à jour le Rôle IAM votre lambda s'exécute sous.

IAM Instruction pour ajouter:

{
    "Sid": "Stmt1468366974000",
    "Effect": "Allow",
    "Action": "s3:*",
    "Resource": [
        "arn:aws:s3:::my-bucket-name-goes-here/optional-path-before-allow/*"
    ]
}

Pour en savoir plus:

AWS SDK JavaScript: http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html

La "Mettre l'Objet" détails: http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#putObject-property

4voto

Steffen Points 88

Déclaration IAM pour serverless.com - Ecrire dans S3 dans un compartiment spécifique

 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**/*"
 

1voto

Anish Agarwal Points 1173

Vous pouvez télécharger le fichier sur s3 en utilisant

aws sdk

Si vous utilisez IAM utilisateur, alors vous devez fournir une clé d'accès et la clé secrète, et assurez-vous que vous avez fourni les autorisations nécessaires à la IAM utilisateur.

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.")
    });
}

Ici, j'ai temporairement codée en dur aws d'accès et la clé secrète pour des fins de test.pour les meilleures pratiques référer lien ci-dessous.

https://docs.aws.amazon.com/AWSJavaScriptSDK/guide/node-configuring.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X