我遇到的问题是我试图简单地使用.net C#SDK为AWS S3列出存储桶,但我总是得到一个拒绝访问的例外。我在Windows 10上工作。
错误消息是:Amazon.S3.AmazonS3Exception: 'Access Denied'
我的C#代码是:
namespace AwsEmptyApp1
{
class Program
{
public static void Main(string[] args)
{
IAmazonS3 client = new AmazonS3Client();
ListBucketsResponse response = client.ListBuckets();
foreach (S3Bucket b in response.Buckets)
{
Console.WriteLine("{0}\t{1}", b.BucketName, b.CreationDate);
}
Console.Read();
}
}
}
我尝试手动设置代理:
AmazonS3Config config = new AmazonS3Config();
config.RegionEndpoint = //ENDPOINT
config.ProxyHost = //Proxy http://USERNAME:PASSWORD@PROXYIP:PROXYPORT
要么:
AmazonS3Config config = new AmazonS3Config();
config.RegionEndpoint = //ENDPOINT
config.ProxyHost = //Proxy http://PROXYIP:PROXYPORT
config.ProxyPort = 8080;
config.ProxyCredentials = new NetworkCredential(user, pw);
奇怪的是它正在使用本地CLI。 aws s3api head-bucket --bucket [BUCKETNAME]
正在工作。 aws s3 ls [BUCKET]
工作得很好。我也可以在web界面中看到所有数据。
我用aws sts get-caller-identity
和aws configure list
的证书检查了我的角色,一切都很好。
我在代理背后工作。代理设置在我的用户和系统变量HTTP_PROXY
和HTTPS_PROXY
中以http://USERNAME:PASSWORD@PROXYIP:PROXYPORT
格式设置。
我的AWS凭证存储在C:\Users\[User]\.aws\credentials
中
你有什么建议吗?
谢谢! :)
解决了:)
我有一个本地的app.config
文件,我必须声明要使用的凭证文件中的哪个配置文件和以下区域:
<?xml version="1.0"?>
<configuration>
<appSettings>
<add key="AWSProfileName" value="name"/>
<add key="AWSRegion" value="region" />
</appSettings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
</configuration>
然后我在凭证文件中添加了role_arn=
并且它有效(只需在NugGet中安装AWSSDK.SecurityToken
,因为它也缺失了)