标签: aws-sdk-js

解组DynamoDB JSON

通过DynamoDB NewImage流事件给出一些DynamoDB JSON,如何将其解组为常规JSON

{"updated_at":{"N":"146548182"},"uuid":{"S":"foo"},"status":{"S":"new"}}
Run Code Online (Sandbox Code Playgroud)

通常我会使用AWS.DynamoDB.DocumentClient,但我似乎无法找到通用的Marshall/Unmarshall函数.

旁注:我是否会丢失任何将DynamoDB JSON为JSON并再次返回的内容?

json amazon-web-services aws-sdk-js

7
推荐指数
2
解决办法
4698
查看次数

配置错误:配置中缺少区域 (AWS)

运行节点应用程序时出现配置错误。错误是:

{ ConfigError: Missing region in config
at Request.VALIDATE_REGION (C:\Users\chris\Documents\AWS API 
TEST\myapp\node_modules\aws-sdk\dist\aws-sdk-react-native.js:12027:47)
at Request.callListeners (C:\Users\chris\Documents\AWS API 
TEST\myapp\node_modules\aws-sdk\dist\aws-sdk-react-native.js:11804:22)
at callNextListener (C:\Users\chris\Documents\AWS API 
TEST\myapp\node_modules\aws-sdk\dist\aws-sdk-react-native.js:11794:14)
at C:\Users\chris\Documents\AWS API TEST\myapp\node_modules\aws-
sdk\dist\aws-sdk-react-native.js:12021:11
at finish (C:\Users\chris\Documents\AWS API TEST\myapp\node_modules\aws-
sdk\dist\aws-sdk-react-native.js:10842:9)
at Config.getCredentials (C:\Users\chris\Documents\AWS API 
TEST\myapp\node_modules\aws-sdk\dist\aws-sdk-react-native.js:10887:9)
at Request.VALIDATE_CREDENTIALS (C:\Users\chris\Documents\AWS API 
TEST\myapp\node_modules\aws-sdk\dist\aws-sdk-react-native.js:12016:28)
at Request.callListeners (C:\Users\chris\Documents\AWS API 
TEST\myapp\node_modules\aws-sdk\dist\aws-sdk-react-native.js:11800:20)
at Request.emit (C:\Users\chris\Documents\AWS API 
TEST\myapp\node_modules\aws-sdk\dist\aws-sdk-react-native.js:11776:12)
at Request.emit (C:\Users\chris\Documents\AWS API 
TEST\myapp\node_modules\aws-sdk\dist\aws-sdk-react-native.js:13792:16)
message: 'Missing region in config',
code: 'ConfigError',
Run Code Online (Sandbox Code Playgroud)

我的代码是:

//Authenticate AWS:
var myCredentials = new AWS.CognitoIdentityCredentials({IdentityPoolId:'us-west-2a:"Identity Pool ID"'});
var myConfig = new AWS.Config({ …
Run Code Online (Sandbox Code Playgroud)

javascript region amazon-web-services aws-sdk-js

7
推荐指数
2
解决办法
2万
查看次数

在 AWS CDK 中使用 AWS SDK 的正确方法

我正在尝试在我的 CDK 应用程序中使用 SDK。我的堆栈正在创建一个目录、一些网络内容,然后是一些使用需要 AD DNS IP 的 PowerShell 脚本加入域的实例,我目前使用它的方式如下:

const ds = new DirectoryService();

const result = new Promise(function (resolve: (value: string) => any, reject) {
        ds.describeDirectories({}, function (err, data) {
            if (err){
            reject(data)
        }else{
            try{
                if (data.DirectoryDescriptions){
                    if (data.DirectoryDescriptions[0].DnsIpAddrs){
                        resolve(data.DirectoryDescriptions[0].DnsIpAddrs.toString())
                    }
                }
            }catch (e) {
                reject("Directory doesn't exist yet.")
            }
        }
    })
});
result.then(value => {
    const subs = {
        "#{DNS_ADDRESSES}": value,
        "#{SECRET_ID}": directory.directorySecret.secretArn
    };

    Object.entries(subs).forEach(
        ([key, value]) => {
            domainJoinScript = domainJoinScript.replace(key, String(value));
        }
    );

    new  Stack(app, …
Run Code Online (Sandbox Code Playgroud)

javascript amazon-web-services typescript aws-sdk-js aws-cdk

7
推荐指数
1
解决办法
7132
查看次数

AWS:无法使用 sso 凭证登录 aws-sdk

我正在尝试使用 Node.js 应用程序中的 SSO 凭证通过 AWS-SDK 访问 AWS 资源。为此,我首先从 AWS CLI 创建了我的 SSO 配置文件,然后尝试在我尝试使用以下方法的应用程序中使用相同的配置文件:

Option1:
const AWS = require("aws-sdk");
const { defaultProvider } = require("@aws-sdk/credential-provider-node");
const route53 = new AWS.Route53({ credentials: defaultProvider({ profile: "my-sso-profile" })});

Option2:
const AWS = require("aws-sdk");
const { fromSSO } = require("@aws-sdk/credential-provider-sso");
const route53 = new AWS.Route53({ credentials: fromSSO ({ profile: "my-sso-profile" })});
Run Code Online (Sandbox Code Playgroud)

我运行时出现以下错误:

Error [CredentialsError]: Missing credentials in config, if using AWS_CONFIG_FILE, set AWS_SDK_LOAD_CONFIG=1
Run Code Online (Sandbox Code Playgroud)

即使我已经使用(setx AWS_SDK_LOAD_CONFIG 1)将环境变量AWS_SDK_LOAD_CONFIG设置为1。我仍然面临同样的问题

我的配置文件位于 users/user/.aws/config ,如下所示:

[profile my-sso-profile]
sso_start_url = https://*******.awsapps.com/start …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services single-sign-on aws-sdk-nodejs aws-sdk-js

7
推荐指数
1
解决办法
8434
查看次数

ListObjectsV2 - 仅获取 S3 存储桶中的文件夹

我正在使用AWS S3 JS SDK。我的 S3 存储桶中的文件夹内有文件夹,我想仅列出特定级别的文件夹。

这是结构:

bucket/folder1/folder2/folder3a/file1
bucket/folder1/folder2/folder3a/file2
bucket/folder1/folder2/folder3a/file3
bucket/folder1/folder2/folder3a/...

bucket/folder1/folder2/folder3b/file1
bucket/folder1/folder2/folder3b/file2
bucket/folder1/folder2/folder3b/file3
bucket/folder1/folder2/folder3b/...

bucket/folder1/folder2/folder3c/file1
bucket/folder1/folder2/folder3c/file2
bucket/folder1/folder2/folder3c/file3
bucket/folder1/folder2/folder3c/...
Run Code Online (Sandbox Code Playgroud)

如您所见,在文件夹 3 的级别,我有多个文件夹,每个文件夹都包含多个项目。我不关心这些物品。我只想列出第 3 级的文件夹名称。有没有好的方法可以做到这一点?

我发现的唯一方法是使用ListObjectsV2。但这也给了我一些导致结果集膨胀的文件,之后我需要进行手动过滤。有没有办法在 API 级别只获取文件夹名称?

amazon-s3 amazon-web-services aws-sdk-js

7
推荐指数
1
解决办法
1万
查看次数

如何在 aws-sdk v3 中调用 lambda 函数

如何使用 Javascript (TypeScript) aws-sdk v3 调用 lambda 函数?

我使用以下代码似乎不起作用:

// the payload (input) to the "my-lambda-func" is a JSON as follows:
const input = {
    name: 'fake-name',
    serial: 'fake-serial',
    userId: 'fake-user-id'
};

// Payload of InvokeCommandInput is of type Uint8Array
const params: InvokeCommandInput = {
    FunctionName: 'my-lambda-func-name',
    InvocationType: 'RequestResponse',
    LogType: 'Tail',
    Payload: input as unknown as Uint8Array, // <---- payload is of type Uint8Array
  };
  
  console.log('params: ', params); // <---- so far so good.
  const result = await lambda.invoke(params);
  console.log('result: …
Run Code Online (Sandbox Code Playgroud)

javascript node.js typescript aws-lambda aws-sdk-js

7
推荐指数
2
解决办法
7236
查看次数

在aws sdk版本3中指定s3客户端的签名版本

aws-sdk v2JavaScript 中,我们使用以下方法实例化 s3 客户端:

var s3  = new AWS.S3({
          accessKeyId: 'YOUR-ACCESSKEYID' ,
          secretAccessKey: 'YOUR-SECRETACCESSKEY' ,
          s3ForcePathStyle: true,
          signatureVersion: 'v4'
});  
Run Code Online (Sandbox Code Playgroud)

在这里你可以看到signatureVersion能够被指定。

v3您实例化客户端时使用:

import { S3Client } from '@aws-sdk/client-s3';

credentials = {  
    accessKeyId: <ACCESS_KEY>,
    secretAccessKey: <SECRET_ACCESS_KEY>
  }
const client = new S3Client({
        region: 'us-east-1',
        credentials: credentials,
        forcePathStyle: true,
    })  
Run Code Online (Sandbox Code Playgroud)

该文档对于如何执行此操作不是很清楚(并且没有示例)。我如何signatureVersion在 sdk 版本(v3)中为客户端指定?

amazon-s3 amazon-web-services node.js aws-sdk-js

7
推荐指数
1
解决办法
4950
查看次数

AccessDenied 根据策略无效:策略条件失败:["starts-with", "$key", "2017/"]

我收到标题中指定的错误。

我尝试这样做:使用php上传带有签名 URL 的对象

问题如下:['starts-with', '$key', 'test/']

['starts-with', '$key', 'test/']这是如何运作的?

存储桶中存在测试文件夹。

请帮忙。

我的代码(服务器端 php):

$formInputs = ['acl' => 'private'];

// Construct an array of conditions for policy $options = [
    ['acl' => 'private'],
    ['bucket' => $bucket],
    ['starts-with', '$key', 'test/'] ];

// Optional: configure expiration time string $expires = '+2 hours';

$postObject = new \Aws\S3\PostObjectV4(
    $client,
    $bucket,
    $formInputs,
    $options,
    $expires );

$formAttributes = $postObject->getFormAttributes(); $formInputs = $postObject->getFormInputs();

?>


----------


<form action="<?=$formAttributes['action']?>" method="<?=$formAttributes['method']?>" enctype="<?=$formAttributes['enctype']?>">

<?php

    foreach($formInputs as $k=>$v){
        echo'<input …
Run Code Online (Sandbox Code Playgroud)

amazon-s3 amazon-web-services aws-sdk aws-sdk-js

6
推荐指数
1
解决办法
7122
查看次数

使用 PUT 和表单数据将文件上传到 S3

我尝试通过 PUT 接口将图像文件 (jpeg) 上传到 AWS S3,但收到错误 SignatureDoesNotMatch。

在我的服务器上,我有一个 Express node.js 应用程序,它带有一个端点来创建签名 URL。

'use strict';

const express = require('express');
const bodyParser = require('body-parser');

const config = require('./config');

// Load the AWS SDK for Node.js
const AWS = require('aws-sdk');
AWS.config.update({
    accessKeyId: config.AWS_ACCESS_KEY_ID, 
    secretAccessKey: config.AWS_SECRET_ACCESS_KEY,
    region: 'us-east-1'
});
const s3 = new AWS.S3();

const app = express();
const awsS3Router = express.Router();

// parse application/json
app.use(bodyParser.urlencoded({extended: false}));
app.use(bodyParser.json());

// AWS S3 REST endpoints
awsS3Router.get('/getImageDrop', function(req, res) {
    if(!req.query.filename) {
        res.status(400).send('Request query is empty!'); …
Run Code Online (Sandbox Code Playgroud)

javascript amazon-s3 aws-sdk-js

6
推荐指数
1
解决办法
1万
查看次数

@aws-sdk/client-ses 和 @aws-sdk/client-sesv2 有什么区别?

AWS 的 JavaScript SDK 第 3 版似乎有 2 个不同的简单电子邮件服务 (SES) 客户端。

我意识到我一直在使用 @aws-sdk/client-sesv2 但是:

  • 他们的 GitHub 存储库上的实际文档确实很难理解(请参阅v1v2
  • 在 Github 示例中没有任何地方显示发送电子邮件的示例或为什么有 2 个版本
  • 我发现这个更有用的文档,但他们甚至没有提到 v2?

我们应该使用 v1 还是 v2 ?两者有什么区别?

amazon-web-services amazon-ses aws-sdk-js

6
推荐指数
1
解决办法
2112
查看次数