C# 如何从lambda函数访问S3 bucket中的文件

C# 如何从lambda函数访问S3 bucket中的文件,c#,amazon-web-services,amazon-s3,aws-lambda,C#,Amazon Web Services,Amazon S3,Aws Lambda,我的S3存储桶中有一个文件,我想通过Lambda函数访问该文件 当我将此文件的路径传递给其中一个方法时,会出现以下错误: 找不到路径“/var/task/https:/s3.amazonaws.com/TestBucket/testuser/AWS_sFTP_Key.pem”的一部分 例如: TestMethod("https://s3.amazonaws.com/TestBucket/testuser/AWS_sFTP_Key.pem") 代码: 您可以使用AWS SDK从S3读取文件,如下

我的S3存储桶中有一个文件,我想通过Lambda函数访问该文件

当我将此文件的路径传递给其中一个方法时,会出现以下错误:

找不到路径“/var/task/https:/s3.amazonaws.com/TestBucket/testuser/AWS_sFTP_Key.pem”的一部分

例如:

TestMethod("https://s3.amazonaws.com/TestBucket/testuser/AWS_sFTP_Key.pem")
代码:


您可以使用
AWS SDK
从S3读取文件,如下所示,但是我建议使用
AWS证书管理器
IAM
存储和管理您的证书和密钥:

PS:确保为lambda函数或bucket策略分配了适当的角色,以便bucket能够从
S3
GetObject

    RegionEndpoint bucketRegion = RegionEndpoint.USWest2;//region where you store your file

    client = new AmazonS3Client(bucketRegion);

    GetObjectRequest request = new GetObjectRequest();

    request.WithBucketName(BUCKET_NAME);//TestBucket
    request.WithKey(S3_KEY);//testuser/AWS_sFTP_Key.pem

    GetObjectResponse response = client.GetObject(request);

    StreamReader reader = new StreamReader(response.ResponseStream);

    String content = reader.ReadToEnd();
更多帮助:


请编辑您的问题并包含您正在使用的代码。您是否设置了相应的安全策略并将其分配给lambda?@GiorgosDevYes,策略已经到位。@JohnRotenstein已经这样做了。您能告诉我吗?我很困惑。如果您想访问Amazon S3中的对象,为什么您的函数包含sftp代码?请注意请看上的代码示例,了解如何访问S3对象。(图中未显示C#,但您会明白的。)感谢您的帮助,但是我收到了一个错误,因为“IAmazonS3”不包含“GetObject”的定义,并且找不到接受“IAmazonS3”类型的第一个参数的扩展方法“GetObject”。
    RegionEndpoint bucketRegion = RegionEndpoint.USWest2;//region where you store your file

    client = new AmazonS3Client(bucketRegion);

    GetObjectRequest request = new GetObjectRequest();

    request.WithBucketName(BUCKET_NAME);//TestBucket
    request.WithKey(S3_KEY);//testuser/AWS_sFTP_Key.pem

    GetObjectResponse response = client.GetObject(request);

    StreamReader reader = new StreamReader(response.ResponseStream);

    String content = reader.ReadToEnd();