使用预先签名的URL

时间:2017-12-14 21:59:20

标签: amazon-web-services amazon-s3 brightscript

我已经设置了一个AWS api,它获取了一个预先签名的URL,用于上传到AWS S3存储桶。

预先签名的网址格式为

https://s3.amazonaws.com/mahbukkit/background4.png?AWSAccessKeyId=someaccesskeyQ&Expires=1513287500&x-amz-security-token=somereallylongtokenvalue

其中backgournd4.png将是我上传的文件。

我可以通过Postman By:

成功使用此URL
  1. 将其配置为PUT呼叫,
  2. 将正文设置为二进制,以便我可以选择文件
  3. 将标题设置为Content-Type:image / png
  4. 但是,我尝试使用在BrightSign播放器上运行的BrightScript进行此调用。我非常确定我应该使用此doucmentation中描述的roURTransfer对象和PutFromFile函数:

    http://docs.brightsign.biz/display/DOC/roUrlTransfer

    不幸的是,我找不到任何好的工作示例来说明如何做到这一点。

    任何有使用BrightScript经验的人都可以帮助我吗?我真的很感激。

1 个答案:

答案 0 :(得分:0)

您在正确的轨道上。

我愿意

sub main()

tr = createObject("roUrlTransfer")
headers = {}
headers.addreplace("Content-Type","image/png")

tr.AddHeaders(headers)
info = {}
info.method = "PUT"
info.request_body_file = <fileName>

if tr.AsyncMethod(info)
    print "File put Started"
else
    print "File put did not start"
end if 
delay(100000) 
end  sub()   

请注意,我使用了两种不同的方法来填充两个关联数组。当键包含特殊字符(例如“-”

)时,您需要使用addreplace方法(而不是。的快捷方式)

此脚本应该可以工作,尽管我手边没有进行语法检查的单元。 您还应该设置一个消息端口等,并监听生成的事件,以确认放置是否成功和/或响应代码是什么。 当您阅读来自url事件的响应时,请注意。如果来自服务器的响应代码不是200,BrightSign将丢弃响应正文,您将无法读取它。这无济于事,因为诸如dropbox之类的服务喜欢执行400响应,并提供有关体内错误(错误的API密钥等)的更多信息。因此,在那种情况下,您会被蒙在鼓里,不断尝试并找出错误所在。

祝你好运,对不起,我没有很快看到这个问题。