我知道如何使用access / secrete键访问S3:
string accessKey = "my access key";
string secretKey = "my secrete key";
IAmazonS3 client = new AmazonS3Client(accessKey, secretKey, RegionEndpoint.APSoutheast2);
ListBucketsResponse response = client.ListBuckets();
但是,这意味着将密钥存储在代码中。此代码在EC2实例上运行,我已为其分配了 S3完全管理 IAM角色。我可以打开一个CMD窗口并输入“ aws s3 ls ”并且它有效。但是如果我将NULL传递给上面代码中的两个键,它将抛出以下错误:
Invalid S3 URI - hostname does not appear to be a valid S3 endpoint
那么,如何在已经分配了 S3完全管理 IAM角色的EC2实例上运行上述代码,而不对访问密钥进行硬编码?
答案 0 :(得分:1)
在这里看到大约一半的样本 -
http://docs.aws.amazon.com/sdk-for-net/v2/developer-guide/net-dg-hosm.html
您会发现您没有向构造函数传递任何内容。
答案 1 :(得分:1)
使用不带accessKey和secret作为参数的构造函数:
IAmazonS3 client = new AmazonS3Client(RegionEndpoint.APSoutheast2);
ListBucketsResponse response = client.ListBuckets();
通过完全省略它们,SDK将访问它们的角色。