在 Clojurescript 中,如何使用 AWS javascript SDK 列出 S3 存储桶?

用户193116

我刚刚开始使用 Clojurescript。我编写了一些 clojurescript 代码来使用共享的 aws 凭证文件来初始化 S3 客户端并列出存储桶。但是我的代码不起作用。

(defn -main [arg1 arg2]
  (println "hello")
  (let[ creds (new AWS/SharedIniFileCredentials #js{:profile "superman"}) 
       _ (AWS/config.update creds) 
       ; dump out the accesskey to check if it has the correct profile
       _ (AWS/config.getCredentials (fn [err] (if (nil? err) (do
                                                               (println "its good")
                                                               (println AWS/config.credentials.accessKeyId)))))
       s3 (new (.-S3 AWS ))
       ] (.listBuckets s3 (fn[err buckets] (println "err: " err) (println buckets) )) ))

上面的 AWS/config.getCredentials 确实选择了正确的配置文件,如从(println AWS/config.credentials.accessKeyId). listbuckets 代码抛出以下错误:

#object[NodeError TypeError [ERR_INVALID_ARG_TYPE]: The "key" argument must be of type string or an instance of Buffer, TypedArray, DataView, or KeyObject. Received undefined]

我有 Google AWS SDK S3 clojuresript 并且是我找到唯一链接我用它来配置 S3 客户端,但这似乎不起作用

我将不胜感激任何帮助。

丹尼斯·富恩扎利达

我检查了它,问题似乎是 SDK 期望在实例化 S3 客户端之前先设置凭据。

以下内容适用于使用 shadow-cljs 的最小项目:

(ns server.main
  (:require ["aws-sdk" :as aws]))

(defn main! []
  (println "App loaded...")
  (let [creds (aws/SharedIniFileCredentials. #js {:profile "example-profile"})
        _     (set! (.-credentials aws/config) creds)
        s3    (aws/S3.)]
    (.listBuckets s3 (fn [err data]
                       (if err
                         (println "ERROR:" err)
                         (println "OK:" data))))))

当我运行它时:

$ node target/main.js

App loaded...
OK: #js {:Buckets #js [#js {:Name dummy-test-bucket, :CreationDate #inst "2019-05-05T17:32:17.000-00:00"} #js {:Name mydomain.com, :CreationDate #inst "2018-06-19T04:16:10.000-00:00"}], :Owner #js {:DisplayName username, :ID f63f30bc25ab3609b8d3b5be6b3a872dd2c9f7947b2d509e2338357d93e74f2}}

关键就在这个答案上:https : //stackoverflow.com/a/33175424/483566

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

AWS S3 + Ruby SDK:如何列出存储桶

如何使用Java列出存储桶中的所有AWS S3对象

如何修复在 aws 中列出来自 s3 存储桶的内容的关键错误?

列出AWS S3存储桶中的对象(使用无服务器部署)

在AWS S3存储桶的特定“文件夹”中列出文件

AWS CLI 列出 S3 存储桶中的所有文件

PowerShell for AWS:仅列出S3存储桶中的“文件夹”吗?

AWS Lambda使用listBuckets()列出S3存储桶无效

列出AWS S3存储桶的内容

如何从 aws-sdk 中的 s3 存储桶创建 Elastic Beanstalk 实例?

如何在Scala或Java中模拟或存根AWS SDK S3存储桶调用?

如何使用 AWS SDK for Go v2 删除非空 S3 存储桶

如何使用AWS SDK for GOlang清空S3存储桶?

如何使用AWS C ++ SDK解析区域,存储桶和对象键的S3 URI?

无法使用ruby aws-sdk v2在S3中创建存储桶

AWS S3无法通过PHP SDK删除存储桶中的对象

使用Java AWS SDK将文件夹上传到S3存储桶

使用aws-sdk-java上传到S3存储桶时发生PermanentRedirect错误

AWS PHP SDK 使用 FORM 上传到 S3 存储桶

删除 AWS S3 存储桶时权限不足,无法列出存储桶“XXXX”的对象

如何使用Android SDK在AWS S3存储桶中创建一个空文件夹?

rclone - 如何列出 AWS S3 存储桶中具有最新文件的目录?

AWS-使用AWS SDK列出组织或帐户下的所有存储桶

如何使用AWS .NET C#SDK将文件上传到AWS S3存储桶

AWS Lambda将列出文件版本控制中的S3存储桶对象和子目录

AWS S3 Listing API-如何列出具有特定前缀的S3存储桶中的所有内容

如何设置aws-sdk从s3存储桶中的公共文件中获取文件内容?

将 JSON 文件从 node.js 中的 aws-sdk 上传到 aws s3 存储桶

如果使用 aws-sdk 已经存在具有相同密钥的对象,则覆盖 S3 存储桶中的对象