自 2016 年 3 月以来,javascript/nodejs 的 aws sdk 确实在 AWS.Request链接上提供了 .promise() 方法。
现在我正在 AWS.DynamoDB.DocumentClient(...).get() 方法(它返回一个 AWS.Request 对象)上运行一些单元测试,之后我也调用 .promise() 方法来接收一个 Promise。
现在,当我存根 .get() 方法时,我已经返回了一个 Promise,所以我希望 .promise() 方法只返回我现有的 Promise(通过“返回这个”)。
我的代码就像
var docClient = AWS.DynamoDB.DocumentClient(...)
docClient.get(...).promise().then(...)
Run Code Online (Sandbox Code Playgroud)
和我的测试文件
var docClient = AWS.DynamoDB.DocumentClient(...)
var batchGetStub = sinon.stub(docClient, 'get').callsFake(function(){return Promise.resolve({id:1337})});
// now I need to also stub the .promise() method
var promiseStub = sinon.stub(docClient.get, 'promise').callsFake(functions(){return this}); // just return the promise back
Run Code Online (Sandbox Code Playgroud)
这似乎不起作用,我返回以下错误
类型错误:不能存根不存在的自己的财产承诺
我想我不知何故需要在我的假函数上声明一个 .promise 方法。
我试过这个:
this.protoype.promise = function(this){return this};
在我的假函数中,但这会抛出
类型错误:无法设置未定义的属性“承诺”
是否可以将索引从 5 增加到 15?
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html
每个表的二级索引 每个表最多可以定义 5 个本地二级索引和 5 个全局二级索引。
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Query.html
查询操作根据主键值查找项目。您可以查询具有复合主键(分区键和排序键)的任何表或二级索引。
如果我理解正确,您可以设置 1 个主哈希键、5 个辅助键和另外 5 个全局键……并且您只能查询索引。
我们正在考虑将 DynamoDB 用于 NoSQL 数据库,但我们对此完全感到困惑。在 Mongo 或 Elastic 或 Solr 中,您几乎可以通过任何您想要的文档属性进行查询。
在这个应用程序中,我们已经有 15 个我们知道要查询的属性,但 DynamoDB 只提供索引 5 的能力......除非我弄错了......除了对预设索引进行查询之外,还有另一种查询方式吗?
我是 AWS 的新手。据我了解,S3 传输加速使用 Cloudfront 边缘实现最快上传,但我找不到 PHP API 的正确文档,用于将对象上传到启用传输加速的存储桶。我的代码:
use Aws\S3\S3Client;
$S3_Client = new S3Client([
'version' => 'latest',
'region' =>'ap-south-1',
'credentials' => [
'key' => 'Accesskey',
'secret' => 'Secretkey',
],
'endpoint' => 'http://my_bucket_name.s3-accelerate.amazonaws.com'
]);
$bucket = 'my_bucket_name';
$key = 'EC2.pdf';
$SourceFile = '/path/to/the/file/EC2.pdf';
$put = $S3_Client->putObject([
'Bucket' => $bucket,
'Key' => $key,
'SourceFile' => $SourceFile
]);
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
The authorization header is malformed;
the region 'ap-south-1' is wrong; expecting 'us-east-1'
Run Code Online (Sandbox Code Playgroud)
但是我的存储桶位于 us-east-1 ,当我将区域更改为
us-east-1
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
The specified bucket does not exist
Run Code Online (Sandbox Code Playgroud) 我正在将 aws-sdk 用于 Nodejs,并且我正在以缓冲区的形式从 AWS 存储桶取回一个对象,如下所示:[31, 139, 8, 0, 0, 0 ....]
存储桶中的原始对象是 csv 格式,我可以将缓冲区转换为 csv 或 json 等可用格式吗?
调用 CreateBucket 操作时发生错误(InvalidLocationConstraint):使用命令时指定的位置约束无效
aws s3api create-bucket --bucket my-bucket
--create-bucket-configuration LocationConstraint=region
Run Code Online (Sandbox Code Playgroud) 无论如何,是否可以直接删除/删除 AWS 参数存储中的所有项目?
我找到的所有命令行都是将它一个一个地删除,或者给定一个名称列表将其删除。
我也尝试使用
aws ssm delete-parameters --cli-input-json test.json
Run Code Online (Sandbox Code Playgroud)
与 test.json 文件看起来像这样
{
"Names": [
"test1",
"test2"
]
}
Run Code Online (Sandbox Code Playgroud)
还是不行。。
理想情况下,如果我可以使用 --query 并按原样使用它,那就太好了。
我正在使用 --query 像这样
aws ssm get-parameters-by-path --path / --max-items 2 --query 'Parameters[*].[Name]'
Run Code Online (Sandbox Code Playgroud) 我GetMetricsData从 AWS CloudWatch查询:
{
StartTime: lastWeek ,
EndTime: today,
MetricDataQueries: [
{
Id: 'invocations',
Label: 'Invocations',
MetricStat: {
Metric: {
Dimensions: [
{
Name: 'FunctionName',
Value: /* FunctionName */,
},
],
MetricName: 'Invocations',
Namespace: 'AWS/Lambda'
},
Period: 60*60*24, // day
Stat: 'Sum',
Unit: 'Count',
},
},
],
}
Run Code Online (Sandbox Code Playgroud)
这就是我得到的:
我没有获得 7 天(即一周)的数据,而是获得了 5 天。我错过了 2 天(如您在图表中所见)。
那些失踪的日子没有任何数据。
CloudWatch 不会返回没有数据的点。我怎样才能让Sum操作返回实际计数 ( 0) 呢?
amazon-web-services amazon-cloudwatch aws-sdk amazon-cloudwatch-metrics aws-sdk-js
我试图包装CompletableFuture在 ReactorMono类型中以简化我的转换操作。Project Reactor 总体来说更方便!我在 AWS Lambda 函数中工作,我正在使用新的 AWS Java SDK 2.x 版本调用 AWS 服务,例如 S3、SQS 等。这个新的开发工具包允许对 AWS 服务进行异步调用并返回 CompleteableFuture 对象。
例如:
S3AsyncClient s3AsyncClient = S3AsyncClient.builder().build();
Mono.fromFuture(s3AsyncClient.getObject(b ->
b.bucket(bucketId).key(objectKey), AsyncResponseTransformer.toBytes()).subscribe()
System.out.println("stuff");
Run Code Online (Sandbox Code Playgroud)
问题是,当我的主代码调用 时CompletableFuture (s3AsyncClient.getObject),执行线程突然切换到 CompleteableFuture 线程并且我调用 Mono 的主方法在 CompletableFuture 完成之前返回。
基本上,从上面的例子来看,"stuff"字符串在s3AsyncClient.getObject完成之前被打印出来。
如何确保 Mono 和CompletableFuture在同一线程中执行,或者如何确保我的 lambda 在CompletableFuture完成之前不会终止?
对于那些想知道的人,只有在我将代码远程部署到 AWS Lambda 时才会出现这种行为。我在本地没有遇到这种行为......
APPSYNC_ERROR: Attempt to invoke virtual method
Run Code Online (Sandbox Code Playgroud)
java.util.Map com.amazonaws.mobile.client.AWSMobileClientStore.get(java.lang.String[]) on a null object reference
I am trying to inserting data in AWS table, But i got this error. Can you help me to resolve this issue?
AWSAppSyncClient client = AWSAppSyncClient.builder()
.context(context)
.region(AppHelper.cognitoRegion)
.serverUrl(AppHelper.SERVER_URL)
.cognitoUserPoolsAuthProvider(new CognitoUserPoolsAuthProvider() {
@Override
public String getLatestAuthToken() {
try {
return AWSMobileClient.getInstance().getTokens().getIdToken().getTokenString();
} catch (Exception e){
Log.e("APPSYNC_ERROR", e.getLocalizedMessage());
return e.getLocalizedMessage();
}
}
}).persistentMutationsCallback(new PersistentMutationsCallback() {
@Override
public void onResponse(PersistentMutationsResponse response) {
Log.d("NOTERROR", response.getMutationClassName());
}
@Override
public void onFailure(PersistentMutationsError …Run Code Online (Sandbox Code Playgroud) android amazon-web-services aws-sdk aws-appsync appsync-apollo-client
我正在尝试将消息从我的 lambda 函数发送到已创建的 sqs 队列。当我运行代码时,它实际上停止了执行并且 aws-sdk 不提供任何反馈。
当我手动插入消息时,我还有一个从队列中读取的函数,我使用相同的代码来创建会话。我相信这两种情况都可以使用。
然后我尝试使用亚马逊提供的代码,但结果是一样的。 https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/sqs-example-receive-message.html
我的代码的唯一区别是我如何创建会话。就像我上面提到的那样,这与我在将消息手动插入队列时读取消息的方式相同。在该功能上,一切似乎都很完美。
func sendToOrderQueue(rID string, c Course) error {
log.Println(1)
var err error
sess := session.Must(session.New(&aws.Config{
Region: aws.String("eu-central-1"),
}), err)
svc := sqs.New(sess)
log.Println(2)
url := "https://sqs.eu-central-1.amazonaws.com/XXXXXX/myqueue"
log.Println(3)
result, err := svc.SendMessage(&sqs.SendMessageInput{
DelaySeconds: aws.Int64(10),
MessageAttributes: map[string]*sqs.MessageAttributeValue{
"Title": &sqs.MessageAttributeValue{
DataType: aws.String("String"),
StringValue: aws.String("The Whistler"),
},
"Author": &sqs.MessageAttributeValue{
DataType: aws.String("String"),
StringValue: aws.String("John Grisham"),
},
"WeeksOn": &sqs.MessageAttributeValue{
DataType: aws.String("Number"),
StringValue: aws.String("6"),
},
},
MessageBody: aws.String("Information about current NY Times fiction bestseller for week of …Run Code Online (Sandbox Code Playgroud) aws-sdk ×10
amazon-s3 ×2
node.js ×2
amazon-sqs ×1
android ×1
aws-appsync ×1
aws-cli ×1
aws-kms ×1
aws-lambda ×1
aws-sdk-go ×1
aws-sdk-js ×1
aws-ssm ×1
go ×1
php ×1
sinon ×1