我创建了一个aws lambda函数来从桶1中读取对象并将对象上传到桶2。 我已将存储桶1中的触发器设置为任何创建的对象的lambda函数。
我的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。请帮我解释配置/代码中缺少的内容。