

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 授予許可以將事件通知訊息發佈至目標
<a name="grant-destinations-permissions-to-s3"></a>

您必須將必要的許可授予 Amazon S3 主體，以呼叫相關的 API，將訊息發佈至 SNS 主題、SQS 佇列或 Lambda 函數。這樣 Amazon S3 便可將事件通知訊息發佈至目的地。

若要進行疑難排解，以將事件通知發佈到目的地，請參閱[將 Amazon S3 事件通知發佈到 Amazon Simple Notification Service 主題的疑難排解](https://repost.aws/knowledge-center/sns-not-receiving-s3-event-notifications)。

**Topics**
+ [授予叫用 AWS Lambda 函數的許可](#grant-lambda-invoke-permission-to-s3)
+ [授予許可以將訊息發佈到 SNS 主題或 SQS 佇列](#grant-sns-sqs-permission-for-s3)

## 授予叫用 AWS Lambda 函數的許可
<a name="grant-lambda-invoke-permission-to-s3"></a>

Amazon S3 透過 AWS Lambda 叫用 Lambda 函數並提供事件訊息做為引數，將事件訊息發佈至 。

當您使用 Amazon S3 主控台，在 Amazon S3 儲存貯體上設定 Lambda 函數的事件通知時，該主控台將設定 Lambda 函數的必要許可。這樣 Amazon S3 便可從儲存貯體叫用函數。如需詳細資訊，請參閱[使用 Amazon S3 主控台啟用和設定事件通知](enable-event-notifications.md)。

您也可以從 授予 Amazon S3 許可 AWS Lambda ，以叫用 Lambda 函數。如需詳細資訊，請參閱《 *AWS Lambda 開發人員指南*》中的[教學課程： AWS Lambda 搭配 Amazon S3 使用](https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html) 。

## 授予許可以將訊息發佈到 SNS 主題或 SQS 佇列
<a name="grant-sns-sqs-permission-for-s3"></a>

若要授予 Amazon S3 發佈訊息至 SNS 主題或 SQS 佇列的許可，請將 AWS Identity and Access Management (IAM) 政策連接至目的地 SNS 主題或 SQS 佇列。

如需如何將政策連接到 SNS 主題或 SQS 佇列的範例，請參閱 [演練：設定儲存貯體的通知 (SNS 主題或 SQS 佇列)](ways-to-add-notification-config-to-bucket.md)。如需許可的詳細資訊，請參閱下列主題：
+ *《Amazon Simple Notification Service 開發人員指南》*中的 [Amazon SNS 存取控制的範例案例](https://docs.aws.amazon.com/sns/latest/dg/AccessPolicyLanguage_UseCases_Sns.html)
+ *《Amazon Simple Queue Service 開發人員指南》*中的 [Amazon SQS 中的 Identity and Access Management](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/UsingIAM.html)

### 目的地 SNS 主題的 IAM 政策
<a name="sns-topic-policy"></a>

以下是您連接至目的地 SNS 主題的 AWS Identity and Access Management (IAM) 政策範例。如需有關如何使用此政策為事件通知設定目的地 Amazon SNS 主題的指示，請參閱 [演練：設定儲存貯體的通知 (SNS 主題或 SQS 佇列)](ways-to-add-notification-config-to-bucket.md)。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "example-ID",
    "Statement": [
        {
            "Sid": "Example SNS topic policy",
            "Effect": "Allow",
            "Principal": {
                "Service": "s3.amazonaws.com"
            },
            "Action": [
                "SNS:Publish"
            ],
            "Resource": "arn:aws:sns:us-east-1:{{111122223333}}:{{example-sns-topic}}",
            "Condition": {
                "ArnEquals": {
                    "aws:SourceArn": "arn:aws:s3:::{{amzn-s3-demo-bucket}}"
                },
                "StringEquals": {
                    "aws:SourceAccount": "{{bucket-owner-123456789012}}"
                }
            }
        }
    ]
}
```

------

### 目的地 SQS 佇列的 IAM 政策
<a name="sqs-queue-policy"></a>

以下是您附加至目標 SQS 佇列之 IAM 政策的範例。如需有關如何使用此政策為事件通知設定目的地 Amazon SQS 佇列的指示，請參閱 [演練：設定儲存貯體的通知 (SNS 主題或 SQS 佇列)](ways-to-add-notification-config-to-bucket.md)。

若要使用此政策，您必須更新 Amazon SQS 佇列 ARN、儲存貯體名稱和儲存貯體擁有者的 AWS 帳戶 ID。

------
#### [ JSON ]

****  

```
{
    "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}}:{{queue-name}}",
            "Condition": {
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:s3:*:*:{{amzn-s3-demo-bucket}}"
                },
                "StringEquals": {
                    "aws:SourceAccount": "{{bucket-owner-123456789012}}"
                }
            }
        }
    ]
}
```

------

針對 Amazon SNS 和 Amazon SQS IAM 政策，您可以在政策中指定 `StringLike` 條件，不是 `ArnLike` 條件。

使用 `ArnLike` 時，分割區、服務、帳戶 ID、資源類型，和 ARN 的部分資源 ID 部分必須和請求的背景資訊內容中的 ARN 完全相符。只有區域和資源路徑允許部分相符。

 當使用 `StringLike` 而不是 `ArnLike` 時，比對是否相符時會忽略 ARN 結構，並允許部分相符，無論哪一部分被萬用字元取代。如需詳細資訊，請參閱 *IAM 使用者指南*中的 [IAM JSON 政策元素](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html)。

```
"Condition": {         
  "StringLike": { "aws:SourceArn": "arn:aws:s3:*:*:{{{{amzn-s3-demo-bucket}}}}" }
  }
```

### AWS KMS 金鑰政策
<a name="key-policy-sns-sqs"></a>

如果 SQS 佇列或 SNS 主題使用 AWS Key Management Service (AWS KMS) 客戶受管金鑰加密，您必須授予 Amazon S3 服務主體使用加密主題或佇列的許可。若要將許可授予 Amazon S3 服務委託人，請將下列陳述式新增至客戶受管金鑰的金鑰政策。

------
#### [ JSON ]

****  

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

------

如需 AWS KMS 金鑰政策的詳細資訊，請參閱《 *AWS Key Management Service 開發人員指南*》中的[在 中使用金鑰政策 AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)。

如需搭配 AWS KMS for Amazon SQS 和 Amazon SNS 使用伺服器端加密的詳細資訊，請參閱下列內容：
+ *Amazon Simple Notification Service 開發人員指南》*中的[金鑰管理](https://docs.aws.amazon.com/sns/latest/dg/sns-key-management.html)。
+ *Amazon Simple Queue Service 開發人員指南》*中的[金鑰管理](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-key-management.html)。
+ *AWS 運算部落格*中的[透過 AWS KMS加密發佈到 Amazon SNS 的訊息](https://aws.amazon.com/blogs/compute/encrypting-messages-published-to-amazon-sns-with-aws-kms/)。