[英]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.