我正在尝试为 Amazon IAM 用户配置一项策略,允许他们仅执行上传到 s3 存储桶的特定文件夹的操作。
当策略写成这样时,我可以成功上传图片:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:Put*"
],
"Resource": "*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我的上传功能(在带有浏览器端 javascript aws-sdk 的 Coffeescript 中):
s3.putObject data, (err, data) =>
if err
console.log err
console.log 'Error uploading data: ', data
else
console.log 'succesfully uploaded the image!'
Run Code Online (Sandbox Code Playgroud)
不过,我想将权限范围限制为仅允许 putObject,并且仅在特定目录中。我以为这个策略会起作用,但是它抛出了 403 错误:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": "arn:aws:s3:::my_bucket/example_directory"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我的策略中是否存在语法错误,或者我是否执行了其他错误操作?我对编写 IAM 策略还很陌生。
更新
通过让以下代码在 IAM 模拟器中运行,我已经取得了一些进展,但不幸的是,尽管我说应该允许 putObject,但当我尝试实际上传时,它仍然抛出 …
我的问题是相同的这一个在这里,但是因为这个问题一直没有解决,我不能消息PeeHaa私下问的答案,我会在这里再次问.
我已经成功查询了soundcloud api并获得了每首曲目的stream_url并将其添加到我的360播放器的所有href中(此处演示).我的元素代码看起来像这样:
<div class="ui360">
<a href="/path/to/an.mp3" data-title="Track title">play "an.mp3"</a>
</div>
Run Code Online (Sandbox Code Playgroud)
我有这个脚本来查找所有带有数据标题属性的标签,并根据stream_url给它们正确的href,但是当我尝试在浏览器中单击soundmanager图标并播放轨道时,它只会被重定向到. mp3网址.
SC.initialize({
client_id: 'MY_CLIENT_ID'
});
SC.get('/playlists/2450655', 'allow_redirects=False', function(playlist) {
var titles = $('.audio .ui360 a').each(function(index){
this.index = index;
});
for (var i = 0; i < playlist.tracks.length; i++) {
var id = '?client_id=MY_CLIENT_ID'
for (var j = 0; j < titles.length; j++) {
if (playlist.tracks[i].title === $(titles[j]).attr('data-title')) {
$(titles[j]).attr('href', playlist.tracks[i].stream_url+id)
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
有谁知道如何以这种方式获得正确的url播放soundcloud上的音轨?