[英]S3 Sends Message to SQS and EC2 Script Checks If Message Exists
我有一個 S3 存儲桶,當向存儲桶添加新項目時,它會向我的 SQS 隊列發送消息。 我的計划是在我的 EC2 服務器上使用 cron 每 10 分鍾運行一次腳本,該腳本將檢查 SQS 隊列中是否存在消息。
我已授予 S3 存儲桶將消息發送到我的 SQS 隊列的權限,但現在我正在努力如何允許我的 EC2 由於權限而從 SQS 隊列讀取消息。
下面是我的政策,我的問題是我如何還允許 IAM 角色和我的 S3 存儲桶權限讀取/發送消息。
{
"Version": "2012-10-17",
"Id": "arn:aws:sqs:eu-west-1:446971925991:S3-Probe-Data-Imported/SQSDefaultPolicy",
"Statement": [
{
"Sid": "example-statement-ID",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "SQS:*",
"Resource": "arn:aws:sqs:eu-west-1:446971925991:S3-Probe-Data-Imported",
"Condition": {
"ArnLike": {
"aws:SourceArn": "arn:aws:s3:*:*:probe-request-backups"
}
}
}
]
}
我已將AmazonSQSReadOnlyAccess
策略附加到我的 EC2 服務器將用於從 SQS 隊列讀取消息的 IAM 角色。
我假設這是可能的,但如果不是,一旦將新項目添加到我的 S3 存儲桶中,我怎么能觸發 EC2 腳本(不是 lambda)。
與 EC2 實例關聯的 IAM 角色需要包含的不僅僅是只讀權限,因為一旦消息被處理,程序將需要再次調用 SQS 來刪除該消息。 (在處理消息時,它處於“不可見”狀態。如果程序在特定時間段內沒有刪除消息,SQS 將假定程序失敗,消息將重新出現在隊列中。)因此,它還需要sqs:DeleteMessage
權限。
要允許 S3 存儲桶向 SQS 隊列發送消息,必須編輯隊列的策略文檔以包含適當的權限。
請參閱: 演練:為通知配置存儲桶(SNS 主題或 SQS 隊列)- Amazon Simple Storage Service
使用 EC2 處理消息的替代方法是觸發可以處理消息的 AWS Lambda 函數。 這可以降低成本,並且可以在將消息放入 S3 存儲桶后立即處理它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.