2016-12-20 45 views
1

在開始之前,我已閱讀與同一問題相關的SO post。然而,該帖子中的SDK版本是舊的。 根據AWS nugetpage有新的版本3是可用的,其中每個服務都有獨立的包。如何在不使用密鑰和密鑰的情況下將文件上載到AWS S3

AWS SDK for .NET的新版本3爲每個服務使用 的獨立包。例如,Amazon S3位於AWSSDK.S3程序包中, Amazon SQS位於AWSSDK.SQS中,Amazon DynamnoDB位於 AWSSDK.DynamoDBv2中。

所以我已經安裝的NuGet AWSSDK.S3包裏面還安裝依賴AWSSDK.Core。 使用IP的桶限制使用IP,所以即時執行代碼的機器可以完全訪問存儲桶。

下面是我上傳文件到S3的代碼。然而,即時通知當我創建AmazonS3Client使用new AmazonS3Client(RegionEndpoint.USWest2);

再次請注意,我得到的例外情況是創建實例,而不是上傳文件時創建新的實例。

var s3Client = new AmazonS3Client(RegionEndpoint.USWest2); //exception at this line 

var bucketName = "mybucketname"; 
    PutObjectRequest putRequest1 = new PutObjectRequest 
    { 
       BucketName = bucketName, 
       Key = "MyKey/test1.pdf", 
       FilePath = filePath 
    }; 

    PutObjectResponse response1 = s3Client.PutObject(putRequest1); 

但是我得到異常

[15時57分43秒ERR]未處理的異常 Amazon.Runtime.AmazonServiceException:找不到憑據

異常的5 1信息:System.InvalidOperationException :該應用程序的 app.config/web.config文件不包含 憑據信息 Amazon.Runtime.AppConfigAWSCredentials..ctor() E:\ J enkinsWorkspaces \ v3-stage-release \ AWSDotNetPublic \ sdk \ src \ Core \ Amazon.Runtime \ AWSCredentials.cs:line 977 at Amazon.Runtime.FallbackCredentialsFactory。 <> c.b__6_0()在 E:\ JenkinsWorkspaces \ V3階段釋放\ AWSDotNetPublic \ SDK \ SRC \核心\ Amazon.Runtime \ AWSCredentials.cs:線 2098在 Amazon.Runtime.FallbackCredentialsFactory.GetCredentials(布爾 fallbackToAnonymous)在 E:\ JenkinsWorkspaces \ V3階段釋放\ AWSDotNetPublic \ SDK \ SRC \核心\ Amazon.Runtime \ AWSCredentials.cs

例外2 5的信息:System.ArgumentException:App.config中不 包含憑據信息。請添加AWSAccessKey和AWSSecretKey屬性或AWSProfileName屬性。在 Amazon.Runtime.StoredProfileAWSCredentials..ctor(字符串PROFILENAME, 字符串profilesLocation)在 E:\ JenkinsWorkspaces \ V3階段釋放\ AWSDotNetPublic \ SDK \ SRC \核心\ Amazon.Runtime \ AWSCreden 在Amazon.Runtime。 FallbackCredentialsFactory。 <> c.b__6_1()在 E:\ JenkinsWorkspaces \ V3階段釋放\ AWSDotNetPublic \ SDK \ SRC \核心\ Amazon.Runtime \ AWSCredentials.cs:線 2099在 Amazon.Runtime.FallbackCredentialsFactory.GetCredentials(布爾 fallbackToAnonymous)在 E:\ JenkinsWorkspaces \ V3階段釋放\ AWSDotNetPublic \ SDK \ SRC \核心\ Amazon.Runtime \ AWSCredentials.cs

例外3 5:系統。ArgumentException:配置文件''未找到 或無法從SDK憑證存儲區加載。驗證 配置文件名稱和數據是否正確。在 Amazon.Runtime.StoredProfileFederatedCredentials..ctor(字符串 PROFILENAME,字符串profilesLocation,WebProxy proxySettings)在 E:\ JenkinsWorkspaces \ V3階段釋放\ AWSDotNetPublic \ SDK \ SRC在 Amazon.Runtime.FallbackCredentialsFactory。 <> c.b__6_2()在 E:\ JenkinsWorkspaces \ V3階段釋放\ AWSDotNetPublic \ SDK \ SRC \核心\ Amazon.Runtime \ AWSCredentials.cs:線 2101在 Amazon.Runtime.FallbackCredentialsFactory.GetCredentials(布爾 fallbackToAnonymous)在 E:\ JenkinsWorkspaces \ V3階段釋放\ AWSDotNetPublic \ SDK \ SRC \核心\ Amazon.Runtime \ AWSCredentials.cs

異常4 5的信息:System.InvalidOperationException:環境 變量AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY/AWS_SESSION_TOKEN 未使用AWS憑證進行設置。在 Amazon.Runtime.EnvironmentVariablesAWSCredentials.FetchAWSCredentials()在 ë :\ JenkinsWorkspaces \ V3階段釋放\ AWSDotNetPublic \ SDK \ SRC \核心\ Amazon.Runtime \ AWSCredentials.cs:線 856在Amazon.Runtime.EnvironmentVariablesAWSCredentials E:\ JenkinsWorkspaces \ v3-stage-release \ AWSDotNetPublic \ sdk \ src \ Core \ Amazon.Runtime \ AWSCredentials.cs:line 836 at Amazon.Runtime.FallbackCredentialsFactory。 <> c.b__6_3()在 E:\ JenkinsWorkspaces \ V3階段釋放\ AWSDotNetPublic \ SDK \ SRC \核心\ Amazon.Runtime \ AWSCredentials.cs:線 2102在 Amazon.Runtime.FallbackCredentialsFactory.GetCredentials(布爾 fallbackToAnonymous)在 E:\ JenkinsWorkspaces \ V3階段釋放\ AWSDotNetPublic \ SDK \ SRC \核心\ Amazon.Runtime \ AWSCredentials.cs

異常5 5:Amazon.Runtime.AmazonServiceException:無法 觸及憑證服務器 Amazon.Runtime.URIBasedRefreshingCredentialHelper.GetContents(Uri uri) in E:\ JenkinsWorkspaces \ v3-stage-release \ AWSDotNetPublic \ sdk \ src \ Core \ Amazon.Runt IME \ AWSCredentials.cs:線 1194在 Amazon.Runtime.InstanceProfileAWSCredentials.d__10.MoveNext() 在 E:\ JenkinsWorkspaces \ V3階段釋放\ AWSDotNetPublic \ SDK \ SRC \核心\ Amazon.Runtime \ AWSCredentials。 CS:在Amazon.Runtime.InstanceProfileAWSCredentials.GetFirstRole()在 E行 :\ JenkinsWorkspaces \ V3階段釋放\ AWSDotNetPublic \ SDK \ SRC \核心\ Amazon.Runtime \ AWSCredentials.cs:線 1422在 亞馬遜。 Runtime.FallbackCredentialsFactory.ECSEC2CredentialsWrapper() 在 E:\ JenkinsWorkspaces \ V3階段釋放\ AWSDotNetPublic \ SDK \ SRC \核心\ Amazon.Runtime \ AWSCredentials.cs:線 2129在 Amazon.Runtime.FallbackCredentialsFactory.GetCr edentials(布爾 fallbackToAnonymous)在 E:\ JenkinsWorkspaces \ V3階段釋放\ AWSDotNetPublic \ SDK \ SRC \核心\ Amazon.Runtime \ AWSCredentials.cs

在Amazon.Runtime.FallbackCredentialsFactory.GetCredentials(布爾 fallbackToAnonymous ) E:\ JenkinsWorkspaces \ v3-stage-release \ AWSDotNetPublic \ sdk \ src \ Core \ Amazon.Runtime \ AWSCredentials.cs at Amazon.Runtime.FallbackCredentialsFactory.GetCredentials() E:\ JenkinsWorkspaces \ v3-stage-發行\ AWSDotNetPublic \ sdk \ src \ Core \ Amazon.Runtime \ AWSCredentials.cs:行 2136 at Amazon.S3.AmazonS3Client ..c:\ JenkinsWorkspaces \ v3-stage-release \ AWSDotNetPublic \ sdk \ src \ Services \ S3 \ Generated_bcl45 \ AmazonS3Client.cs: 在Utility.Program.Dowork()中爲 C:\ ctor(RegionEndpoint region) 回購\ POC \實用\實用\的Program.cs:線133在 Utility.Program.Main(字串[] args)在 C:\回購\ POC \實用\實用\的Program.cs:行23

回答

1

型材中的鏈接更老的SDK中指定的行爲仍然有效。如果您配置AmazonS3Clientnull訪問密鑰和機密值,客戶端將以匿名模式運行。

這在SDK的.NET文檔中沒有記載,但記錄在S3 Developer Guide's .NET section中。

注意

您可以在不提供您的安全憑據創建AmazonS3Client客戶端。使用此客戶端發送的請求是匿名請求,無需簽名。如果您發送的匿名請求是不公開的資源,則Amazon S3會返回錯誤。

您可能會想要使用像takes a key, secret, and region那樣的構造函數。

// passing null for the key and secret will make the client generate anonymous requests 
var client = new AmazonS3Client(null, null, RegionEndpoint.USWest2); 

// do things with the client 
0

要獲得訪問任何鬥,你會需要它的訪問和密鑰,因爲你是在這裏使用SDK「變種s3Client =新AmazonS3Client(RegionEndpoint.USWest2);」。您只需在配置文件中提供憑證,SDK將自動從該處獲取憑證。

相關問題