サーバー側の暗号化を使用する Amazon SQS キューに Amazon S3 イベント通知が配信されないのはなぜですか?

最終更新日: 2021 年 8 月 16 日

Amazon Simple Storage Service (Amazon S3) イベント通知が Amazon Simple Queue Service (Amazon SQS) キューに配信されません。例えば、オブジェクトが S3 バケットにアップロードされたときに Amazon S3 ObjectCreated イベント通知を受け取りません。Amazon SQS キューでサーバー側の暗号化 (SSE) がオンになっています。

SSE を使用する Amazon SQS キューへの S3 イベント通知を受け取るにはどうすればよいですか?

解決方法

SSE を使用する Amazon SQS キューへの S3 イベント通知を設定し、送信するには、次の手順を実行します。

カスタマーマネージド AWS KMS キーを作成し、キーポリシーを設定する

カスタマーマネージド AWS Key Management Service (AWS KMS) キー (CMK) を用いて、Amazon SQS キューと Amazon Simple Notification Service (Amazon SNS) のトピックを暗号化できます。ただし、暗号化されたトピックまたはキューを用いて作業するには、Amazon S3 サービスプリンシパルのアクセス許可を付与する必要があります。

: デフォルトの AWS マネージド KMS キーは変更できません。次のプロセスでカスタマーマネージドキーを使用し、KMS キーにアクセス許可を追加して、指定したサービスプリンシパルへのアクセスを許可する必要があります。

Amazon S3 サービスプリンシパルのアクセス許可を付与するには、カスタマーマネージドキーポリシーに次のステートメントを追加します。

: "arn:aws:iam::"111122223333":root" をルートアカウントの Amazon リソースネーム (ARN) に置き換えてください。

{
  "Version": "2012-10-17",
  "Id": "example-ID",
  "Statement": [
    {
      "Sid": "example-statement-ID",
      "Effect": "Allow",
      "Principal": {
        "Service": "s3.amazonaws.com"
      },
      "Action": [
        "kms:GenerateDataKey",
        "kms:Decrypt"
      ],
      "Resource": "*"
    },
    {
      "Sid": "Enable IAM User Permissions",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::"111122223333":root"
      },
      "Action": "kms:*",
      "Resource": "*"
    }
  ]
}

SQS キューを作成し、Amazon S3 のアクセス許可を付与する

1.    SSE を使用するように設定された Amazon SQS キューを作成します。詳細については、「キュー (コンソール) のサーバー側暗号化 (SSE) の設定」を参照してください。

2.    Amazon S3 がキューにメッセージを送信できるようにするには、SQS キューに次のアクセス許可ステートメントを追加します。

: リソースの値を SQS キュー ARN に、aws:SourceAccount を AWS ソースアカウント ID に 、および aws:SourceArn を Amazon S3 バケット ARN に置き換えます。

{
  "Version": "2012-10-17",
  "Id": "example-ID",
  "Statement": [
  {
    "Sid": "example-statement-ID",
    "Effect": "Allow",
    "Principal": {
    "Service": "s3.amazonaws.com"
    },
    "Action": "SQS:SendMessage",
    "Resource": "arn:aws:sqs:us-east-1:111122223333:sqs-s3-kms-same-account",
    "Condition": {
    "StringEquals": {
      "aws:SourceAccount": "123456789"
    },
    "ArnLike": {
      "aws:SourceArn": "arn:aws:s3:*:*:hellobucket"
    }
    }
  }
  ]
}

前述のアクセス許可ステートメントの例では、カスタマーアカウント 123456789 が所有する S3 バケットの hellobucket は、指定した SQS キューに ObjectCreated イベント通知を送信できます。

S3 イベントを作成する

バケットに Amazon S3 イベントを追加するには、次の手順に従います。

1.    S3 コンソールを開き、S3 バケットのハイパーリンクされた [名前] を選択します。

2.    [プロパティ] タブで、[イベント通知の作成] を選択します。
[イベント名] で、名前を入力します。
[イベントタイプ] で、通知を受信するイベントタイプを選択します。
[宛先] で、[SQS キュー] を選択します。
SQS キュー で、自分のキューを選択します。

3.    [変更を保存] を選択します。


この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?