如何解决如何将 aws 访问和密钥与 aws sqs sdk v3 一起用于 angular?
我正在尝试在我的 Angular 应用程序中添加 sqs,以便我的后端可以向我的前端发送通知。 我找到了这个例子,但他们没有解释如何登录。
源代码在这里:https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/javascriptv3/example_code/sqs/src/sqs_receivemessage.ts
我也像这样安装了 sdk npm i @aws-sdk/client-sqs
但在 npm repo 中他们没有解释如何配置身份验证。
我该怎么办?
/* copyright Amazon.com,Inc. or its affiliates. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
ABOUT THIS NODE.JS EXAMPLE: This example works with AWS SDK for JavaScript version 3 (v3),which is available at https://github.com/aws/aws-sdk-js-v3. This example is in the 'AWS SDK for JavaScript v3 Developer Guide' at
https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/sqs-examples-send-receive-messages.html.
Purpose:
sqs_receivemessage.ts demonstrates how to receive and delete a message from an Amazon SQS queue.
Inputs (replace in code):
- REGION
- SQS_QUEUE_URl
Running the code:
ts-node sqs_receivemessage.js
*/
// snippet-start:[sqs.JavaScript.messages.receiveMessageV3]
// Import required AWS SDK clients and commands for Node.js
const {
SQSClient,ReceiveMessageCommand,DeleteMessageCommand,} = require("@aws-sdk/client-sqs");
// Set the AWS Region
const REGION = "REGION"; //e.g. "us-east-1"
// Set the parameters
const queueURL = "SQS_QUEUE_URL"; //SQS_QUEUE_URL; e.g.,'https://sqs.REGION.amazonaws.com/ACCOUNT-ID/QUEUE-NAME'
const params = {
AttributeNames: ["SentTimestamp"],MaxnumberOfMessages: 10,MessageAttributeNames: ["All"],QueueUrl: queueURL,VisibilityTimeout: 20,WaitTimeSeconds: 0,};
// Create SQS service object
const sqs = new SQSClient({ region: REGION });
const run = async () => {
try {
const data = await sqs.send(new ReceiveMessageCommand(params));
if (data.Messages) {
var deleteParams = {
QueueUrl: queueURL,ReceiptHandle: data.Messages[0].ReceiptHandle,};
try {
const data = await sqs.send(new DeleteMessageCommand(deleteParams));
console.log("Message deleted",data);
} catch (err) {
console.log("Error",err);
}
} else {
console.log("No messages to delete");
}
} catch (err) {
console.log("Receive Error",err);
}
};
run();
// snippet-end:[sqs.JavaScript.messages.receiveMessageV3]
编辑
我在文件中添加了 "C:\Users\koste\.aws\config"
[default]
aws_access_key_id=AKIA4LUIXXXXXY3SE3RO
aws_secret_access_key=yJKM96KISxxxxxxxxxxxxxOhajncWXe0YXo
region = eu-west-3
[sqs-dev]
aws_access_key_id=AKIAXXXXXXXXXXG46ZUET
aws_secret_access_key=XgGq2mbxxxxxxxLRfchaxw0FvAKVWpuXO0
region = eu-west-3
还是不行。我进入了控制台
Receive Error ReferenceError: process is not defined
loadSharedConfigFiles index.js:11
parseKNownFiles index.js:102
fromIni index.js:31
memoize memoize.js:22
step tslib.es6.js:102
verb tslib.es6.js:83
__awaiter tslib.es6.js:76
ZoneAwarePromise Angular
__awaiter tslib.es6.js:72
memoize memoize.js:16
signRequest SignatureV4.js:169
step tslib.es6.js:102
verb tslib.es6.js:83
__awaiter tslib.es6.js:76
ZoneAwarePromise Angular
__awaiter tslib.es6.js:72
signRequest SignatureV4.js:165
sign SignatureV4.js:85
step tslib.es6.js:102
verb tslib.es6.js:83
__awaiter tslib.es6.js:76
ZoneAwarePromise Angular
__awaiter tslib.es6.js:72
sign SignatureV4.js:76
awsAuthMiddleware middleware.js:31
step tslib.es6.js:102
verb tslib.es6.js:83
fulfilled tslib.es6.js:73
Angular 21
RxJS 21
ZoneAwarePromise Angular
toPromise RxJS
signIn auth.service.ts:211
fulfilled tslib.es6.js:73
Angular 22
streamCollector index.js:6
collectBody Aws_json1_1.js:3514
collectBodyString Aws_json1_1.js:3518
parseBody Aws_json1_1.js:3533
deserializeAws_json1_1GetCredentialsForIdentityCommand Aws_json1_1.js:724
step tslib.es6.js:100
verb tslib.es6.js:81
__awaiter tslib.es6.js:74
ZoneAwarePromise Angular
__awaiter tslib.es6.js:70
deserializeAws_json1_1GetCredentialsForIdentityCommand Aws_json1_1.js:716
deserialize GetCredentialsForIdentityCommand.js:32
deserializerMiddleware deserializerMiddleware.js:7
fulfilled tslib.es6.js:71
Angular 11
编辑 2
我什至设置了 env 变量,但仍然遇到同样的问题
set AWS_ACCESS_KEY_ID=AKIA4XXXXXXXXXXXXX6ZUET
set AWS_SECRET_ACCESS_KEY=XgGq2mbYQvnXXXXXXXXXXXXXXXXXXXXXXXXO0
编辑 3 我查看了 sdk,过程变量在 sdk 中使用但未声明,这就是我遇到错误的原因
"use strict";
Object.defineProperty(exports,"__esModule",{ value: true });
var os_1 = require("os");
var path_1 = require("path");
var fs_1 = require("fs");
exports.ENV_CREDENTIALS_PATH = "AWS_SHARED_CREDENTIALS_FILE";
exports.ENV_CONfig_PATH = "AWS_CONfig_FILE";
var swallowError = function () { return ({}); };
function loadSharedConfigFiles(init) {
if (init === void 0) { init = {}; }
var _a = init.filepath,filepath = _a === void 0 ? process.env[exports.ENV_CREDENTIALS_PATH] ||
path_1.join(getHomeDir(),".aws","credentials") : _a,_b = init.configFilepath,configFilepath = _b === void 0 ? process.env[exports.ENV_CONfig_PATH] ||
path_1.join(getHomeDir(),"config") : _b;
解决方法
此内容是适用于 JavaScript 的 AWS 开发工具包开发指南的一部分,其中解释了所有这些概念,例如处理凭证。 Refer to the DEV Guide。
如果您不知道如何启动和运行 API,请参阅入门部分。信用证特定信息位于此处:
https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/getting-your-credentials.html
成功后,您可以查看更完整的示例,例如跨服务示例部分下的内容。
,解决方案在这里: https://github.com/aws/aws-sdk-js-v3/issues/2386#event-4744209781
浏览器无法使用凭据文件。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。