问题标签 [aws-sdk-net]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
2858 浏览

.net - ASP.NET Core 2 Web API AWS .NET SDK S3 访问被拒绝

我正在 Windows 笔记本电脑上使用 .NET Core 2 开发 Web api。我正在尝试访问我的 S3 存储桶并收到拒绝访问错误。

有趣的是它可以与 AWS CLI 一起使用。

我的 appSettings.Development.json 文件:

Startup.cs 文件:

BucketController.cs 文件:

我得到的错误是 AmazonS3Exception: Access Denied。

当我从 AWS CLI 执行此操作时,它可以工作。

我的凭据和配置文件位于 .aws 中的默认位置。

0 投票
1 回答
5461 浏览

amazon-s3 - Amazon S3 客户端无法下载带有空格或哈希的文件?

我正在使用AWSSDK.S3版本3.3.17.2AWSSDK.Core版本3.3.21.16上传文件,然后下载相同的文件。如果文件名中有空格(或 ,则以下代码无法下载文件#

然后出于测试目的,我正在上传文件并再次下载相同的文件

我得到了例外

Amazon.S3.AmazonS3Exception:指定的键不存在。---> Amazon.Runtime.Internal.HttpErrorResponseException:远程服务器返回错误:(404)未找到。---> System.Net.WebException:远程服务器返回错误:(404)未找到。在 System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
在 System.Threading.Tasks.TaskFactory 1.FromAsyncCoreLogic(IAsyncResult iar, Func2 endFunction, Action 1 endAction, Task1 promise, Boolean requiresSynchronization) --- 从先前抛出异常的位置结束堆栈跟踪--- 在 System. Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)在......

为简洁起见删除了剩余的异常

该文件确实存在于存储桶中。事实上,我可以复制并粘贴 s3url(即uploadedFileS3Link变量的值)并通过浏览器下载文件。

(请注意,实际上我正在尝试下载已上传的 1000 多个文件,这些文件的名称中包含空格。因此,在上传时删除空格不是一种选择)

更新 1 我注意到 S3 浏览器 Url 编码文件名

在此处输入图像描述

我尝试使用编码文件路径下载文件,https://mybucket.s3-us-west-2.amazonaws.com/development/test/my%20test%20file.pdf 但仍然无法正常工作

0 投票
1 回答
1913 浏览

amazon-dynamodb - DynamoDb - .NET 对象持久性模型 - LoadAsync 不适用 ScanCondition

我在这个领域相当新,任何帮助表示赞赏

我在 Dynamodb 数据库中有一个名为 Tenant 的表,如下所示:“TenantId”是哈希主键,我没有其他键。我有一个名为“IsDeleted”的字段,它是布尔值

表结构

我正在尝试运行查询以获取未删除指定“TenantId”的记录(“IsDeleted == 0”)

我可以通过运行以下代码得到正确的结果:(返回 0 项)

但是当我尝试使用以下代码片段获取它时没有运气(它返回也被删除的项目)(返回 1 个项目)

知道为什么 ScanCondition 没有效果吗?

后来我也试过这个:(抛出异常)

它抛出:“消息”:“必须为表租户定义一个范围键或 GSI 索引”

为什么它抱怨范围键或索引?我打电话

0 投票
1 回答
785 浏览

amazon-dynamodb - 来自 aws dynamodb-.net core sdk 的安全令牌无效异常

我正在尝试使用 AWS .NET 核心 SDK 在 dynamodb 中插入记录,但出现以下异常:

请求中包含的安全令牌无效。

请在下面找到我为连接它所做的步骤:

  1. 在 IAM 中创建了一个新的访问密钥。
  2. 在本地下载访问密钥和密钥。
  3. 在 C:/users//.aws/ 中创建了文件名凭据
  4. 在文件中添加了以下代码(出于安全目的删除了凭据)

    [default] aws_access_key_id = xxxxxxxxxxxxxxxxxxxx aws_secret_access_key = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

  5. 在 appsettings.json 文件中添加了以下代码:

    "AWS":{ "Region": "ap-south-1", "Profile": "default"}

  6. 在 startup.cs 的 ConfigureServices 方法中,我添加了以下代码: services.AddDefaultAWSOptions(Configuration.GetAWSOptions()); services.AddAWSService<IAmazonDynamoDB>();

  7. 当我使用以下代码执行我的代码时,我收到异常“请求中包含的安全令牌无效”

  8. 我也尝试过从 appsettings.json 获取访问密钥和密钥 "AWS": { "Region": "ap-south-1", "AccessKey": "xxxxxxxxxxxxxxxxxxxx", "SecretKey": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" }

  9. 并在 startup.cs 文件的环境变量中设置这些凭据

services.AddDefaultAWSOptions(Configuration.GetAWSOptions());
services.AddMvc(); Environment.SetEnvironmentVariable("AWS_ACCESS_KEY_ID", Configuration["AWS:AccessKey"]); Environment.SetEnvironmentVariable("AWS_SECRET_ACCESS_KEY", Configuration["AWS:SecretKey"]); Environment.SetEnvironmentVariable("AWS_REGION", Configuration["AWS:Region"]); services.AddAWSService<IAmazonDynamoDB>();

  1. 我仍然遇到同样的异常,请在下面找到堆栈跟踪:

在 E:\JenkinsWorkspaces\v3-stage-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\ErrorHandler\HttpErrorResponseExceptionHandler.cs:line 中的 Amazon.Runtime.Internal.HttpErrorResponseExceptionHandler.HandleException(IExecutionContext executionContext, HttpErrorResponseException 异常) 60 在 E:\JenkinsWorkspaces\v3-stage-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\ErrorHandler\ErrorHandler.cs 中的 Amazon.Runtime.Internal.ErrorHandler.ProcessException(IExecutionContext executionContext, Exception exception): Amazon.Runtime.Internal.ErrorHandler.d__5 的第 212 行1.MoveNext() in E:\JenkinsWorkspaces\v3-stage-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\ErrorHandler\ErrorHandler.cs:line 104 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Amazon.Runtime.Internal.CallbackHandler.<InvokeAsync>d__91.MoveNext() --- 从先前引发异常的位置结束堆栈跟踪 --- 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 的 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 Amazon .Runtime.Internal.CredentialsRetriever.d__7 1.MoveNext() in E:\JenkinsWorkspaces\v3-stage-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\Handlers\CredentialsRetriever.cs:line 98 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Amazon.Runtime.Internal.RetryHandler.<InvokeAsync>d__101.MoveNext() --- 从先前引发异常的位置结束堆栈跟踪 --- 在 Amazon.Runtime.Internal.RetryHandler 的 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() .d__101.MoveNext() in E:\JenkinsWorkspaces\v3-stage-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\RetryHandler\RetryHandler.cs:line 153 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Amazon.Runtime.Internal.CallbackHandler.<InvokeAsync>d__91.MoveNext() --- 从先前引发异常的位置结束堆栈跟踪 --- 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 的 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 Amazon .Runtime.Internal.CallbackHandler.d__9 1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Amazon.Runtime.Internal.ErrorCallbackHandler.<InvokeAsync>d__51.MoveNext() 在 E:\JenkinsWorkspaces\v3-stage-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\Handlers\ErrorCallbackHandler.cs:line 58 ---从先前引发异常的位置结束堆栈跟踪 --- 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 在 Amazon.Runtime.Internal.MetricsHandler.d__1 的 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter1.GetResult() 在 D:.Net Projects\TrainerExchange\proj\TXApi\DataAccess\Implementation\TrainerAccess.cs:line 47 中的 DataAccess.Implementation.TrainerAccess.d__6.MoveNext()

有人可以帮我解决这个问题吗?

如果我在这里遗漏任何东西,请告诉我。

0 投票
1 回答
1890 浏览

amazon-web-services - 尝试从 AWS Secrets Manager 获取密钥时,AWS .NET SDK 抛出“现有连接被远程主机强制关闭”

我只是尝试使用 .NET SDK 从 AWS Secrets Manager 中检索密钥。以下内容部署到 us-east-2 并且实例配置文件附加了适当的策略。我通过使用 cli 检索密钥来验证权限配置是否正确。

一两分钟后,我收到以下错误。

0 投票
1 回答
259 浏览

docker - Cognito Identity System.IO.InvalidDataException:无法确定协议。在 Elastic beanstalk 上的 docker 中运行时

在 Elastic beanstalk 的 docker 容器中运行我的应用程序时,我注意到了这个错误。获取用户和登录操作工作正常,但尝试创建新用户会引发此错误。

针对同一个 Cognito 实例进行本地开发,不会发生此问题。我认为这与从附加到弹性 beanstalk 实例的 IAM 角色中检索权限有关。

弹性 beanstalk 实例的 IAM 实例配置文件附加了 AmazonCognitoPowerUser 策略。这与我用于本地开发的用户所附的策略相同

堆栈跟踪:

出现错误的相关代码:

我不确定这是否是 sdk 中的错误或弹性 beanstalk 实例的错误配置

0 投票
0 回答
456 浏览

c# - AWS SDK 获取 rbac 令牌的会话令牌

我有一个通过 AWS 配置和保护的 API 和其他服务。我们应用了 RBAC 风格的权限系统,以允许/拒绝使用 Cognito 和联合身份中的组访问资源。

当用户登录到系统时,他们会获得一个 JWT 令牌,其中列出了他们有权访问的 cognio:roles,并且可以通过为该资源请求临时会话令牌来使用这些令牌来执行不同的操作。

我目前有一个 Angular 网站,它按预期工作,一旦用户登录,就可以像这样请求会话令牌:

我现在正尝试在 .net 中做同样的事情,因为我们有许多需要访问 AWS 资源/api 的桌面和移动 (Xamarin) 应用程序。

我在这里关注了 AWS 博客:https : //aws.amazon.com/blogs/developer/cognitoauthentication-extension-library-developer-preview/ 并且能够根据我的 cognito 用户池对我的用户进行身份验证。

我现在卡住了,因为如何获取用户有权访问的特定角色的会话令牌 - 我尝试使用以下内容:

但是,每次我这样做时,我都会收到一条Amazon.CognitoIdentity.Model.NotAuthorizedException消息: The ambiguous role mapping rules for: cognito-idp.us-east-1.amazonaws.com/us-east-1_xxxxxxxxx denied this request.

从跟踪代码和测试来看,我似乎需要以某种方式指定在从 Cognito 用户获取 cognito 时使用的 CustomRoleArn,否则 cognito 联合身份中基于令牌的规则将返回拒绝响应。- 但我不知道如何在 AWS .net SDK 中做到这一点......

0 投票
1 回答
396 浏览

c# - AWS S3 的 C# UI 未更新

我正在用 C# 创建一个下载应用程序,用于从 Amazon AWS S3 存储下载文件。我可以毫无问题地下载文件,但我正在尝试创建一个进度事件。

要创建事件,我在下载函数中使用以下代码:

我创建的事件处理程序如下:

问题是它只在下载文件时更新,但事件运行得更频繁。当我下载最后一个文件(12MB)时;lable7(事件计数器)从 3 跳到 121,所以我知道它正在运行,但只是没有更新。

我也尝试了一个“标准”调用,但我得到了相同的结果。

函数的附加代码:

0 投票
1 回答
475 浏览

aws-api-gateway - 如何使用启用的身份提供程序进行身份验证

我正在寻找有关如何扩展我们现有的 Cognito 身份验证流程以包含其他“启用的身份提供者”的文档。

目前我们执行以下操作

var userPool = new CognitoUserPool(poolId, clientId, provider); var user = new CognitoUser(username, clientId, userPool, provider); var context = await user.StartWithSrpAuthAsync(new InitiateSrpAuthRequest { Password = string.IsNullOrEmpty(temppassword) ? password : temppassword });

如果结果context.AuthenticationResult不为空,那么我们将参加比赛,我可以在随后调用 AWS API Gateway 端点时使用 context.AuthenticationResult.IdToken 作为 OAuthBearerToken,这些端点受同一个 Cognito 用户池的保护。

所有这一切都很好,但现在我们正在尝试启用其他身份提供者(首先从 Auth0 开始),我现在不知道如何获取 API 网关将从 Cognito 识别的 IdToken,对于在启用的身份提供者之一。

0 投票
0 回答
103 浏览

amazon-web-services - AccessToken 中的 Xamarin / .Net Cognito 范围

我正在开发一个 xamarin 应用程序。用户管理是通过 Cognito 完成的。我想在 api 网关使用 accessToken 进行身份验证。所以我定义了一个允许在 api 网关调用函数的范围。所以现在我的问题是:登录时如何将范围添加到 accessToken?我使用.Net SDK。有样品吗?访问令牌中的唯一范围当前是 aws.cognito.signin.user.admin。如何添加额外的范围?