簡體   English   中英

如何從Lambda函數訪問S3存儲桶中的文件

[英]How to access file in S3 bucket from lambda function

我的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")

碼:

public void FunctionHandler(S3Event s3Event, ILambdaContext lambdaContext)
        {
            ConnectionInfo connectionInfo = new ConnectionInfo("xxx.xxx.xx.xxx", "testuser",
                                                   new AuthenticationMethod[]{
            new PrivateKeyAuthenticationMethod("testuser", new PrivateKeyFile[] {
                new PrivateKeyFile("https://s3.amazonaws.com/TestBucket/testuser/AWS_sFTP_Key.pem")})
});

            SftpClient sftpClient = new SftpClient(connectionInfo);
            sftpClient.Connect();
            lambdaContext.Logger.Log(sftpClient.WorkingDirectory);
            sftpClient.Disconnect();
        }

您可以使用AWS SDK如下所示從S3讀取文件,但是我建議使用AWS Certificate ManagerIAM來存儲和管理您的證書和密鑰:

PS:確保為lambda函數或存儲桶策略分配了適當的角色,以便存儲桶能夠從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();

更多幫助:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM