

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon EventBridge のリソースベースのポリシーを使用する
<a name="eb-use-resource-based"></a>

Eventbridge で[ルール](eb-rules.md)が実行されると、このルールに関連付けられているすべての[ターゲット](eb-targets.md)が呼び出されます。ルールは、 AWS Lambda 関数を呼び出したり、Amazon SNS トピックに発行したり、イベントを Kinesis ストリームに中継したりできます。所有しているリソースに対して API コールを行うには、Eventbridge に適切なアクセス許可が必要です。Lambda、Amazon SNS、Amazon SQS、および Amazon CloudWatch Logs リソースの場合、EventBridge はリソースベースのポリシーを使用します。Kinesis ストリームの場合、EventBridge は[アイデンティティベース](eb-use-identity-based.md)のポリシーを使用します。

**重要**  
リソースベースのポリシー (Lambda、Amazon SNS、Amazon SQS、Amazon CloudWatch Logs) を使用するターゲットの場合、ターゲット設定`RoleArn`で を指定しないでください。これらのターゲットタイプ`RoleArn`に を指定すると、特に AWS KMS 暗号化が有効になっている Amazon SQS および Amazon SNS ターゲットでは、イベント配信が失敗する可能性があります。リソースベースのポリシーは、これらのターゲットにのみ使用します。

を使用して AWS CLI 、ターゲットにアクセス許可を追加します。をインストールして設定する方法については AWS CLI、 *AWS Command Line Interface ユーザーガイド*[の「 のセットアップ AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html)」を参照してください。

**Topics**
+ [Amazon API Gateway のアクセス許可](#eb-api-gateway-permissions)
+ [CloudWatch Logs のアクセス許可](#eb-cloudwatchlogs-permissions)
+ [AWS Lambda アクセス許可](#eb-lambda-permissions)
+ [Amazon SNS のアクセス許可](#eb-sns-permissions)
+ [Amazon SQS のアクセス許可](#eb-sqs-permissions)
+ [EventBridge Pipes の詳細](#eb-pipes-identity-diff)

## Amazon API Gateway のアクセス許可
<a name="eb-api-gateway-permissions"></a>

EventBridge ルールを使用して Amazon API Gateway エンドポイントを呼び出すには、API Gateway エンドポイントのポリシーに以下のアクセス許可を追加します。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "events.amazonaws.com"
            },
            "Action": "execute-api:Invoke",
            "Condition": {
                "ArnEquals": {
                "aws:SourceArn": "arn:aws:events:us-east-1:123456789012:rule/rule-name"
                }
            },
            "Resource": [
            "arn:aws:execute-api:us-east-1:123456789012:API-id/stage/GET/api"
            ]
        }
    ]
}
```

------

## CloudWatch Logs のアクセス許可
<a name="eb-cloudwatchlogs-permissions"></a>

CloudWatch Logs がルールのターゲットである場合、EventBridge がログストリームを作成し、CloudWatch Logs がログエントリとしてイベントからテキストを保存します。EventBridge がログストリームを作成してイベントを記録するためには、EventBridge が CloudWatch Logs に書き込むことを可能にするリソースベースポリシーを CloudWatch Logs に含める必要があります。

を使用して CloudWatch Logs AWS マネジメントコンソール をルールのターゲットとして追加すると、リソースベースのポリシーが自動的に作成されます。を使用してターゲット AWS CLI を追加し、ポリシーがまだ存在しない場合は、作成する必要があります。

次のリソースベースのポリシー例では、EventBridge が で始まる名前を持つすべてのロググループに書き込むことを許可します`/aws/events/`。これらのタイプのログに別の命名ポリシーを使用する場合は、それに応じてリソース ARN を調整します。

```
{
  "Effect": "Allow",
  "Principal": {
    "Service": [
      "events.amazonaws.com",
      "delivery.logs.amazonaws.com"
    ]
  },
  "Action": [
    "logs:CreateLogStream",
    "logs:PutLogEvents"
  ],
  "Resource": "arn:aws:logs:region:account-id:log-group:/aws/events/*:*"
}
```

**を使用して CloudWatch Logs のリソースポリシーを作成するには AWS CLI**
+ コマンドプロンプトで、次のコマンドを入力します。

  ```
  aws logs put-resource-policy --policy-name EventBridgeToCWLogsPolicy \
  --policy-document '{"Version":"2012-10-17",		 	 	 "Statement":[{"Effect":"Allow","Principal":{"Service":["events.amazonaws.com","delivery.logs.amazonaws.com"]},"Action":["logs:CreateLogStream","logs:PutLogEvents"],"Resource":"arn:aws:logs:region:account-id:log-group:/aws/events/*:*"}]}'
  ```

詳細については、*Amazon CloudWatch Logs API リファレンスガイド*の「[PutResourcePolicy](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutResourcePolicy.html)」を参照してください。

## AWS Lambda アクセス許可
<a name="eb-lambda-permissions"></a>

EventBridge ルールを使用して AWS Lambda 関数を呼び出すには、Lambda 関数のポリシーに次のアクセス許可を追加します。

```
{
  "Effect": "Allow",
  "Action": "lambda:InvokeFunction",
  "Resource": "arn:aws:lambda:region:account-id:function:function-name",
  "Principal": {
    "Service": "events.amazonaws.com"
  },
  "Condition": {
    "ArnLike": {
      "AWS:SourceArn": "arn:aws:events:region:account-id:rule/rule-name"
    }
  },
  "Sid": "InvokeLambdaFunction"
}
```

**EventBridge が を使用して Lambda 関数を呼び出すことを可能にする上記のアクセス許可を追加するには AWS CLI**
+ コマンドプロンプトで、次のコマンドを入力します。

  ```
  aws lambda add-permission --statement-id "InvokeLambdaFunction" \
  --action "lambda:InvokeFunction" \
  --principal "events.amazonaws.com" \
  --function-name "arn:aws:lambda:region:account-id:function:function-name" \
  --source-arn "arn:aws:events:region:account-id:rule/rule-name"
  ```

EventBridge が Lambda 関数を呼び出せるようにするアクセス許可の詳細な設定方法については、[*AWS Lambda 開発者ガイド*』の「[AddPermission](https://docs.aws.amazon.com/lambda/latest/dg/API_AddPermission.html)」と「[スケジュールされたイベントでの Lambda の使用](https://docs.aws.amazon.com/lambda/latest/dg/with-scheduled-events.html)」を参照してください。

## Amazon SNS のアクセス許可
<a name="eb-sns-permissions"></a>

EventBridge が Amazon SNS トピックを発行できるようにするには、`aws sns get-topic-attributes` および `aws sns set-topic-attributes` コマンドを使用します。

**注記**  
EventBridge の Amazon SNS トピックポリシーでは、`Condition` ブロックを使用できません。

**Eventbridge に SNS トピックの発行を可能にするアクセス許可を追加するには**

1. SNS トピックの属性を一覧表示するには、次のコマンドを使用します。

   ```
   aws sns get-topic-attributes --topic-arn "arn:aws:sns:region:account-id:topic-name"
   ```

   次の例は、新しい SNS トピックの結果を示しています。

   ```
   {
       "Attributes": {
           "SubscriptionsConfirmed": "0", 
           "DisplayName": "", 
           "SubscriptionsDeleted": "0", 
           "EffectiveDeliveryPolicy": "{\"http\":{\"defaultHealthyRetryPolicy\":{\"minDelayTarget\":20,\"maxDelayTarget\":20,\"numRetries\":3,\"numMaxDelayRetries\":0,\"numNoDelayRetries\":0,\"numMinDelayRetries\":0,\"backoffFunction\":\"linear\"},\"disableSubscriptionOverrides\":false}}",
           "Owner": "account-id", 
           "Policy": "{\"Version\":\"2012-10-17\",		 	 	 \"Id\":\"__default_policy_ID\",\"Statement\":[{\"Sid\":\"__default_statement_ID\",\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"*\"},\"Action\":[\"SNS:GetTopicAttributes\",\"SNS:SetTopicAttributes\",\"SNS:AddPermission\",\"SNS:RemovePermission\",\"SNS:DeleteTopic\",\"SNS:Subscribe\",\"SNS:ListSubscriptionsByTopic\",\"SNS:Publish\"],\"Resource\":\"arn:aws:sns:region:account-id:topic-name\",\"Condition\":{\"StringEquals\":{\"AWS:SourceAccount\":\"account-id\"}}}]}", 
           "TopicArn": "arn:aws:sns:region:account-id:topic-name", 
           "SubscriptionsPending": "0"
       }
   }
   ```

1. [JSON から文字列へのコンバーター](https://tools.knowledgewalls.com/jsontostring)を使用して、次のステートメントを文字列に変換します。

   ```
   {
     "Sid": "PublishEventsToMyTopic",
     "Effect": "Allow",
     "Principal": {
       "Service": "events.amazonaws.com"
     },
     "Action": "sns:Publish",
     "Resource": "arn:aws:sns:region:account-id:topic-name"
   }
   ```

   文字列に変換したステートメントは、次の例のようになります。

   ```
   {\"Sid\":\"PublishEventsToMyTopic\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"events.amazonaws.com\"},\"Action\":\"sns:Publish\",\"Resource\":\"arn:aws:sns:region:account-id:topic-name\"}
   ```

1. 前のステップで作成した文字列を、`"Policy"` 属性の中の `"Statement"` コレクションに追加します。

1. 新しいポリシーを設定するには、`aws sns set-topic-attributes` コマンドを使用します。

   ```
   aws sns set-topic-attributes --topic-arn "arn:aws:sns:region:account-id:topic-name" \
   --attribute-name Policy \
   --attribute-value "{\"Version\":\"2012-10-17\",		 	 	 \"Id\":\"__default_policy_ID\",\"Statement\":[{\"Sid\":\"__default_statement_ID\",\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"*\"},\"Action\":[\"SNS:GetTopicAttributes\",\"SNS:SetTopicAttributes\",\"SNS:AddPermission\",\"SNS:RemovePermission\",\"SNS:DeleteTopic\",\"SNS:Subscribe\",\"SNS:ListSubscriptionsByTopic\",\"SNS:Publish\"],\"Resource\":\"arn:aws:sns:region:account-id:topic-name\",\"Condition\":{\"StringEquals\":{\"AWS:SourceAccount\":\"account-id\"}}}, {\"Sid\":\"PublishEventsToMyTopic\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"events.amazonaws.com\"},\"Action\":\"sns:Publish\",\"Resource\":\"arn:aws:sns:region:account-id:topic-name\"}]}"
   ```

詳細については、『*Amazon Simple Notification Service API リファレンス*』の「[SetTopicAttributes](https://docs.aws.amazon.com/sns/latest/api/API_SetTopicAttributes.html) アクション」を参照してください。

## Amazon SQS のアクセス許可
<a name="eb-sqs-permissions"></a>

EventBridge ルールに Amazon SQS キューの呼び出しを許可するには、`aws sqs get-queue-attributes` コマンドと `aws sqs set-queue-attributes` コマンドを使用します。

SQS キューのポリシーが空の場合は、まずポリシーを作成してから、それに許可ステートメントを追加する必要があります。新しい SQS キューには空のポリシーがあります。

SQS キューに既にポリシーがある場合は、元のポリシーをコピーして、新しいステートメントと組み合わせ、そこに許可ステートメントを追加する必要があります。

**EventBridge ルールに SQS キューの呼び出しを可能にするアクセス許可を追加するには**

1. SQS キューの属性を一覧表示するには、コマンドプロンプトで、次のコマンドを入力します。

   ```
   aws sqs get-queue-attributes \
   --queue-url https://sqs.region.amazonaws.com/account-id/queue-name \
   --attribute-names Policy
   ```

1. 次のステートメントを追加します。

   ```
   {
         "Sid": "AWSEvents_custom-eventbus-ack-sqs-rule_dlq_sqs-rule-target",
         "Effect": "Allow",
         "Principal": {
           "Service": "events.amazonaws.com"
         },
         "Action": "sqs:SendMessage",
         "Resource": "arn:aws:sqs:region:account-id:queue-name",
         "Condition": {
           "ArnEquals": {
             "aws:SourceArn": "arn:aws:events:region:account-id:rule/bus-name/rule-name"
           }
         }
       }
   ```

1. [JSON から文字列へのコンバーター](https://tools.knowledgewalls.com/jsontostring)を使用して、上のステートメントを文字列に変換します。文字列に変換したポリシーは、次のようになります。

   ```
   {\"Sid\": \"EventsToMyQueue\", \"Effect\": \"Allow\", \"Principal\": {\"Service\": \"events.amazonaws.com\"}, \"Action\": \"sqs:SendMessage\", \"Resource\": \"arn:aws:sqs:region:account-id:queue-name\", \"Condition\": {\"ArnEquals\": {\"aws:SourceArn\": \"arn:aws:events:region:account-id:rule/rule-name\"}}
   ```

1. `set-queue-attributes.json` というファイルを次の内容で作成します。

   ```
   {
       "Policy": "{\"Version\":\"2012-10-17\",		 	 	 \"Id\":\"arn:aws:sqs:region:account-id:queue-name/SQSDefaultPolicy\",\"Statement\":[{\"Sid\": \"EventsToMyQueue\", \"Effect\": \"Allow\", \"Principal\": {\"Service\": \"events.amazonaws.com\"}, \"Action\": \"sqs:SendMessage\", \"Resource\": \"arn:aws:sqs:region:account-id:queue-name\", \"Condition\": {\"ArnEquals\": {\"aws:SourceArn\": \"arn:aws:events:region:account-id:rule/rule-name\"}}}]}"
   }
   ```

1. 次のコマンドに示すように、先ほど作成した `set-queue-attributes.json` ファイルを入力として使用して、ポリシー属性を設定します。

   ```
   aws sqs set-queue-attributes \
   --queue-url https://sqs.region.amazonaws.com/account-id/queue-name \
   --attributes file://set-queue-attributes.json
   ```

詳細については、『*Amazon Simple Queue サービスデベロッパーガイド*』の「[Amazon SQS ポリシーの例](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/SQSExamples.html)」を参照してください。

## EventBridge Pipes の詳細
<a name="eb-pipes-identity-diff"></a>

EventBridge Pipes は、リソースベースのポリシーをサポートしていません。また、リソースベースのポリシー条件をサポートする API もありません。

ただし、インターフェイス VPC エンドポイントを介してパイプアクセスを設定すると、その VPC エンドポイントは EventBridge Pipe APIs へのアクセスを管理できるリソースポリシーをサポートします。詳細については、[インターフェイス VPC エンドポイントでの Amazon EventBridge の使用](eb-related-service-vpc.md) を参照してください。