Conceder permissões para publicar mensagens de notificação de vento a um destino - Amazon Simple Storage Service

Conceder permissões para publicar mensagens de notificação de vento a um destino

É necessário garantir à entidade principal do Amazon S3 as permissões necessárias para chamar a API relevante para publicar mensagens em um tópico do SNS, uma fila do SQS ou uma função Lambda. Isso serve para que o Amazon S3 possa publicar mensagens de notificação de eventos em um destino.

Para solucionar problemas de publicação de mensagens de notificação de eventos em um destino, consulte Solução de problemas para publicar notificações de eventos do Amazon S3 em um tópico do Amazon Simple Notification Service.

Conceder permissões para invocar uma função do AWS Lambda

O Amazon S3 publica mensagens de eventos no AWS Lambda invocando uma função do Lambda e fornecendo a mensagem de evento como um argumento.

Ao usar o console do Amazon S3 para configurar notificações de eventos em um bucket do Amazon S3 para uma função do Lambda, o console configurará as permissões necessárias na função Lambda. Isso ocorre para que o Amazon S3 tenha permissões para invocar a função do bucket. Para obter mais informações, consulte Habilitar e configurar notificações de eventos usando o console do Amazon S3.

Você também pode conceder permissões do Amazon S3 do AWS Lambda para invocar a função do Lambda. Para obter mais informações, consulte Tutorial: uso do AWS Lambda com o Amazon S3 no Guia do desenvolvedor do AWS Lambda.

Conceder permissões para publicar mensagens em um tópico do SNS ou em uma fila do SQS

Para conceder ao Amazon S3 permissões para publicar mensagens em um tópico do SNS ou uma fila do SQS, anexe uma política do AWS Identity and Access Management (IAM) ao tópico do SNS ou à fila do SQS de destino.

Para obter um exemplo de como anexar uma política a um tópico do SNS ou a uma fila do SQS, consulte Demonstração: configurar um bucket para notificações (tópico do SNS ou fila do SQS). Para obter mais informações sobre permissões, consulte os tópicos a seguir:

Política do IAM para um tópico do SNS de destino

Veja a seguir um exemplo de uma política do AWS Identity and Access Management (IAM) anexada ao tópico do SNS de destino. Para obter mais instruções sobre como usar essa política para configurar um tópico do Amazon SNS de destino para notificações de eventos, consulte Demonstração: configurar um bucket para notificações (tópico do SNS ou fila do SQS).

{ "Version": "2012-10-17", "Id": "example-ID", "Statement": [ { "Sid": "Example SNS topic policy", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": [ "SNS:Publish" ], "Resource": "SNS-topic-ARN", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:s3:*:*:bucket-name" }, "StringEquals": { "aws:SourceAccount": "bucket-owner-account-id" } } } ] }

Política do IAM para uma fila do SQS de destino

Veja a seguir um exemplo de uma política do IAM anexada à fila do SQS de destino. Para obter mais instruções sobre como usar essa política para configurar uma fila do Amazon SQS de destino para notificações de eventos, consulte Demonstração: configurar um bucket para notificações (tópico do SNS ou fila do SQS).

Para usar essa política, você deve atualizar o ARN da fila do Amazon SQS, o nome do bucket e o ID da Conta da AWS do proprietário do bucket.

{ "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:Region:account-id:queue-name", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:s3:*:*:awsexamplebucket1" }, "StringEquals": { "aws:SourceAccount": "bucket-owner-account-id" } } } ] }

Tanto para as políticas do IAM do Amazon SNS e do Amazon SQS, você pode especificar a condição StringLike na política, em vez da condição ArnLike.

Quando o ArnLike é usado, as partes partição, serviço, ID da conta, tipo de recurso e ID parcial do recurso do ARN devem ter a correspondência exata com o ARN no contexto da solicitação. Somente a região e o caminho do recurso permitem a correspondência parcial.

Quando StringLike é usado em vez de ArnLike, a correspondência ignora a estrutura do ARN e permite a correspondência parcial, independentemente da parte que foi marcada como curinga. Para obter mais informações, consulte Elementos de política JSON do IAM no Guia do usuário do IAM.

"Condition": {        "StringLike": { "aws:SourceArn": "arn:aws:s3:*:*:bucket-name" } }

Política de chaves do AWS KMS

Se a fila do SQS ou os tópicos do SNS estiverem criptografados com uma chave gerenciada pelo cliente do AWS Key Management Service (AWS KMS), será necessário conceder permissão para que a entidade de serviço do Amazon S3 trabalhe com a fila ou os tópicos criptografados. Para conceder a permissão à entidade de serviço do Amazon S3, adicione a instrução a seguir à política de chave para a chave gerenciada pelo cliente.

{ "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": "*" } ] }

Para obter mais informações sobre políticas de chave do AWS KMS, consulte Uso de políticas de chave no AWS KMS no Guia do desenvolvedor do AWS Key Management Service.

Para obter mais informações sobre como usar a criptografia no lado do servidor com o AWS KMS para o Amazon SQS e o Amazon SNS, consulte: