从控制台进行的AWS Lambda测试会丢失缺少的访问令牌

时间:2017-02-24 11:05:19

标签: java amazon-web-services amazon-s3 aws-lambda

我创建了一个aws lambda函数来从桶1中读取对象并将对象上传到桶2。 我已将存储桶1中的触发器设置为任何创建的对象的lambda函数。

与lambda执行相关联的角色具有以下访问权限 permissions

我的lambda功能的代码是

@Override
public String handleRequest(S3Event input, Context context) {
    try {
        context.getLogger().log("Input: " + input);
        System.out.println("started!");
        InputStream objectData = null;
        String s = "";

        AWSCredentials credentials = new BasicAWSCredentials("abc","efg");
        AmazonS3Client s3Client = new AmazonS3Client(credentials);


        for (S3EventNotificationRecord record : input.getRecords()) {
            String s3Key = record.getS3().getObject().getKey();


            String s3Bucket = record.getS3().getBucket().getName();
            context.getLogger().log("found id: " + s3Bucket + " " + s3Key);

            // retrieve s3 object added
            S3Object object = s3Client.getObject(new GetObjectRequest(
                    s3Bucket, s3Key));
            objectData = object.getObjectContent();

            context.getLogger().log(objectData.toString());


            TransferManager transferManager = new TransferManager(s3Client);
            ObjectMetadata s3ObjectMetadata = new ObjectMetadata();
            s3ObjectMetadata.setContentLength(object.getObjectMetadata().getContentLength());
            s3ObjectMetadata.setContentType(object.getObjectMetadata()
                    .getContentType());
            transferManager.upload("bucket2", s3Key, objectData,
                    s3ObjectMetadata);
        }
        return objectData.toString();

当我尝试从aws控制台执行lambda fucntion时,它会抛出丢失的访问令牌错误。 lambda上传到bucket1。请帮我解释配置/代码中缺少的内容。

0 个答案:

没有答案