[英]AWS S3 Bucket Access file permission
我不是 AWS 专家,所以我需要一些帮助来配置对 S3 存储桶音频文件的访问策略。 快速解释:我正在尝试调用 lambda function 并从具有私有访问权限的 S3 存储桶访问音频文件。 我的 lambda function(相同的 aws 帐户)应该能够通过其 URI 访问 mp3 文件。
详细信息:我正在 .NET 中开发一项 Alexa 技能,该技能托管在 AWS Lambda 上。该技能需要播放将从 S3 存储桶中检索的音频。 我能够播放音频的唯一方法是让每个人都可以访问 mp3 文件(允许公共访问),但我只想限制我的 lambda function(相同的 aws 帐户)的访问。 换句话说:我不希望任何人都可以访问这些文件,只有我的 lambda function。每当我配置访问策略时,alexa 技能不再访问该文件并返回:“无法建立连接提供的音频文件 URI"
我试过:
但它不起作用。
任何人都知道如何正确配置它?
您应该创建一个 IAM 角色并将该 IAM 角色与 AWS Lambda function 相关联。
IAM 角色应具有以下权限:
AWSLambdaBasicExecutionRole
托管策略,它允许 Lambda function 将日志记录发送到 CloudWatch Logs(请参阅Lambda 执行角色 - AWS Lambda ){
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":"s3:ListBucket",
"Resource":"arn:aws:s3:::BUCKET-NAME"
},
{
"Effect":"Allow",
"Action":[
"s3:PutObject",
"s3:PutObjectAcl",
"s3:GetObject",
"s3:GetObjectAcl",
"s3:DeleteObject"
],
"Resource":"arn:aws:s3:::BUCKET-NAME/*"
}
]
}
此策略授予 Lambda function 列出存储桶内容以及从存储桶上传/下载/删除对象的权限。
如果只是想让Lambda function读取bucket中的文件,可以缩减为:
{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":"s3:GetObject"
"Resource":"arn:aws:s3:::BUCKET-NAME/*"
}
]
}
@Anon Coward 的建议很管用!
您是在尝试读取 Lambda 中的音频文件,还是将链接传递给 Alexa 以使其在设备上播放? 如果您要传递一个链接,您可能需要传递一个预签名的 URL 以便设备可以访问数据。 – Anon Coward 11 月 24 日 5:47
我没有意识到,当我通过 REST API 向 Alexa 提供 URI 时,我自己的 function 不会解析它。因此,Alexa 无法访问任何文件。 谢谢大家!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.