簡體   English   中英

S3 向 SQS 發送消息,EC2 腳本檢查消息是否存在

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM