将主题附加到 SNS 应用程序的“端点已更新”可配置主题时,我遇到了一些意外行为。根据 AWS 关于SNS 应用程序事件的文档,当平台端点已更新为禁用或令牌已更改时,我应该会收到有关我配置的主题的事件。
就我而言,我有一个订阅此主题的 lambda 函数,然后通过调用 AWS 的 javascript sdk 检索平台端点的属性,SNS.getEndpointAttributes以便我可以检查哪些属性已更改,以删除端点或更新持久存储中的关联令牌。然而,此调用返回端点,从而Enabled = true阻止我采取纠正措施。但是,如果我查看 AWS SNS 控制台,我可以看到端点已被禁用为Enabled = false。
其他人是否也遇到过类似的不一致问题?如果有,解决这些问题的最佳做法是什么?感谢您的任何意见!
这是我尝试在 Jest 中编写单元测试的方法
async function getParameter(parameter: string,
withDecryption: boolean = false): Promise<String> {
const params = {
Name: parameter,
WithDecryption: withDecryption,
};
try {
const request = await ssmClient.getParameter(params).promise();
return request.Parameter.Value;
} catch (err) {
logger.error(`Error ${err}`);
throw Error(err);
}
}
Run Code Online (Sandbox Code Playgroud)
测试方法 :
test('getParameterFromSystemManager', async () => {
const mockedResponseData = {
Parameter: {
Value: 'parameterValue',
},
};
ssmClient.getParameter(params).promise = jest.fn();
ssmClient.getParameter(params).promise.mockImplementation(() => Promise.resolve(mockedResponseData));
const data =
await SSMParameters.getParameterFromSystemManager('testurl', false,
'Test', 'elastic');
expect(data).toEqual(mockedResponseData.Parameter.Value);
expect(ssmClient.getParameter).toHaveBeenCalledTimes(1);
});
Run Code Online (Sandbox Code Playgroud)
我收到错误:
类型错误:ssmClient.getParameter(...).promise.mockImplementation 不是函数
我们如何在 Jest …
我正在尝试使用 AWS S3 SDK JavaScript 获取 httpUploadProgress。使用这一行,我可以看到上传进度的预期结果,但是如何使用 Promise() 获得相同的结果,我在浏览器中使用它作为外部 JS 资源。
工作示例:
function uploadFile(){
var bucket = new AWS.S3({params: {Bucket: BUCKET_NAME}});
var fileChooser = document.getElementById('file');
var file = fileChooser.files[0];
if (file) {
console.log();
var opts = {queueSize: 1, partSize: 1024 * 1024 * 5};
var params = {Key: file.name, ContentType: file.type, Body: file};
s3.upload(params,opts).on('httpUploadProgress', function(evt) {
console.log("Uploaded :: " + parseInt((evt.loaded * 100) / evt.total)+'%');
}).send(function(err, data) {
console.log(err);
alert("File uploaded successfully.");
});
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
我想要的承诺也是如此。
function uploadFile(){ …Run Code Online (Sandbox Code Playgroud) I'm trying to build an application with a basic client-server infrastructure. The server infrastructure is hosted on AWS, and when a client logs on, it sends a message to the server to set up various infrastructure considerations. One of the pieces of infrastructure is an SQS Queue that the client can poll from to get updates from the server (eventually I'd like to build a push service but I don't know how for right now).
I'm building this application in …
我是 AWS 的新手。我怀疑是否有任何方法可以使用 NodeJs 获取 AWS-SQS 队列中待处理的消息数量(消息总数)。如果有什么办法可以得到计数请帮朋友解决
我2.730.0在 Node.JS 的 Typescript 文件中使用 AWS SDK for Javascript 版本(撰写本文时最新)。
我正在使用该selectObjectContent操作来查询 CSV 文件,并按照文档中的指南我有此块:
import * as S3 from 'aws-sdk/clients/s3';
const s3 = new S3();
...
s3.selectObjectContent(params, (err, data) => {
if (!err){
data.Payload.on('data', (event) => {
// Do something with returned records
});
}
});
Run Code Online (Sandbox Code Playgroud)
该行在data.Payload.on('data', (event) => {linter 中给出了此错误:
类型“EventStream<{ Records?: RecordsEvent;”上不存在属性“on” 统计?:统计事件;进度?:ProgressEvent;Cont?: 延续事件;结束?:结束事件;}>'。
我需要改变什么才能on工作?
我已使用 @aws-sdk/client-cognito-identity-provider 实现了用户注册,但无法从 AWS SDK 中找到模块或 API 来实现登录 cognito
我已经编写了一个节点js程序,其中包含一个名为的方法 AWS.config.update()。当我尝试在终端上运行它时,出现错误:
错误:找不到模块“ aws-sdk”
我有几个用于管理不同项目的 AWS 配置文件。我们将默认的称为“user1”,将我想要使用的称为“user2”
因此,如果我只是这样做,aws s3 ls它当然会给我 user1 的信息,或者如果我这样做,aws s3 ls --profile=user2它会给我 user2 的信息,这里一切都很好
我也知道我可以export AWS_DEFAULT_PROFILE=user2这样做aws s3 ls,这正确地给了我 user2 的存储桶
问题是,我有一个 Node 应用程序,当我在本地运行时,我想使用 user2 的配置文件。我已经尝试过各种方式AWS_DEFAULT_PROFILE=user2 npm run dev,但不知道该怎么做?
问题如何运行本地 Node 程序并使其 AWS SDK 使用我所需的配置文件?
amazon-web-services aws-cli aws-sdk aws-sdk-nodejs aws-sdk-js
我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
aws-sdk-js ×10
aws-sdk ×7
node.js ×4
amazon-s3 ×2
amazon-sqs ×2
amazon-sns ×1
aws-cli ×1
javascript ×1
jestjs ×1
ssm ×1